Randomized Quicksort'un neden O (n log n) en kötü çalışma zamanı maliyeti var?


18

Rastgele Hızlı Sıralama , pivot öğesinin rastgele seçildiği Hızlı Sıralama'nın bir uzantısıdır. Bu algoritmanın en kötü zaman karmaşıklığı ne olabilir? Bana göre, , çünkü en kötü durum rasgele seçilen pivot, sıralı veya ters sıralama düzeninde seçildiğinde gerçekleşir . Ancak bazı metinlerde [1] [2] en kötü zaman karmaşıklığı olarak yazılmıştır.O(n2)O(nlogn)

Doğru olan ne?


3
Bahsettiğiniz bu "bazı metin" siz olmalısınız. Orada gizli bir şey var. Bu "metni" tekrar okursanız bulacaksınız
AJ

Not: [1] bağlantısı öldü. Link [2] algoritmanın rastgele olduğunu açıkça belirtir, bu nedenle herhangi bir girdi için "bir çalışma zamanı" değil, "beklenen bir çalışma zamanı" vardır. Ve mümkün olan en kötü giriş için beklenen çalışma süresi O (n log n) 'dir.
gnasher729

Yanıtlar:


18

Her iki kaynağınız da "beklenen en kötü çalışma süresi" belirtir . Bu mutlak en kötü durumdan farklı beklenen zaman gereksinimi anlamına gelir tahmin ediyorum.O(nlogn).

Quicksort genellikle mutlak en kötü durum süresi gereksinimine sahiptir . En kötü durum, her adımda, bölme prosedürü bir n- uzunluk dizisini 1 ve n - 1 boyutundaki dizilere ayırdığında ortaya çıkar . Pivot elemanların bu "şanssız" seçimi, O ( n ) yinelemeli çağrıları gerektirir ve O ( n 2 ) en kötü duruma yol açar .O(n2)n1n1O(n)O(n2)

Diziyi sıralamadan önce rastgele veya rastgele karıştırmanın seçilmesi, özellikle büyük diziler için en kötü durumu çok düşük bir duruma getirme etkisine sahiptir. Beklenen zaman gereksiniminin O ( n log n ) olduğuna dair bir kanıt için Wikipedia'ya bakın . Başka bir kaynağa göre , "Quicksort'un bilgisayarınızda büyük bir diziyi sıralarken ikinci dereceden karşılaştırmalar kullanma olasılığı, bilgisayarınızın yıldırım çarpması olasılığından çok daha az."O(nlogn)

Düzenle:

Bangye'nin yorumuna göre, her zaman pivot olarak medyan öğeyi seçerek en kötü pivot seçim sırasını ortadan kaldırabilirsiniz. Medyanın bulunması zaman aldığından , Θ ( n log n ) en kötü durum performansını verir. Bununla birlikte, randomize quicksort en kötü durumda yanma olasılığı çok düşük olduğundan, quicksort'un deterministik medyan bulma varyantı nadiren kullanılır.O(n)Θ(nlogn)


Genel olarak bunun en kötü durumda ikinci dereceden davrandığını söyleyebiliriz
Atinesh

@Atinesh Hayır, en azından bununla demek istiyorsan . Θ
Raphael

Bence randomize quicksort'un en kötü performansının olduğunu söylemek doğru . Ö(n2).
James Evans

4
Quicksort , medyanı pivot olarak bulmak için doğrusal zaman algoritması kullanırsa en kötü durumda sadece zaman alabilir. Tabii ki, randomize quicksort genellikle daha iyi bir pratik performansa sahiptir. Θ(nlogn)
Bangye

6

Bu metinlerin "en kötü durum çalışma zamanından" değil, "en kötü durum beklenen çalışma süresinden" bahsettiği eksikti .

Rastgele bir öğe içeren bir Quicksort uygulamasını tartışıyorlar. Normalde belirli bir giriş için her zaman tam olarak aynı adımları üretecek bir algoritma olan deterministik bir algoritmaya sahipsiniz. "En kötü durum çalışma zamanını" belirlemek için, olası tüm girdileri inceler ve en kötü çalışma zamanını üreten girişi seçersiniz.

Ama burada rastgele bir faktör var. Bazı girdiler verildiğinde, algoritma her zaman aynı adımları yapmayacaktır çünkü bazı rasgelelikler söz konusudur. Her sabit girdi için bir çalışma zamanına sahip olmak yerine, bir "beklenen çalışma zamanı" var - rastgele kararların her olası değerini ve olasılıklarını kontrol ediyoruz ve "beklenen çalışma zamanı", her rastgele karar kombinasyonu için çalışma zamanının ağırlıklı ortalamasıdır. , ancak yine de sabit bir giriş içindir.

Bu nedenle, olası her giriş için "beklenen çalışma zamanını" hesaplıyoruz ve "en kötü durum beklenen çalışma zamanını" elde etmek için, beklenen çalışma zamanının en kötü olduğu olası bir girişi buluyoruz. Ve görünüşe göre "beklenen çalışma zamanı" için en kötü durumun sadece O (n log n) olduğunu gösterdiler. Sadece ilk pivotu rastgele seçmek en kötü durumun beklenen çalışma zamanını o (n ^ 2) (Büyük O yerine küçük o) olarak değiştirirse şaşırmazdım, çünkü n pivottan sadece birkaçı en kötü duruma yol açacaktır davranışı.


2

Beklenti / ortalamanın üstesinden gelmek için iki şey olduğunu unutmayın : giriş permütasyonu ve pivotlar (bölümleme başına bir tane).

nΘ(ngünlükn)

Θ(ngünlükn)

Alt satırda, kaynak (lar) ınızı hangi uygulamayı kullandıklarını ve hangi miktarı rastgele olarak değerlendirdiklerini kontrol edin. analizlerinde düzeltildi.


Sınavda sorduğum postimg.org/image/fiurc4z87 bu soruyu düşünün . Sanırım ne kadar uygun ve önerebilirim (c)
Atinesh

1
@Atinesh Sanırım cevabım size bu konuda yeterli bilgi sağlıyor.
Raphael

-1

Evet, koruyorsun, olacak Ö(n2).

Rasgele sıralama için en kötü durum girdi ile aynı öğelerdir. Örn: 2,2,2,2,2,2

İşte seçtiği algoritma T(n)=T(n-1)+n ve dolayısıyla Ö(n2).


Quicksort'un aşırı derecede aptal bir uygulaması varsa. Herhangi bir iyi uygulama ilk bölüm değişimi # 1 ve # 6, # 2 ve # 5, # 3 ve # 4 olacak ve daha sonra 3 uzunluğundaki iki alt
diziyi

Sanırım LHS ve RHS tarama her iki işaretçiler üzerinde <= yanı sıra> = var. Bu yüzden söylüyorsun. '=' her ikisiyle de değil, işaretçilerden biriyle ilişkilendirilir. Bu durumda özyineleme ağacı n'ye kadar büyür.
pratyay

Ve buna aşırı derecede aptal bir uygulama diyorum. "Tüm unsurlar eşittir" davası için ikinci dereceden çalışma gerektiren herhangi bir uygulama cezai aptalcadır. Aslında bu durumda doğrusal zaman alan uygulamalar vardır (O (n log n) değil, O (n)).
gnasher729
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.