평균


10

평균 lg(n!)+o(n) 비교 를 사용하는 비교 기반 정렬 알고리즘이 있습니까?

최악의 경우 lg(n!)+o(n) 비교 알고리즘이 존재하는 것은 개방형 문제이지만, 평균적인 경우 는 모든 입력에 대해 예상되는 lg(n!)+o(n) 비교를 갖는 무작위 알고리즘에 충분합니다. . 의 의미 lg(n!)+o(n) 이 있다는 o(n) 에만 평균 낭비, 최적의 비교 o(1) 요소 당 비교.

나는 이미 그러한 알고리즘을 가지고 있기 때문에 ( Q / A 형식을 사용하여 ) 답변으로 포함하고 있지만 다른 알고리즘을 포함하여 그러한 알고리즘이 이미 알려 졌는지, 개선 o(n)및 최악 의 알고리즘을 포함한 추가 답변을 환영합니다. 케이스 lg(n!)+o(n) .

선행 작업 :
병합 정렬은 비교를 사용합니다 (최악의 경우에도). 병합 삽입 정렬 (Ford–Johnson 정렬이라고도 함)도 비교를 사용하지만 상수는 훨씬 작습니다 . 비교 기반 정렬의 평균 복잡도 향상 (Kazu Iwama 및 Junichi Teruyama)-(1,2) 삽입 알고리즘은 아래 답변의 일부와 유사합니다.l g ( n ! ) + Θ ( n ) Θ ( n )lg(n!)+Θ(n)
lg(n!)+Θ(n)Θ(n)


이 질문은 Optimal randomized compare sorting 과 중복 되지만 다른 강조점 (여기서는 특정 비대칭 행동-일반적인 지식 상태, 모든 입력 크기 및 최악의 경우와의 차이)을 고려할 때 새로운 질문을 사용하기로 결정했습니다.
Dmytro Taranovsky

답변:


4

업데이트 : 나는이 답변을 평균 비교lg(n!)+o(n) 로 종이 정렬 로 확장했습니다 .

예, 그러한 알고리즘이 존재합니다. 나는 바운드 만 증명할 것이지만 무작위 배정 가정에서는 . 또한 및 시도에 대해서도 설명합니다 .l g ( n ! ) + O ( n 1 - ε ) n 0.5 + o ( 1 ) O ( n 0.5 - ε )lg(n!)+o(n)lg(n!)+O(n1ε)n0.5+o(1)O(n0.5ε)

필요한 경우 주석을 달아 모든 요소가 고유하다고 가정 할 수 있습니다. 평균 사례는 고유 한 요소를 임의 순서로 사용합니다. 우리는 공정한 동전을 사용하는 것과 비교하여 각 비교에 대한 엔트로피 손실을 추가하여 평균 비교 수를 계산할 수 있습니다.

시작점은 정렬 된 서브 세트 다음 요소를 삽입 할 위치를 결정하기 위해 이진 검색을 사용한 삽입 정렬입니다 . 경우 , 삽입은 최대 비교를 사용하며 , 엔트로피 측면에서 최대 가산 계수까지 (최소의 경우 복잡도는 도 작동합니다). 이제2의 거듭 제곱에 가까우면 요소 삽입이 (최소의 경우에도 각 쿼리의 균형을 잡는 방법에 관계없이) 차선책이지만 비교를 낭비하면 를 대략 균일 한 분포로 조정할 수 있습니다 간격을두고( 1 ε ) 2 m| S | 2 m - 1 m O ( ε ) 2 m| S | ( 1 + ε ) 2 m | S | A o ( 1 ) A SS(1ε)2m|S|2m1mO(ε)2m|S|(1+ε)2m|S|Ao(1)AS2의 거듭 제곱에 가까운 길이의 는 원하는 최적 성을 얻습니다.

요소를 배치로 추가하고 때로는 배치의 요소를 서로 효율적으로 비교 하여 요소 해당하는 의 간격이 준 무작위 방식으로 감소 하고 간격 내에서 의 확률 분포가 감소 하도록이를 달성합니다. 간격 길이가 2의 거듭 제곱에 충분히 가까울 때 이진 검색을 수행하여 를 삽입하십시오 .A A ASAAA

일반적인 구성

우리는 부분 집합 유지합니다 정렬 된 요소를, 각 분류되지 않은 요소에 대한 , 우리는 최소한의 간격을 추적 유지합니다 의 위치 할 알려져있다. 의 길이이며 ; 는 구간의 동일성에 의한 것입니다.A I A S A | I | I A I A = I BSAIASA|IA|IAIA=IB

하자 수 : 비교 가진 하고 (임의의 순서로) 비교 와 대응 구성 요소에 대해 그들의 간격 (또는 길이 1을 가지고) 해체 될 때까지. 가 호출 될 때 가 균일하게 분포되어 있다고 가정 할 때, 의 요소는 (일관된 방식으로) 비교 확률을 1/2에 가깝게 만들기 위해 . 는 결국 불일치 때문에 균일 성 가정을 유지합니다.A B A B S S C o m p a r e ( A , B ) I AI B C o m p a r eCompare(A,B)ABABSSCompare(A,B)IAIBCompare

다음 섹션은 서로 독립적으로 읽을 수 있습니다.

알고리즘lg(n!)+o(n)

다음과 같이 주어진다 : 정렬 된리스트 , 분류되지 않은 요소 들의 배치 ; ; 분류되지 않은 요소는 대해 무작위 입니다.m m ω ( 1 ) O ( | S | ) SSmmω(1)o(|S|)S

가능하면 (1)-(3)을 반복하십시오.
1. 배치에서 를 사용하여 두 개의 요소 와 를 선택하십시오 (모든 선택이 작동 함). 2. 실행하십시오 . 3.2의 거듭 제곱에 충분히 가까우며 (주 1) 배치에서 를 제거 합니다 ( 를 잊지 ). 와 유사하게 수행하십시오 . 마지막으로 : 모든 요소를 삽입 하고 정렬을 완료하십시오.B I A = I B C o m p a r e ( A , B ) | I | A I A B SABIA=IB
Compare(A,B)
|IA|AIAB
S

주 1 : "닫기"충분히 임의 들어 (의 함수로서 상대 오차 만큼 작동) 요소가 단계 (4)에서 제거한다 (주 2 가능). 추정 된 무작위 배정 가정에서 상대 오류를 사용하면 요소를 캡처 하여 평균 비교 정렬 알고리즘.m m - o ( m ) c 로그 로그 m / log m m ( 1 - log - Θ ( c ) m ) l g ( n ! ) + O ( n log log n / log n )o(1)mmo(m)cloglogm/logmm(1logΘ(c)m)lg(n!)+O(nloglogn/logn)

참고 2 : 동일한 비교 순서로 동일한 경계 간격이 생성되므로 거의 모든 요소가 단계 (1) 시간 을 거치게됩니다 ( 4 단계에서 제거하지 않은 경우). 만약 처음에는 우리가 선택 우리는 비교 소자에 대하여 및 단계 (3)의 각 애플리케이션 갖고 감소 가능성 에서 번. 이제 합리적 2가 아닌 모든 비율에 이므로A < B A A S [ ( 1 1 / Ω(logm)A<BAAAO(1)| I| 1/(11/S[(11/2)|S|]AO(1)|IA|a>1ε>0d>0m,nN1/(11/2)a>1o(n)ε>0d>0m,nN1ε<amd2n<1+εo(n) 경계.

가능한 알고리즘lg(n!)+O(n1ε)

모듈로 랜덤 화 가정, 다음과 같이 평균 비교를 달성 할 수 있습니다.lg(n!)+O(n1ε)

  • 무작위로 항목을 섞고 첫 번째 절반을 목록 로 정렬 하고 두 번째 절반은 정렬되지 않은 배치로 유지하십시오.S

  • 배치가 비워 질 때까지 반복
    하십시오 : 임의로 선택하십시오 . 하자 . 가 비어 있으면 배치에서 를 제거 하고 삽입 합니다. 그렇지 않으면:G = { B 배치 : | P ( A < B ) 0.5 | < n 0.51 ε } G A SAbatchG={Bbatch:|P(A<B)0.5|<n0.51ε}GAS

    1. 이 경우 같은 그 확률 (≥0.05 말), 만드는내 2의 거듭 제곱의 상대 오차를 실행 성공했을 경우 (예 : 내에 2의 거듭 제곱의 상대 오차) 배치에서 를 제거 하고 삽입 합니다.Θ ( 1 ) C o m p a r e ( A , B ) | I | n ε C o m p a r e ( A , B ) | I | n - ε A SBGΘ(1)Compare(A,B)|IA|nεCompare(A,B)|IA|nεAS
    2. 그러한 가 없으면 임의의 대해 를 실행 .C o m p a r e ( A , B ) B GBGCompare(A,B)BG

우리의 랜덤 화 가정이 잘 풀리면 (즉, 간격 길이와 위치의 분포가 충분히 랜덤 한 경우), 대부분의 프로세스에서 전형적인 를 요소 의 선택과 효율적으로 비교할 수 있습니다 ( 다른 간격 길이). 따라서, 우리는 일반적으로 위의 (1)에 대한 비교를 선택할 수 있습니다, 우리는 비교 결과에 재수 경우, 우리는 여전히 수 (경우에 따라서 달성 가능성 충분히 작은이며, 0.01 말)를 비교 알고리즘. 일부 변경 및 근사치로, 총 컴퓨팅은 quasilinear 할 수 있습니다 요소 감안할 때n Θ ( 1 ) n Θ ( 1 ) Θ ( log n ) ε l g ( n ! ) + O ( n 1 ε ) A BAnΘ(1)nΘ(1)Θ(logn)εlg(n!)+O(n1ε)A유망한 간격 길이를 계산 한 다음 대략적인 중심과 간격 길이로 를 찾습니다 .B

비교를 최적화하는 방법에는 여러 가지가 있지만 각 비교는 불행한 결과가 될 수 있으며 비교 횟수가 제한되어 있습니다. 최적화 후 가 평균 4 비교를 수행하고 1/4 확률로 '성공'하면 .ε( 1 - ε ) / 4 / 로그 4 / 3 2 0.09Compare(A,B)ε(1ε)/4/log4/320.09

더 좋은 방법은 구간이 2의 거듭 제곱에 가까워 질 때까지 대기하여 개별 구간 길이가 아니라 길이 분포를 제어하는 ​​것입니다.

알고리즘 시도lg(n!)+n0.5+o(1)

이고 하여 간격을 요소 의 분류되지 않은 배치가 있다고 가정하십시오. 일반적으로 및 는 균일하게 분포되어 있습니다 (임의의 오류까지, 조절 되더라도 충분한 정밀도로 유지 ). 그런 다음 평균 비교를 낭비하는 항목을 다음과 같이 정렬 할 수 있습니다 . (*) 모든 요소를 ​​초기 순서로 삽입하십시오. . 이렇게하면 간격 길이가 2의 거듭 제곱에 가까워지면 모든 요소가 삽입됩니다.|S|=nnIA|IA|n1o(1)|IA|2lg|IA|A<S[i]n0.5+o(1)
|IA|2lg|IA|

정렬 알고리즘은 다음과 같습니다. 목록을 임의로 섞고 전반부 정렬합니다 . 후반부를 삽입하려면 분포를 올바르게 만들고 위의 (*)를 수행하십시오.S

만들기 위해 분포 권한, 우리는 '무작위'분포를 만든 다음 각 는 나머지를 무작위 화하면서 (필요한 경우 반복). 그러나 이것은 전 세계적으로 필요한 정밀도로 로컬에서 제어 할 수 있는지 여부를 알 수 없습니다 (따라서 위의 "시도"라는 단어).|IA|2lg|IA||IA|/2lg|IA||IA|2lg|IA|

'무작위'분포를 만들기 위해 , 초기 모두 동일하면 서브 로그 깊이에서 무작위 화를 기대하지 않는다는 점을 제외하고 와 함께 를 무작위로 사용할 수 있습니다 (즉, 긴 ). 그러나, 나는 우리의 일반화를 사용하여 (아마 합리적인 선택이 작동합니다)를 sublogarithmic 깊이에 무작위 배정을받을 것으로 추측 하는 요소를 우리가 계속하는 경우 요소가 얽혀 (즉, 비교 결과를 사용하여 연결됨), 와의 각 비교 에 대해 약 비 정류 선택 이 있어야합니다 . 이것은 허용해야합니다Compare(A,B)P(A<B)0.5IAIAComparek=ω(1)k=ω(1)kSO(logkn+logk)원하는대로 임의 추출 깊이 요소가 얽 히기 위해 깊이 가 필요하기 때문에 가 너무 크지 않다고 가정 ). 충분히 작은 사용하면 계산을 준 선형으로 만들 수 있다고 기대합니다 .kΘ(logk)k

yes 확률 과 비교할 때 yes 확률은 엔트로피 만 낭비하기 때문에 경계 구간에서 요소의 초기 무작위 화 및 약간의 불균일성은 만 필요합니다. 엔트로피 폐기물. 분포 형성이 충분히 성공하면, 엔트로피 폐기물은 주로 (*) 동안의 간격 길이 불일치로 인해 발생합니다 (따라서 ).1/2+n0.5O(1/n)no(1)n0.5+o(1)

가능한 조합 :lg(n!)+O(n0.5ε) 분포 형성이 제대로 작동하고 배치 크기를 하고 위의 (*)에서 요소를 선택적으로 거부 하면 엔트로피 폐기물 이있는 요소를 제외한 모든 요소를 삽입 할 수 있습니다. 다음과 같습니다. 스플릿 로 삽입시 거의 동일한 간격 및하면 간격에 가라 앉았을 거부 간격 따라서 이러한 간격의 길이의 변화를 감소 너무 긴 경우 (즉, 삽입 취소)|S|+n0.5+εn0.5+εn0.5+εn0.5ε/2+o(1)SnεIAΘ(nε/2)시간은 필요에 따라 임의의 길이 간격 의 길이 변화를 시간으로 줄입니다. 이제 우리는 위의 알고리즘을 사용하여 이 작 으면 낭비가 있는 나머지 요소를 삽입 할 수 있습니다 충분히. n ε / 2 - o ( 1 ) l g (n!)+O( n 1 - ε )O( n 0.5 - ε ) εn1o(1)nε/2o(1)lg(n!)+O(n1ε)O(n0.5ε)ε

최악의 정렬 복잡성 : 최악의 비교 와 정렬 알고리즘이있을 가능성이 높습니다 . 중앙값을 찾기 위해 평균 사례 ( 비교)와 최악의 경우 (적어도 비교) 사이에 선형 갭이 있습니다. 그러나 정렬에는 비교를 정렬하고 새로운 정렬 알고리즘을 찾는 데 많은 자유가 있습니다.1.5 N + O ( N ) ( 2 + ε ) N - O ( 1 )lg(n!)+o(n)1.5n+o(n)(2+ε)nO(1)


1
나는 이것을 당신이 종이로 써야한다고 생각합니다.
Emil Jeřábek

@ EmilJeřábek 합의. 연구 수준의 사이트로서 여기에 많은 질문과 답변이 미니 논문이지만 여기에 길이와 중요성이있는 형식적인 논문이 바람직합니다. 논문에서 어떤 부분을 확장해야하는지 (dmytro@mit.edu로) 알려주십시오 (이 답변은 간결한 버전으로 유지됨).
Dmytro Taranovsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.