Hızlı sıralama için 2N lnN karşılaştırmasını anlamaya çalışmak


13

Sedgewick'in Algoritmalar kitabındaki quicksort analizinden geçiyordum. Bir dizi N ayrı öğeyi sıralarken, hızlı sıralamadaki karşılaştırma sayısı için aşağıdaki yineleme ilişkisini oluşturur.

resim açıklamasını buraya girin

Bunu anlamakta zorlanıyorum ... Biliyorum ki herhangi bir elemanın pivot olması 1 / N olasılığını gerektiriyor ve eğer k pivot haline gelirse, sol alt dizi k-1 elemanlarına ve sağ alt dizide Nk öğeleri bulunur.

1. Bölümleme maliyeti N + 1 olur? Bölümleme yapmak için N + 1 karşılaştırmaları gerekiyor mu?

2.Sedgewick, her k değeri için bunları eklerseniz, bölümleme öğesinin k + olma olasılığı, yukarıdaki denklemi aldığınız iki alt dizinin maliyeti anlamına gelir.

  • Birisi bunu daha az matematik bilgisine sahip olanların anlayabilmesi için açıklayabilir mi?
  • Özellikle denklemdeki ikinci terimi nasıl elde edersiniz?
  • Bu terim tam olarak ne anlama geliyor?

1
Cevabın bir kısmı, en.wikipedia.org/wiki/Quicksort adresinden kopyalandı. "Yani, olası tüm bölünmeler için ortalamanın alınması ve bölüm için karşılaştırma sayısının n - 1 olduğunu, girdinin tüm permütasyonları üzerindeki ortalama karşılaştırma sayısı olduğunu belirtmek dizisi, yineleme ilişkisini çözerek doğru bir şekilde tahmin edilebilir: "Nedense burada 2 ile kapalıyız - n-1 ve n + 1.
İş

Yanıtlar:


7

CHızlı sıralama için maliyet fonksiyonu iki bölümden oluşur. İlk bölüm, diziyi iki 'yarıya' ayırmanın maliyetidir (yarıların eşit büyüklükte olması gerekmez, dolayısıyla tırnak işaretleri). İkinci bölüm, bu iki yarıyı ayırmanın maliyetidir.

  1. (N + 1)Terim aslında bir yoğunlaştırılmış bir terimdir ve terimler geliyor

    (N - 1) + 2
    

    Bu, hızlı sıralamadaki bölümlemenin maliyetidir: N-1pivot değeriyle ve bölümlemedeki bazı sınır koşulları nedeniyle 2 ek karşılaştırma ile karşılaştırılır.

  2. Denklemin ikinci kısmı, pivot değerinin her iki tarafındaki iki 'yarıyı' sıralama maliyetlerinden oluşur k.

    Bir pivot değeri seçtikten sonra, iki sıralanmamış 'yarıya' sahip olursunuz. Bu 'yarıları' ayırmanın maliyeti, boyutlarına bağlıdır ve maliyet işlevinin özyinelemeli uygulaması olarak en kolay tanımlanır C. Pivot Ndeğerlerin en küçüğüyse, iki 'yarıdan' her birini sıralama maliyeti sırasıyla C(0)ve C(N-1)(0 öğeli bir diziyi sıralama maliyeti ve öğelerle bir diziyi sıralama maliyeti N-1). Pivot beşinci-en küçükse, o zaman iki 'yarıdan' her birini sıralama maliyeti C(5)ve C(N-6)(5 öğeli bir diziyi sıralama maliyeti ve öğeleri içeren bir diziyi sıralama maliyeti N-6). Ve benzer şekilde diğer tüm pivot değerleri için.

    Pivot değerini bilmiyorsanız, bu iki 'yarıyı' sıralamanın maliyeti nedir? Bu, pivotun olası her bir değerinin maliyetini alarak ve belirli bir değerin ortaya çıkma şansı ile çarparak yapılır.

    Her bir pivot değerinin eşit olması muhtemel olduğundan, belirli bir pivot değeri seçme şansınız elemanlarınız 1/Nvarsa N. Bunu anlamak için bir zar atmayı düşünün. Uygun bir zar ile, her bir tarafın yukarı bakma şansı eşittir, bu nedenle 1'i atma şansı 1/6'dır.

    Bu, pivotun olası her k değeri için maliyetin ( C(k-1) + C(N-k)) şans ( 1/N) ile çarpıldığı toplam terimini verir.

  3. Söz konusu toplama formülünün 2N lnNbaşlığa eklenmesi, burada detayı açıklamak için çok fazla matematik gerektirir, ancak bir dizi Nöğeyi ( C(N)) sıralama maliyetinin, N-1elemanlar dizisi ( C(N-1)) ve doğrudan orantılı bir faktör N.


2
  1. Bölüm adımı için karşılaştırma sayısı olarak N + 1'in kitapta bir hata olduğu anlaşılıyor. N-1 pivot olmayan elemanların her biri için, pivottan daha küçük veya daha büyük olup olmadığını bulmanız gerekir; bu, bir karşılaştırma alır; bu nedenle N + 1 değil, toplamda N --- 1 karşılaştırmaları. (En basit durumu düşünün, N = 2, yani bir pivot ve bir başka eleman: İki eleman arasında üç karşılaştırma yapmak için kesinlikle yer yoktur .)

  2. Seçilen pivotun en küçük eleman olduğu durumu düşünün (k = 1). Bu, dizinin sola boş bir parçaya (pivottan daha az öğe olmadığı) ve pivot hariç tüm öğeleri içeren sağa bir bölüme ayrıldığı anlamına gelir (diğer tüm öğeler pivottan daha büyüktür) ). Bu, özyinelemeli olarak çözmek istediğiniz alt sorunların sırasıyla 0 ve N – 1 (k – 1 ve N – k) boyutlarına sahip olduğu ve C (0) ve C (N – 1) karşılaştırmaları gerektirdiği anlamına gelir; böylece toplamda C (0) + C (N --- 1).

    Pivot ikinci en küçük eleman (k = 2) olursa, alt problem boyutları 1 ve N – 2'dir (k – 1 ve N – k; soldaki bir eleman, çünkü tek olan daha küçüktür) pivot). Bu nedenle, bu alt problemleri tekrar tekrar çözmek için C (1) + C (N – 2) karşılaştırmaları gerekir. Ve böylece pivot üçüncü en küçük eleman, dördüncü vb. İse. Bunlar, sayılardaki ifadelerdir.

    Pivot, N elemanları arasından rastgele seçildiğinden, her durum (pivot en küçük, pivot ikinci en küçüktür, vb.) Eşit olasılık 1 / N ile ortaya çıkar. Paydalardaki N buradan geliyor.

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.