İki yinelemeli çağrı ile yineleme ilişkisini çözme


10

Ben bir şeyi asla koşulu altında hızlı sıralama kötü durum çalışma zamanını okuyorum çok tanımlarını değişen için dengesiz bölüm çok .

Bunu yapmak için kendime çalışma zamanı ne olduğu sorusunu sormak quicksort her zaman bazı fraksiyon içinde bölüm olur durumda olurdu öyle ki öğeleri sol ve sağ ( öğe, pivot, ortada bırakılır ).T(n,p)T(n,p)0<p120<p12p(n-1)p(n1)(1-p)(n-1)(1p)(n1)11

Görmek zordur olmamalıdır bir üst en kötü durum için bağlanmış verir fraksiyonu ile bir bölüm olarak, maksimum dengesiz izin bölümdür daha dengeli ve daha küçük bir çalışma zamanı sahip olacaktır, ve fraksiyonuna izin verilmez.T(n,p)T(n,p)pp>p>p<p<p

Bu aşikardır iyi durumda ve quicksort en kötü durumdur. Her ikisinin de herhangi bir eğitim kaynağında bulunan kolay tekrarlama ilişkileri vardır. Ancak genel olarak üzerinde çalışmanın hiçbir fikri yok . Bariz ilişki şu olurdu:T(n,12)T(n,12)T(n,0)T(n,0)T(n,p)T(n,p)

T(n,p)=n+T(p(n-1),p)+T((1-p)(n-1),p)

T(n,p)=n+T(p(n1),p)+T((1p)(n1),p)

Burada takıldım. Etrafa arama denedim ama böl ve fethet algoritmaları hakkında anlayabileceği tüm literatür kelimenin tam anlamıyla "böl" aldı ve "hile" bölümleri her zaman bir kere a terimlerini birleştirme, büyüklüğü eşit olduğu gerçeğini kullanarak analiz sabit.

İki özyinelemeli çağrı ile nasıl başa çıkacağımı bilmiyorum ve yuvarlamayı kaldırmanın güvenli olup olmadığını bilmiyorum. Bu analitik olarak çözülebilir mi ve eğer evetse, nasıl?

Not: Asimptotikle ilgilenmiyorum ( herhangi bir sabit için göstermek kolaydır ). Ben küçüldükçe ne kadar yavaş quicksort ne kadar ilgileniyorum , örneğin ben oranı ile ilgileniyorum .Θ(ngünlükn)Θ(nlogn)ppppT(n,0.25)T(n,0.5)T(n,0.25)T(n,0.5)

PPS: Bir lisans öğrencisi olarak, çok uzun veya az açıklanamayan önemsizlikleri açık bir şekilde yaptığım için özür dilerim. Ve burada diğer SE siteleri kadar aşağıya bakıp bakmadığımı bilmesem de, bunun ödev değil kişisel ilgi olduğunu not edeceğim.

Yanıtlar:


9

Bahsettiğiniz gibi, Akra-Bazzi teoremi nüksün çözümünü gösterirT(n,p)T(n,p) dır-dir Ö(ngünlükn)O(nlogn) hepsi için p(0,1)p(0,1). Bununla birlikte, bu, bağımlılığın doğasını ortaya çıkarmazpp. İkincisini belirlemek için bir özyineleme ağacı yaklaşımı kullanabiliriz.

Özyineleme ağacının kökünde aralık {1,...n}{1,n}. İki çocuğu aralıklar{1,...,pn}{1,,pn} ve {pn+1,...,n}{pn+1,,n}, toplam uzunluğu tekrar olan nn. Bu düğümlerin her birinin iki çocuğu vardır (nnyeterince büyük), vb. Basitlik için yuvarlama hatalarını görmezden geliriz, yanipnpnbir tamsayıdır; bu sadece bir tekniktir ve bunun için endişelenmezdim. Bir düğümün uzunluğu en fazla olduğunda işlemi durdururuz11. Algoritmanın karmaşıklığı, ağaçtaki toplam aralıkların uzunluğu ile orantılıdır. Ne zamanp1/2p1/2, yapraklar (süreci durdurduğumuz düğümler) farklı derinliğe sahiptir ve bu da genel karmaşıklığı belirlemeyi zorlaştırır.

Ağacın en fazla olduğunu belirterek basit bir üst sınır elde edebiliriz günlük1-p(1/n)log1p(1/n) seviyeleri: her düğüm en azından 1-p1pebeveynden daha küçük. Tıpkı analizdeki gibip=1/2p=1/2, herhangi bir düzeydeki aralıkların toplam uzunluğu en fazla nnve biz bir üst sınır elde Ö(ngünlük1-p(1/n))O(nlog1p(1/n))çalışma süresi. Dan berigünlük1-p(1/n)=günlükn/günlük(1-p)-1log1p(1/n)=logn/log(1p)1 ve günlük(1-p)-1=-günlük(1-p)=p±Ö(p2)log(1p)1=log(1p)=p±O(p2) küçük için pp, bunu şöyle yazabiliriz Ö(ngünlükn/p)O(nlogn/p).

İşte daha doğru bir hesaplama. Seviyeyi düşününtt. Küçük bir aralığa ulaştıktan sonra süreci durdurmadığımızı varsayalım. Alarak rastgele bir tepe noktası oluşturabiliriz.tt adımlar, her birinde olasılıkla sola gidiyoruz (diyelim) pp ve olasılıkla doğru (söyle) 1-p1p. Her sol adımda aralığın uzunluğunun günlüğü-günlükplogpve her doğru adımı attığımızda, -günlük(1-p)log(1p). Bir tepe noktası, uzunluk kütüğünün gerçek ağacında en fazla azaltılmışgünlüknlogn. Seviyedeki aralıkların toplam ağırlığıtt Ağacın tam olarak bu işleme göre üretilen bir tepe noktasının en fazla azalmaya karşılık gelme olasılığıdır. günlüknlogn. Yani, eğerDD eşit olan dağılımdır -günlükplogp olasılıkla pp ve -günlük(1-p)log(1p) olasılıkla 1-p1p, ve X1,...,Xt~DX1,,XtD bağımsızdır, o zaman toplam ağırlık tt dır-dir Pr[X1++Xtgünlükn]Pr[X1++Xtlogn]. Süper sabit içintt, rastgele değişken X1++XtX1++Xt kabaca normal olarak ortalama ile dağıtılır [-pgünlükp-(1-p)günlük(1-p)]t[plogp(1p)log(1p)]t ve varyans doğrusal tt, için böylece tt doyurucu [-pgünlükp-(1-p)günlük(1-p)]t(günlükn)/2[plogp(1p)log(1p)]t(logn)/2diyelim ki olasılık çok yakın olacak 11, süre için tt doyurucu [-pgünlükp-(1-p)günlük(1-p)]t2günlükn[plogp(1p)log(1p)]t2logndiyelim ki sıfıra çok yakın olacak. tanımlanmasıh(p)=-pgünlükp-(1-p)günlük(1-p)h(p)=plogp(1p)log(1p) (ikili entropi fonksiyonu olarak bilinir), çalışma süresinin Θ(ngünlükn/h(p))Θ(nlogn/h(p)) (üniformalı pp, gibi nn). Gibip0p0 sahibiz h(p)-pgünlükph(p)plogpve bu yüzden önceki tahminimiz sıkı değildi.

Aynı analize bakmanın bir başka yolu, sonsuz bağımsız değişken değişken dizisine sahip olmaktır X1,X2,...X1,X2, eskisi gibi ve bir durma süresi tanımlamak TT ilk kez olmak tt öyle ki X1++XtgünlüknX1++Xtlogn. Çalışma süresi daha sonranE[T]nE[T]. Temel yenilenme teoremi daha sonra belirtiyorlimnE[T]/günlükn=1/E[D]=1/h(p)limnE[T]/logn=1/E[D]=1/h(p), aralıkların toplam boyutunun (1+Ö(1))ngünlükn/h(p)(1+o(1))nlogn/h(p). Daha doğru, her sabit içinpp toplam aralık boyutu (1+αp(n))ngünlükn/h(p)(1+αp(n))nlogn/h(p), nerede αp(n)=Ö(n)αp(n)=o(n). Temel yenileme teoremindeki yakınsama zaman parametresinde üsteldir -günlüknlogn bizim durumumuzda - bu yüzden polinom olmalı nn, yani, αp(n)=Ö(n-Cp)αp(n)=O(nCp). Yakınsama muhtemelenp(δ,1-δ)p(δ,1δ) herhangi δ>0δ>0.


Özet olarak, özyineleme ağacındaki çalışma süresiyle orantılı toplam aralık uzunluğu, her biri için aşağıdaki formdadır pp: T(n,p)=(1+Ö(1))ngünlüknh(p),

T(n,p)=(1+o(1))nlognh(p),
nerede günlüknlogn ve h(p)=-pgünlükp-(1-p)günlük(1-p)h(p)=plogp(1p)log(1p) aynı tabana götürülür ve Ö(1)o(1) bağlı bir işlevdir pp ve eğilimi 00 ile nn.

Dahası, muhtemelen herhangi biri için doğrudur δ>0δ>0 Ve herhangi biri p(δ,1-δ)p(δ,1δ) toplam aralık uzunluğunun formda olduğu doğrudur T(n,p)=(1+Ö(n-Cδ))ngünlüknh(p),

T(n,p)=(1+O(nCδ))nlognh(p),
nerede Cδ>0Cδ>0 ve gizli büyük O sabiti sadece δδ. Özellikle, tüm sabitler içinp1,p2p1,p2, limnT(n,p1)T(n,p2)=h(p2)h(p1),
limnT(n,p1)T(n,p2)=h(p2)h(p1),
ve yakınsama polinom olarak hızlıdır.

Hızlı cevabınız için teşekkürler Yuval. Kullandığın gerçeği ile biraz kafam karıştıΘΘ özetinde. h(p)h(p) sabittir ve bunun altında alakasız olduğu anlamına gelmez. ΘΘ? Ben yazmaya karar küçük bir test programı için olduğunu gösterdin=100000000000000n=100000000000000 karşılaştıran T(n,0.1)/T(n,0.5)T(n,0.1)/T(n,0.5)analitik yöntem ile hesaplamalı yöntem arasında 0.03 hata verdi. Bu oldukça büyük görünüyor ya da bu beklenecek mi?
orlp

The constant in the ΘΘ is uniform in pp. More accurately, for some constants c,Cc,C it is the case that for each pp there exists NpNp such that for nNpnNp, cnlogn/h(p)T(n,p)Cnlogn/h(p)cnlogn/h(p)T(n,p)Cnlogn/h(p). You can probably get an even stronger statement of the form T(n,p)=(1+o(1))Cnlogn/h(p)T(n,p)=(1+o(1))Cnlogn/h(p) for each fixed pp, where the little o is with respect to n (but could depend on p); C should not depend on p.
Yuval Filmus

Convergence to the limit depends on logn, so you might need logn to be large in order to get a really good approximation. On the other hand, a relative error of 0.03 doesn't sound so large. You can try to fix n and plot the running time as a function of p, comparing it to 1/h(p).
Yuval Filmus

Oh I'm sorry, I didn't mean a relative error of 0.03, but an absolute one (2.13222 vs 2.10339). Plotting T(n,p) as a function of p, relative to 1/h(p) gave a relative difference of 4%, with T(1011,0.05)h(0.05) being 96% of T(1011,0.4)h(0.4).
orlp

1
Super-constant is a function tending to infinity with respect to the relevant variable (in this case n). It is the same as ω(1).
Yuval Filmus
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.