Ưu điểm của Quicksort ngẫu nhiên là gì?


18

Trong cuốn sách Thuật toán ngẫu nhiên của họ , Motwani và Raghavan mở đầu phần giới thiệu với một mô tả về chức năng RandQS của họ - Quicksort ngẫu nhiên - trong đó trục, được sử dụng để phân chia tập hợp thành hai phần, được chọn ngẫu nhiên.

Tôi đã sử dụng bộ não (được thừa nhận là hơi yếu) trong một thời gian, nhưng tôi không thể thấy thuật toán này có lợi thế gì khi chỉ đơn giản là chọn, yếu tố trung gian (về chỉ số, không phải kích thước) mỗi lần.

Tôi cho rằng những gì tôi không thể thấy là đây: nếu bộ ban đầu theo thứ tự ngẫu nhiên, sự khác biệt giữa chọn một phần tử tại một vị trí ngẫu nhiên trong bộ và chọn một phần tử ở vị trí cố định là gì?

Ai đó có thể khai sáng cho tôi, trong điều khoản khá đơn giản?

Câu trả lời:


19

Nếu mảng đầu vào được phân phối đồng đều một cách ngẫu nhiên thì (như bạn đã lưu ý), không có sự khác biệt giữa việc luôn chọn một phần tử ở một vị trí cố định (ví dụ: phần giữa như bạn đề xuất) hoặc chọn một phần tử được chọn ngẫu nhiên.

Tuy nhiên, nếu mảng đầu vào của bạn không thực sự theo thứ tự ngẫu nhiên (điều này xảy ra trong hầu hết các tình huống thực tế) thì người ta cần phải "preshufle" mảng để các phần tử trong nó được đặt theo thứ tự ngẫu nhiên, hoặc ( tương đương) luôn lấy một yếu tố ngẫu nhiên làm trục. Điều này đảm bảo giai đoạn phân vùng của quicksort phân vùng các mảng thành các mảng con có kích thước gần như bằng nhau và do đó thời gian chạy dự kiến ​​vẫn làÔi(nđăng nhậpn)

Vì vậy, sự nhầm lẫn của bạn dường như xuất phát từ thực tế là bằng cách nào đó bạn cho rằng một thuật toán sắp xếp có thể (trong thực tế) mong muốn mảng đầu vào luôn được phân phối ngẫu nhiên.


7
Ôi(nđăng nhậpn)Ôi(n2)

n!1n!

@ RobertS.Barnes Có
Jernej

4

Như Jernej đã lưu ý, giả định rằng tất cả các hoán vị của đầu vào đều có khả năng như nhau không phải lúc nào cũng giữ trong thực tế. Ý tưởng đầu tiên có thể là hoán vị mảng đầu vào. Điều này sẽ làm việc, nhưng dễ dàng hơn để phân tích tình huống trong đó một trục được chọn ngẫu nhiên. Điều này còn được gọi là lấy mẫu ngẫu nhiên .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.