Rastgele oluşturulmuş bir ikili arama ağacının logaritmik yüksekliğine sahip olduğunun kanıtı


10

Nasıl bir rasgele inşa beklenen yüksekliği kanıtlamak do ikili arama ağacına sahip düğümler olan ? CLRS Algoritmalara Giriş'te (bölüm 12.4) bir kanıt var , ama anlamıyorum.nO(logn)


1
Hangi soru? Ne örneği? Lütfen tüm ayrıntıları düzenleyin ve verin.
Ran G.

3
Lütfen kısaltmalar kullanmaktan kaçının (BST gibi) ve çoğumuzda CLRS kitabı bulunmadığını varsayın. Teoremi buraya kopyalayabilir ve anlamadığınız şeyin ne olduğunu açıklayabilirseniz, daha fazla cevap alırsınız.
Ran G.

2
Bu, ikili arama ağacının nasıl oluşturulduğuna bağlı olacaktır . (Sonuç olmasa bile, kanıt olacaktır.) Daha fazla ayrıntı yararlı olacaktır.
Peter Shor

Yanıtlar:


21

Önce bunu sezgisel olarak düşünelim. En iyi senaryoda, ağaç mükemmel bir şekilde dengelenir; en kötü senaryoda, ağaç tamamen dengesizdir:

Yükseklik dengeli ikili arama ağacıEn kötü durum ikili arama ağacı

Kök düğümü başlayarak , bu sol ağacın izleyen her derinlikte iki kat fazla düğümü vardır, böylece ağaç düğüm ve bir yükseklik (bu durumda 3). Biraz matematikle , yani yükseklik. Tamamen dengesiz ağaç için ağacın yüksekliği basitçe . Yani sınırlarımız var., n = Σ h i = 0 2 i = 2 saat + 1 - 1 saat n 2 saat + 1 - 1 h log 2 ( n + 1 ) - 1 l O g 2 N O ( log n ) n - 1 O ( n )pn=Σben=0h2ben=2h+1-1hn2h+1-1hgünlük2(n+1)-1lÖg2nÖ(günlükn)n1O(n)

sıralı bir listesinden dengeli bir ağaç orta düğümü kök düğümümüz olarak seçerdik. Bunun yerine rastgele bir ağaç inşa halinde, herhangi düğümler eşit olasılıkla alınmayı ve bizim ağacın yüksekliği: İkili bir arama ağacında, sol alt ağacın yalnızca kök düğümden daha az anahtar içermesi gerektiğini biliyoruz. Bu nedenle, öğesini rastgele seçersek, sol alt ağacın öğeleri ve sağ alt ağacın öğeleri vardır, bu yüzden daha kompakt:, n h e ı g h t t r e e = 1 + maks ( s e i g h t l e f t s u b t r e e , h , e i g h t r i g h t s u b t r e e{1,2,,n}ni t h i - 1 n - i h n = 1 + maks ( h i - 1 , h n - i ) E [ h n ] = 1

heighttree=1+max(heightleft subtree,heightright subtree)
ithi1nihn=1+max(hi1,hni). Oradan, eğer her bir elemanın eşit şekilde seçilmesi muhtemelse, beklenen değerin tüm vakaların ortalamasıdır (ağırlıklı bir ortalamadan ziyade). Bu nedenle:E[hn]=1nΣben=1n[1+maksimum(hben-1,hn-ben)]

Fark ettiğinizden eminim, CLRS'in bunu nasıl kanıtladığından biraz saptım, çünkü CLRS, başlatılmamışlar için rahatsız edici olan nispeten yaygın iki kanıt tekniği kullanıyor. Birincisi, bulmak istediğimiz şeyin (veya bu durumda yükseklik) üslerini (veya logaritmalarını) kullanmaktır, bu da matematiğin daha temiz çalışmasını sağlar; ikincisi (burada görmezden geleceğim) gösterge işlevlerini kullanmaktır. CLRS üstel yüksekliği olarak tanımlar , dolayısıyla benzer yineleme . Y n = 2 × maks ( Y i - 1 , Y n - i )Yn=2hnYn=2xmaksimum(Yben-1,Yn-ben)

Bağımsızlık varsayalım (bir elemanın her bir çiziminin (mevcut elemanların dışında) bir alt ağacın kökü olduğu varsayılırsa, önceki tüm çekimlerden bağımsız olarak) şu ilişki var: iki adımda attım: (1) dışında bir sabit olduğu ve özelliklerinden biri ve (2) aynı zamanda sabit olduğu ve beklenen değerlerin özelliklerinden biri . Şimdi yerini alacağız1

E[Yn]=Σben=1n1nE[2xmaksimum(Yben-1,Yn-ben)]=2nΣben=1nE[maksimum(Yben-1,Yn-ben)]
1nΣbencben=cΣbenbenE[birx]=birE[x]maksimumAksi takdirde sadeleştirmek zordur, çünkü daha büyük bir şeyle çalışır. Negatif olmayan için tartışırsak , : , o zaman: öyle ki son adım , ve ve tüm yolu , ve , yani her terimXYE[maksimum(X,Y)]E[maksimum(X,Y)+min(X,Y)]=E[X]+E[Y]
E[Yn]2nΣben=1n(E[Yben-1]+E[Yn-ben])=2nΣben=0n-12E[Yben]
ben=1Yben-1=Y0Yn-ben=Yn-1ben=nYben-1=Yn-1Yn-ben=Y0Y0to ifadesi iki kez görünür, böylece toplamın tamamını benzer bir değiştirebiliriz. İyi haber şu ki, yineleme ; Kötü haber şu ki, başladığımız yerden çok daha ileri değiliz.Yn-1E[Yn]4nΣben=0n-1E[Yben]

Bu noktada CLRS, indüksiyon kanıtı olan ... matematiksel deneyim repertuarından çıkarır. kanıtlamak için kullanıcıya bıraktıkları kimliğini içerir . ilgili önemli olan, en büyük teriminin ve üstel yükseklik kullandığımızı . Belki birisi bu özel binomun neden seçildiğini yorumlayacaktır. Ancak genel fikir nüksümüzün yukarısından bazı sabit için ifadesi ile bağlanmaktır .E[Yn]14(n+33)Σben=0n-1(ben+33)=(n+34)n3Yn=2hnhn=günlük2n3=3günlük2nÖ(günlükn)nkk

Tek bir astar ile sonuçlandırmak için:

2E[Xn]E[Yn]4nΣben=0n-1E[Yben]14(n+33)=(n+3)(n+2)(n+1)24E[hn]=Ö(günlükn)

VAY. TEŞEKKÜRLER !!!! Beklenen değeri bilmememe rağmen, bu tür bir anlam ifade ediyor. Algoritmalar yapmadan önce gizli bir matematik kursu yapmadım. Eğer biraz şüphem varsa, daha fazla yorum göndereceğim. Teşekkürler Merbs.
user1675999

ancak üstel yükseklik neden seçilen binomdan daha az veya ona eşittir? Hala neden farklı en büyük terime sahip başka bir binom seçemiyoruz ve tam olarak aynı matematiği yapamıyoruz ... muhtemelen aptalım ama nedenini anlayamıyorum ... ve bu noktaya kadar mükemmel mantıklı, o zaman sadece bir şey tamamen mavi dışına çekmek zorunda kaldı ve hiçbir açıklama ile bize bunun doğru olduğunu kanıtlıyor ...
Zeks

@Zeks Yani, daha büyük terimlere sahip diğer binomları seçebiliriz. Terim hala polinom ( n^k) ise, sonuç aynıdır çünkü kbig-O notasyonuna bırakılır (3 yolu düşürülür). Ancak üstel ( e^n) bir şeyle değiştirsek, hala doğru bir üst sınır olurdu , sadece sıkı bir tane değil . Beklenen yüksekliğin en az logaritmik olduğunu biliyoruz, bu yüzden en çok logaritmik olduğunu belirlemek onu sıkılaştırıyor.
Merbs

@DavidNathan Endişenizi anlamıyorum - 1 / n'nin bir sabit olduğundan veya toplamın dışına taşınabileceğinden şüphe duyuyor musunuz? Sabit 2 gibi, kalan kanıtları basitleştirmek için büyük ölçüde açıklama amacıyla çıkarılmıştır.
Merbs
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.