O (n) 시간의 요소 구별?


21

우리는 비교 기반 모델에서 요소 구별이 시간 내에 완료 될 수 없음을 알고 있습니다 . 그러나 워드 RAM에서는 더 나은 결과를 얻을 수 있습니다.o(nlogn)

물론 선형 시간으로 계산할 수있는 완벽한 해시 함수가 있다고 가정하면 요소 구별을위한 선형 시간 알고리즘을 얻게됩니다. 충돌이있는 경우 숫자를 하나씩 해시하고 1을 반환하면됩니다.

그러나 두 가지 문제가 있습니다 : 1) 사용 된 임의성을 찾을 수있는 완벽한 해시 함수의 대부분 구성 및 2) 전처리 시간에 대한 토론을 찾을 수 없습니다. 즉, 어떤 해시 함수가 진행되는지 결정하는 데 필요한 시간 입력 된 숫자 세트를 기반으로 사용합니다.

Fredman et al.의 " O ( 1 ) 최악의 액세스 시간 으로 스파 스 테이블 저장O(1) "은 최악의 경우 액세스 시간 으로 해시 함수를 제공하여 첫 번째 문제를 해결 하지만 두 번째 문제에 대해서는 아무 말도하지 않습니다. .O(1)

요약하면 다음과 같습니다.

일련의 주어진 알고리즘을 설계 N 숫자 (각 숫자 인 w는 워드 길이의 워드 RAM 긴 비트) w , 해시 함수 발견 H : S를 { 1 , ... , m }O ( N ) 시간 여기서 m = O ( n ) 입니다. 함수 h 는 모든 j { 1 , , m } 에 대해Snwwh:S{1,,m}O(n)m=O(n)hj{1,,m}j에 매핑되는 S 는 일정하고계산 h ( i ) 는"합리적인"워드 -RAM 모델에서 O ( 1 ) 시간을 가져야합니다. 즉, 모델은 단어의 "이국적인"기능이 O ( 1 ) 시간.Sjh(i)O(1)O(1)

또한 해시 함수를 전혀 사용하지 않는 워드 RAM의 요소 구별을 해결하는 알고리즘이 있는지 알고 싶습니다.


8
Re : "또한 해시 함수를 전혀 사용하지 않는 워드 -RAM에서 요소 구별을 해결하는 알고리즘이 있는지 알고 싶습니다." — 만 원하고 선형이 아닌 한, RAM이라는 단어를 정렬하는 작업은 많이 있습니다 ( en.wikipedia.org/wiki/Integer_sorting 참조 ). 이러한 알고리즘 중 일부는 해싱을 사용하지만 다른 알고리즘은 사용하지 않습니다. o(nlogn)
David Eppstein

대략적인 솔루션이 허용됩니까?
AT

Θ(nlogn)O(n)o(nlogn)

기수 정렬이 너무 느립니까?
Thomas Mueller

답변:


8

O(nloglogn)o(nlogn)

O(nloglogn)nwO(nloglogn)

내가 아는 한, 그것은 오늘날까지 알려진 최고의 결과입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.