선택 문제의 median of medians는 하필 5개씩 나눴다. 4도 6도 아닌 5인 이유를 따진다.
이 글에서 다루는 내용
그룹 크기 g를 변수로 놓아 보장 원소 수를 일반식으로 유도
두 부분문제 S(n/g)+S(나머지)의 비율 합 < 1이어야 선형이 되는 이유
g=3과 g=4가 실패하는 구체 수치, g=5가 성공하는 이유
g=7 이상에서 수축과 그룹 정렬 비용이 맞서는 지점
짝수 그룹이 배제되는 진짜 이유(모호함이 아니라 보장이 n/4에 고정된다는 것)
그룹 크기 g로 일반화
메인 글은 5개씩 묶는 이유를 짧게 예고만 하고 넘어갔다. 여기서는 그 이유를 처음부터 따진다.
n개의 원소를 g개씩 묶는다고 하자. 그러면 그룹이 n/g개 생긴다(편의상 n이 g의 배수라 가정한다). 각 그룹을 정렬해 그룹 중앙값 Xi를 구하고, 그 중앙값들의 중앙값 X′를 재귀로 찾는다.
X′ 이하임이 보장되는 원소가 몇 개인가?
X′는 n/g개의 그룹 중앙값 중 중앙값이므로, 그룹 중앙값의 절반—약 2gn개—이 X′ 이하다. 이 그룹들은 각자 ⌈g/2⌉개씩 X′ 이하인 원소를 갖는다(그룹이 오름차순 정렬되어 있어, 중앙값 이하 원소가 정확히 ⌈g/2⌉개). 짝수 g에서는 가운데 두 값 중 아래쪽을 그룹 중앙값으로 삼기로 한다. 위쪽을 골라도 두 방향이 뒤바뀔 뿐 약한 쪽의 개수는 같으므로 결론은 변하지 않는다. 따라서:
보장원소수≈2gn⋅⌈2g⌉≈2gn⋅2g+1=4gn(g+1)
g가 크면 4gg+1→41으로 수렴한다 — 아무리 그룹을 크게 묶어도 보장은 n/4 근처를 넘지 않는다.
g
중앙값 이하 개수
보장 수식
근사
3
2
6n⋅2
≈0.333n
4
2
8n⋅2
=0.25n
5
3
10n⋅3
=0.3n
6
3
12n⋅3
=0.25n
7
4
14n⋅4
≈0.286n
짝수 줄이 둘 다 정확히 0.25n인 것이 눈에 띈다. 우연이 아니다. g=2k에서 하위 중앙값 이하인 원소는 k개이므로
2gn⋅k=2⋅2kn⋅k=4n
로 k가 약분돼 사라진다. 짝수는 아무리 크게 묶어도 보장이 n/4에 고정된다. 홀수 g의 보장 4gn(g+1)는 언제나 n/4보다 크므로, 짝수 g는 바로 아래 홀수인 g−1보다 보장이 작으면서 정렬 비용은 더 든다. 이것이 홀수를 쓰는 진짜 이유다.
선형이 되는 조건
보장 원소가 β0n개라면, X′를 pivot으로 쓸 때 재귀하는 쪽의 크기 상한은 (1−β0)n이다. 선택 알고리즘의 점화식은:
이 우변이 다시 cn 이하가 되려면 2n+(α+β)cn≤cn, 즉 2≤(1−α−β)c여야 한다. α+β<1이면 (1−α−β)가 양수이므로 충분히 큰 유한한 c를 잡을 수 있다. α+β=1이면 불가능하다.
g=5일 때
메인 글의 분석 그대로다. 그룹이 n/5개이므로 α=1/5=0.2. 보장 원소는 10n×3=0.3n이므로 β=1−0.3=0.7.
S(n)=2n+S(0.2n)+S(0.7n),α+β=0.2+0.7=0.9<1✓
(1−0.9)c≥2를 풀면 c≥20. 즉 S(n)≤20n=O(n).
g=3일 때
그룹이 n/3개이므로 α=1/3. 보장 원소는 6n×2=3n이므로 나머지는 n−n/3=32n, 즉 β=2/3.
S(n)=2n+S(3n)+S(32n),α+β=31+32=1×
비율 합이 정확히 1이다. 대입법은 2n≤0⋅cn을 요구하므로 어떤 c도 맞지 않는다. 실제로 이 점화식은 S(n)=Θ(nlogn)으로 풀린다.
g=7일 때
그룹이 n/7개이므로 α=1/7. 보장 원소는 14n×4=72n이므로 β=1−2/7=5/7.
α+β=71+75=76≈0.857<1✓
선형이 성립하고, 비율 합 76≈0.857은 g=5의 0.9보다 작다. 보장 비율만 보면 2/7≈28.6%로 g=5의 30%보다 작지만, α=1/g가 더 빨리 줄어 합은 오히려 내려간다. 수축만 놓고 보면 g=7이 g=5보다 낫다.
그렇다면 왜 5를 쓰는가. 위 점화식이 덧붙는 항을 2n으로 고정해 둔 것이 답을 한쪽으로 기울인다. 실제로는 그룹 하나를 정렬하는 비용이 g에 따라 늘어난다. g개를 최악에 정렬하는 데 필요한 최소 비교 횟수는 5개에서 7회, 7개에서 13회이므로 원소당 1.4회와 약 1.86회다. 덧붙는 항을 ag⋅n으로 두면 상수는
c=1−α−βag
가 되어 분자와 분모가 함께 커진다. 어느 쪽이 이기는지는 비용 모형이 정한다.
g
비율 합 α+β
정렬 최소 비교 (원소당)
5
0.900
7회 (1.40)
7
0.857
13회 (1.86)
9
0.833
19회 (2.11)
두 열이 반대 방향으로 움직인다. 그래서 “g≥7은 이득이 없다”고 단정할 근거는 이 분석 안에 없다. 확실한 것은 5가 조건을 만족하는 가장 작은 크기이고, 그래서 그룹 정렬을 손으로 펼쳐 쓰기에 가장 간단하다는 점이다. 관례가 5로 굳은 이유도 여기에 있다.
그룹 크기 g=3과 g=5의 보장 영역 비교. g=3은 비율 합이 1/3+2/3=1이라 선형 조건을 채우지 못하고, g=5는 0.2+0.7=0.9로 성립한다. 하단 요약 표에는 g=4도 1/4+3/4=1로 실패하고 g=7은 약 0.857로 성립하되 비용이 늘어난다는 비교가 함께 놓인다
짝수는 왜 밀려나는가
짝수 g가 배제되는 이유를 “중앙값이 두 개라 모호하다”로 설명하면 틀린다. 가운데 두 값 중 아래쪽을 쓴다고 정해 두면 모호함은 사라지고, 위에서 본 대로 계산이 그대로 굴러간다. 짝수가 밀려나는 이유는 모호함이 아니라 수치다.
g=2k에서 보장이 k에 상관없이 n/4로 고정된다는 것을 앞에서 보았다. 하위 중앙값 아래에 2k개 중 k개만 놓이므로, 그룹을 키워 얻은 원소가 약한 쪽에는 하나도 보태지지 않는다. 그래서 짝수 g는 언제나 β=3/4이고, 비율 합은 g1+43뿐이다.
g
α
β
비율 합
선형?
3
1/3
2/3
1
✗
4
1/4
3/4
1
✗
5
1/5
7/10
9/10
✓
6
1/6
3/4
11/12
✓
7
1/7
5/7
6/7
✓
g=4가 탈락하는 이유는 짝수라서가 아니라 비율 합이 정확히 1이기 때문이다. g=3과 같은 방식으로 막힌다. 그리고 g=6은 짝수인데도 11/12<1로 선형이 성립한다. “짝수는 안 된다”는 일반 명제는 성립하지 않는다.
짝수가 실제로 지는 지점은 따로 있다. 모든 짝수 g는 바로 아래 홀수 g−1에 진다.g=6의 11/12는 g=5의 9/10보다 크고, g=8의 7/8은 g=7의 6/7보다 크다. 수축은 더 나쁜데 그룹 하나를 정렬하는 비용은 더 든다. 짝수를 고를 이유가 없는 것이지, 쓸 수 없는 것이 아니다.
이제 남은 후보를 작은 것부터 훑는다.
g=1: 그룹 정렬이 없고 그룹 중앙값이 원소 자체다. 중앙값 재귀가 S(n)이 되어 진전이 없다.
g=2: α=1/2, β=3/4로 합이 5/4>1. 실패.
g=3: 비율 합 =1. 등식이라 실패.
g=4: 비율 합 =1. 등식이라 실패.
g=5: 비율 합 =0.9<1. 성립하는 가장 작은 크기.
핵심 정리
그룹 크기 g로 묶으면 두 부분문제 S(n/g)와 S((1−β0)n)이 생긴다.
선형 보장의 필요충분 조건: 비율 합 α+β=g1+(1−β0)<1.
g=3: 31+32=1 — 등식이라 선형 깨짐 (Θ(nlogn)).
g=5: 0.2+0.7=0.9<1 — 성립. c=20으로 S(n)≤20n.
g=7 이상: 비율 합은 오히려 더 작아져 수축이 좋아지지만, 그룹 정렬 비용이 원소당 늘어난다. 두 힘이 반대라 어느 쪽이 이기는지는 비용 모형이 정한다.
g=4가 탈락하는 이유는 짝수라서가 아니라 비율 합이 정확히 41+43=1이기 때문이다. g=6은 짝수인데도 1211<1로 성립한다.
짝수 g는 보장이 n/4에 고정되어 언제나 바로 아래 홀수 g−1에 진다. 쓸 수 없어서가 아니라 고를 이유가 없다.
결론: 5는 조건을 만족하는 가장 작은 크기이고, 그래서 그룹 정렬이 가장 단순해 관례로 굳었다.