랜덤 소트는 크기가 N인 순열 P를 다음 알고리즘으로 정렬하는 방법이다.
function random_sort(permutation P) {
swaps = 0;
while (not sorted P) {
(i, j) = random pair (1 <= i < j <= N)
swap(P[i], P[j])
swaps = swaps + 1;
}
return swaps;
}
random pair는 1≤i<j≤N을 만족하는 쌍 (2N)개 중 하나를 매번 독립적으로, 같은 확률로 고른다. P가 오름차순이 되면 반복을 멈추고 그때까지 센 교환 횟수를 반환한다.
순열 P가 주어졌을 때 random_sort가 반환하는 값의 기댓값을 구하는 프로그램을 작성하시오.