선택 문제 본문은 quickselect를 소개하면서 “대부분 O(n)“이라는 말로 평균을 넘어갔다. 최선·최악은 간단히 보였지만, 평균이 정말 O(n)인지는 기댓값 점화식을 세우고 직접 풀어야 확인할 수 있다. 이 글이 그 빈칸을 채운다.
한쪽만 재귀한다는 차이
quick sort 평균 분석부터 떠올려 보자. pivot의 등수를 k라 하면, quick sort는 왼쪽 k−1개와 오른쪽 n−k개 양쪽 모두를 재귀해야 한다. 그래서 점화식에 E(k−1)+E(n−k)가 더해진다. 두 비용을 합산하기 때문에 결국 Θ(nlogn)이 나온다.
quickselect는 다르다. 분할 후 k번째 원소가 어느 쪽에 있는지 pivot 등수와 비교해 알 수 있으므로, 관계없는 쪽은 버리고 한쪽만 재귀한다. 그 비용은 E(k−1) 또는 E(n−k)둘 중 하나다.
최악의 경우를 상계로 잡으면, 어느 쪽으로 재귀하더라도 비용은 max(E(k−1),E(n−k)) 이하다. 이것이 quick sort 점화식과 quickselect 점화식의 결정적 차이다.
기댓값 점화식
pivot의 등수 k가 1부터 n까지 각각 확률 n1로 나온다고 가정한다. 분할 자체는 배열을 한 번 훑으므로 n이다. 재귀 비용의 상계를 max 항으로 잡으면 점화식이 선다.
E(n)≤n+n1i=1∑nmax(E(i−1),E(n−i))
이것이 풀어야 할 점화식이다.
여기서 max를 먼저 정리하지 않는 이유
max(E(i−1),E(n−i))를 E(max(i−1,n−i))로 바꾸고 싶어진다. 크기가 큰 쪽이 비용도 크다는 것이 당연해 보이기 때문이다. 하지만 그 치환은 E가 증가함수라는 사실을 쓰는 것이고, 우리는 아직 그것을 증명하지 않았다. 지금 증명하려는 대상이 E 자신이므로 순환에 빠지기도 쉽다.
대신 max를 귀납 단계로 미룬다. 거기서는 E(i−1)과 E(n−i)를 먼저 각각 4(i−1), 4(n−i)로 바꾼 뒤 max를 취하게 되고, max(4a,4b)=4max(a,b)는 아무 성질도 필요로 하지 않는다. 미루기만 해도 단조성 가정이 사라진다.
상계 풀이 — E(n)≤4n
수학적 귀납법으로 E(n)≤4n을 보인다.
기저 사례.E(0)=0이고, n=1이면 비교 없이 바로 반환하므로 E(1)=0≤4. 둘 다 성립한다.
귀납 가정.j<n인 모든 j에 대해 E(j)≤4j라고 가정한다.
귀납 단계. 합 안의 각 항에 가정을 먼저 적용한다. i−1과 n−i는 둘 다 n보다 작으므로 가정을 쓸 수 있다.
이다. 두 값 모두 43n2 이하다. 짝수에서는 3m2−m≤3m2=43n2이고, 홀수에서는 43n2=3m2+3m+43이므로 3m2+2m보다 m+43만큼 크다.
i=1∑nmax(i−1,n−i)≤43n2
마무리
이를 대입하면
E(n)≤n+n4⋅43n2=n+3n=4n
귀납 가정이 n에서도 성립한다. 따라서 모든 n에 대해 E(n)≤4n=O(n)이다.
E의 단조성은 어디에도 쓰이지 않았고, 홀수 n의 중앙항도 정확히 한 번으로 세었다.
핵심 정리
quickselect의 평균 시간은 E(n)≤4n=O(n)이다.
quick sort가 Θ(nlogn)인 이유는 양쪽 재귀의 비용 E(k−1)+E(n−k)를 합산하기 때문이다. 합산된 비용들을 텔레스코핑하면 조화수 Hn≈lnn이 나타나 nlogn 항이 생긴다.
quickselect는 한쪽만 재귀하므로 비용이 max(E(k−1),E(n−k))로 묶인다. 귀납 단계에서 각 항을 4j로 바꾼 뒤 max를 밖으로 빼면 ∑i=1nmax(i−1,n−i)≤43n2가 핵심 상한이 되고, 덕분에 전체 기댓값이 O(n)에 머문다. 이 순서 덕분에 E의 단조성을 가정하지 않아도 된다.
단, 이것은 평균 분석이다. 최악은 여전히 O(n2)이다. 최악까지 없애려면 pivot을 항상 approximate median으로 고르는 median of medians가 필요하다.
이어지는 글
이 글의 바탕이 되는 quickselect와 median of medians는 선택 문제에서 다룬다. quick sort의 평균이 Θ(nlogn)으로 유도되는 과정은 quick sort 평균 분석에서 텔레스코핑으로 엄밀히 보인다.