비교 정렬의 하한(Comparison sorting lower bound)
두 개씩 비교만 하는 정렬은 최악의 경우 적어도 log₂ n! ≈ n log₂ n번 비교해야 한다. n!가지 순서를 예/아니오 질문으로 가려내야 하기 때문이다.
병합 정렬(merge sort)은 최악의 경우에도
까닭은 세어 보면 나옵니다. 서로 다른 n개를 늘어놓는 순서는
직접 겨뤄 봅시다. 원소
오른쪽 막대가 증명 그 자체입니다. 어떤 쌍을 물어도 상대가 많은 쪽을 남기므로 남은 순서의 수는 한 번에 많아야 절반으로 줄고(막대가 1씩 낮아지는 회색 점선보다 빨리 내려갈 수 없고), 1이 되려면 적어도
스털링 공식(Stirling's formula)에 따르면
이어지는 곳. 이것은 엔트로피(entropy)로 본 한계입니다. 똑같이 그럴듯한
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 비둘기집 원리
… 답의 줄이 많아야 2^k 가지라서, 2^k \lt n! 이면 서로 다른 두 순서를 구별하지 못합니다(비교 정렬의 하한). 상태가 유한한 기계(유한 오토마톤)도 이 원리에 걸립니다. 상태가 k 개인 기계가 a를 k 개 …
- 스털링 공식
… n! 번 비교해야 하는데, 스털링 공식으로 이 값이 약 n\log_2 n 임을 알 수 있습니다(비교 정렬의 하한).
- 정보 엔트로피
… n! 비트가 필요하므로, 한 번에 많아야 1비트를 주는 비교로 정렬하려면 적어도 그만큼 비교해야 합니다(비교 정렬의 하한). 예/아니오 질문 하나로 후보를 절반씩 줄이는 이진 탐색은 이 한계에 꼭 맞는 방법입니다.
- 순열
… 최악의 경우 적어도 \log_2 n! 번 비교해야 하는 까닭은 n!가지 순서를 가려내야 하기 때문입니다(비교 정렬의 하한). 순열을 '어느 자리의 것을 어느 자리로 옮기는가'라는 자리 바꾸기로 보면 두 순열을 잇달아 하는 …
- 점근 표기법
… \Theta 로 씁니다. 비교로 정렬하려면 최악의 경우 \Omega(n \log n) 번 비교해야 한다는비교 정렬의 하한이 \Omega 의 대표적인 예입니다. O 표기는 1894년 독일의 수학자 파울 바흐만이 정수론 책에서 …
- 이진 탐색
… 방법도 최악의 경우 이보다 크게 줄일 수는 없습니다. 이진 탐색은 이 한계에 거의 딱 맞습니다. 같은 셈이비교 정렬의 하한을 줍니다. 이진 탐색의 조건은 목록이 먼저 정렬되어 있어야 한다는 것입니다. 정렬에는 이진 탐색보다 …
- 정렬 알고리즘
… 크게 나아질 수는 없습니다. 비교만 쓰는 정렬은 최악의 경우 적어도 \log_2 n! 번 비교해야 합니다(비교 정렬의 하한). 스털링 공식으로 풀면 이 값은 n \log_2 n - 1.44\,n 남짓이라, 첫째 항이 병합 …
- 트리
… 트리를 만든 것이 허프만 부호입니다. 비교 정렬이 할 수 있는 모든 비교를 가지로 펼친 결정 트리는비교 정렬의 하한을 증명하는 도구이고, 예/아니오 질문으로 자료를 나누어 답을 내는 기계 학습의 결정 트리는 잎에 …
- 결정 트리와 랜덤 포레스트
… 배깅(1996)과 랜덤 포레스트(2001)도 레오 브라이먼의 작업입니다. 이어지는 곳. 같은 모양의 나무가정렬의 하한증명에도 나옵니다. 비교 정렬을 비교 질문의 결정 트리로 보면 잎이 적어도 n!개여야 하므로 깊이가 …