Randomized Quicksort의 장점은 무엇입니까?


18

Motwani와 Raghavan은 자신의 책 Randomized Algorithms 에서 RandQS 기능인 Randomized quicksort에 대한 설명으로 소개를 시작합니다.

나는 이것에 대해 얼마 동안 (약간 힘이 부족한) 두뇌를 쌓아 왔지만 매번 중간 요소 (크기가 아닌 색인)를 선택하는 것 보다이 알고리즘이 어떤 이점을 가지고 있는지 알 수 없었습니다.

내가 볼 수없는 것은 이것이 있다고 가정합니다. 초기 세트가 무작위 순서 인 경우 세트의 임의 위치에서 요소를 선택하는 것과 고정 위치에서 요소를 선택하는 것의 차이점은 무엇입니까?

누군가가 매우 간단한 용어로 나를 깨우칠 수 있습니까?

답변:


19

입력 배열이 무작위로 균등하게 분배되면 (주의 한 바와 같이) 항상 고정 위치에서 요소를 선택하는 것 (예 : 제안한 중간 요소) 또는 임의로 선택한 요소를 선택하는 것 사이에는 차이가 없습니다.

그러나 입력 배열이 실제로 임의의 순서가 아닌 경우 (거의 모든 실제 시나리오에서 발생하는 경우) 배열의 요소를 임의의 순서로 배치하려면 배열을 "사전 준비"하거나 ( 동등하게) 항상 임의의 요소를 피벗으로 사용하십시오. 이는 quicksort의 파티셔닝 단계가 어레이를 거의 동일한 크기의 서브 어레이로 파티셔닝하여 예상 실행 시간이영형(로그)

따라서 정렬 알고리즘이 실제로 실제로 입력 배열이 항상 무작위로 분산 될 것으로 예상 할 수 있다고 가정하면 혼란이 생깁니다.


7
랜덤 화 ( 대신 최악의 경우가 있기 때문에) 데이터를 사전 랜덤 화한다는 이론적 인 보증이 있지만 일부 응용 프로그램에서도 실제 속도가 향상 될 수 있습니다. 잘못된 퀵 정렬 사례는 예상보다 더 일반적입니다 (구현에 따라 다름). 영형(로그)영형(2)
SamM

"무작위로 균일하게 분포된다" 고 말할 때 , 당신은 각각의순열의 확률은 ? !1!
Robert S. Barnes

@ RobertS.Barnes 예
Jernej

4

Jernej가 지적했듯이 입력의 모든 순열이 동일하게 가정된다고 가정하는 것이 항상 현실적으로 유지되는 것은 아닙니다. 첫 번째 아이디어는 입력 배열을 바꾸는 것입니다. 이것은 효과가 있지만 피벗이 임의로 선택된 상황을 분석하기가 더 쉽습니다. 이것을 랜덤 샘플링 이라고도 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.