Pohon AVL tidak seimbang?

22

Dalam pertanyaan sebelumnya , ada definisi pohon seimbang berat dan pertanyaan tentang pohon merah-hitam.

Pertanyaan ini untuk menanyakan pertanyaan yang sama, tetapi untuk pohon AVL .

Pertanyaannya adalah, mengingat definisi pohon seimbang seperti dalam pertanyaan lain,μ

Apakah ada beberapa sedemikian rupa sehingga semua pohon AVL cukup besar seimbang?μ>0μ

Saya kira hanya ada satu definisi pohon AVL dan tidak ada ambiguitas.

Aryabhata
sumber

Jawaban:

18

Klaim : Tidak ada, tidak ada seperti .μ

Bukti : Kami memberikan urutan pohon AVL ukuran tumbuh yang tak terbatas dengan nilai keseimbangan berat badan cenderung , bertentangan dengan klaim.0

Biarkan pohon lengkap tinggi ; ini memiliki node. h 2 h + 1 - 1Chh2h+1-1

Biarkan yang pohon Fibonacci dari ketinggian ; ini memiliki node. [ 1 , 2 , TAoCP 3 ] h F h + 2 - 1ShhFh+2-1

Sekarang mari dengan urutan pohon yang kami klaim sebagai contoh balasan. T h = N ( S h , C h )(Th)saya1Th=N(Sh,Ch)

Pertimbangkan nilai penyeimbang berat akar untuk beberapa h N + :ThhN+

Fh+22h+1+Fh+2-1=11+2h+1Fh+2-1Fh+2Fh+22h+1=15(ϕh+2-ϕ^h+2)2h+1ϕh+252h+1h0

Ini menyimpulkan buktinya.

Notasi :

  • nFn adalah th nomor Fibonaccin
  • φ- 0,62ϕ1.6 adalah Rasio Emas , konjugatnya.ϕ^0.62
  • f g lim n f ( n )fg berarti bahwa dan secara asimptotik sama, yaitu .fglimnf(n)g(n)=1

Nota bene : Pohon Fibonacci adalah pohon AVL dengan simpul paling sedikit untuk ketinggian tertentu (atau, yang setara, tinggi maksimum untuk sejumlah simpul tertentu).

Tambahan : Bagaimana kita bisa membuat pohon Fibonacci jika kita tidak mendengar seorang profesor menyebutkannya? Nah, apa yang akan pohon AVL dari ketinggian dengan sebagai node mungkin terlihat seperti? Tentu saja, Anda perlu root. Salah satu sub pohon perlu memiliki ketinggian , dan kita harus memilihnya dengan simpul sesedikit mungkin. Yang lain dapat memiliki ketinggian tanpa melanggar kondisi penyeimbangan tinggi, dan kami memilihnya juga dengan simpul sesedikit mungkin. Intinya, kami membangun pohon yang kami inginkan secara rekursif! Ini adalah empat yang pertama:hh-1h2

Empat pohon Fibonacci pertama
[ sumber ]

Kami membuat pengulangan untuk jumlah node di pohon yang dibangun dengan tinggi :f(h)h

f(1)=1f(2)=2f(h)=f(h1)+f(h2)+1n3

Memecahkannya mengarah ke yang kami gunakan di atas.f(h)=Fh+21


Bukti yang sama diberikan (dengan kurang detail) di pohon pencarian Biner keseimbangan terikat oleh Nievergelt dan Reingold (1972).

Raphael
sumber