Randomize Quicksort'un avantajı nedir?


18

Onların kitabında Randomize Algoritmalar , Rasgele hızlı - - ikiye setini bölümleme için kullanılan mil, rastgele seçilir Motwani ve Raghavan onların RandQS işlevin açıklaması ile giriş açın.

Bir süredir (kuşkusuz biraz güçsüz) beyinlerimi rafa tuttum, ancak bu algoritmanın her seferinde orta elementi (indeks olarak, boyutta değil) seçmeye göre ne avantajı olduğunu göremedim.

Ben göremiyorum ne olduğunu: ilk küme rastgele bir sırada ise, kümedeki rastgele bir konumda bir öğe seçmek ve sabit bir konumda bir öğe seçmek arasındaki fark nedir?

Birisi beni oldukça basit bir şekilde aydınlatabilir mi?

Yanıtlar:


19

Giriş dizisi rasgele olarak eşit şekilde dağıtılırsa (belirttiğiniz gibi) bir öğeyi her zaman sabit bir konumda (örneğin önerdiğiniz gibi orta olanı) seçmek veya rastgele seçilen bir öğeyi seçmek arasında bir fark yoktur.

Bununla birlikte, giriş diziniz gerçekten rastgele sırada değilse (neredeyse tüm pratik senaryolarda olduğu gibi), içindeki öğelerin rastgele sırada yerleştirilmesi için dizinin "önceden ayarlanması" veya ( her zaman rastgele bir elemanı pivot olarak alır. Bu, hızlı sıralama özelliklerinin dizileri, dizileri neredeyse eşit büyüklükte alt dizilere böler ve böylece beklenen çalışma süresinin O ( n log n ) olarak kalmasını sağlar.O(nlogn)

Bu nedenle, karışıklığınız, bir şekilde bir sıralama algoritmasının (pratikte) giriş dizisinin her zaman rastgele dağıtılmasını bekleyebileceğini varsaymanızdan kaynaklanıyor gibi görünüyor.


7
Ö(ngünlükn)Ö(n2)

n!1n!?
Robert S. Barnes

@ RobertS.Barnes Evet
Jernej

4

Jernej tarafından belirtildiği gibi, girdinin tüm permütasyonlarının eşit olması varsayımı her zaman gerçekte geçerli değildir. İlk fikir giriş dizisine izin vermek olabilir. Bu işe yarayacaktır, ancak rastgele bir pivotun seçildiği durumu analiz etmek daha kolaydır. Bu rastgele örnekleme olarak da bilinir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.