Tidak semua pohon Merah-Hitam seimbang?


30

Secara intuitif, "pohon seimbang" harus pohon di mana sub-pohon kiri dan kanan di setiap node harus memiliki "kurang lebih sama" jumlah node.

Tentu saja, ketika kita berbicara tentang pohon merah-hitam * (lihat definisi di akhir) yang seimbang, kita benar-benar berarti bahwa mereka adalah tinggi badan seimbang dan dalam arti bahwa, mereka seimbang.

Misalkan kita mencoba memformalkan intuisi di atas sebagai berikut:

Definisi: Pohon Biner disebut -balanced, dengan , jika untuk setiap simpul , ketidaksamaan0 μ 1μ N0μ12N

μ|NL|+1|N|+11μ

memegang dan untuk setiap , ada beberapa simpul yang gagal pernyataan di atas. adalah jumlah node di sub-pohon kiri danadalah jumlah node di bawah pohon dengan sebagai root (termasuk root).| N L | N | N | Nμ>μ|NL|N|N|N

Saya percaya, ini disebut pohon dengan bobot seimbang dalam beberapa literatur tentang topik ini.

Satu dapat menunjukkan bahwa jika pohon biner dengan node adalah -balanced (untuk konstanta ), maka ketinggian pohon adalah , sehingga mempertahankan pencarian yang bagus properti.μ μ > 0 O ( log n )nμμ>0O(logn)

Jadi pertanyaannya adalah:

Apakah ada beberapa sedemikian rupa sehingga setiap pohon merah-hitam yang cukup besar adalah seimbang?μμ>0μ


Definisi pohon Merah-Hitam yang kami gunakan (dari Pengantar ke Algoritma oleh Cormen et al):

Pohon pencarian biner, di mana setiap node berwarna merah atau hitam dan

  • Akar hitam
  • Semua NULL node berwarna hitam
  • Jika simpul berwarna merah, maka kedua anaknya berwarna hitam.
  • Untuk setiap node, semua jalur dari node ke node NULL keturunan memiliki jumlah yang sama dari node hitam.

Catatan: kami tidak menghitung node NULL dalam definisi -seimbang di atas. (Meskipun saya percaya itu tidak masalah jika kita melakukannya).μ


@Aryabhata: ada apa dengan keunikan ( ) dalam hasil edit Anda? Saya baik-baik saja dengan fakta bahwa -balanced menyiratkan -balanced. Saya tidak berpikir Anda harus menemukan tepat untuk membuktikan ketinggian adalah . Apakah saya melewatkan sesuatu? 1μ>μ 113 μO(logn)14 μO(logn)
jmad

Selain itu, Anda memerlukan pernyataan negatif untuk memberikan rantai sampel tandingan dengan satu pohon untuk setiap . Setiap rantai tak terbatas yang tidak berkurang dalam ukuran simpul akan cukup, bukan? nN
Raphael

@jmad: Tanpa edit , setiap pohon sepele -sehingga kami punya jawaban sepele untuk pertanyaan itu. Saya ingin menghindarinya. μ0
Aryabhata

@ Raphael: Saya tidak mengerti. Ukuran simpul pohon adalah . Anda mengatakan tidak masalah pohon apa yang kita pilih untuk dan ? Sepertinya tidak jelas bagi saya, dan itulah pertanyaannya! nthnRBnμn0
Aryabhata

1
Versi sebelumnya dari pertanyaan ini menyatakan bahwa runtime dari algoritma rekursif pada pohon merah-hitam yang melakukan jumlah pekerjaan linear pada setiap langkah belum tentu . Klaim ini salah; tinggi-keseimbangan menyiratkan bahwa kedalaman pohon merah-hitam -node adalah . Dengan demikian, jika Anda melakukan bekerja di setiap tingkat pohon, pekerjaan total adalah . O(nlogn)nO(logn)O(n)O(nlogn)
JeffE

Jawaban:


31

Klaim : pohon Merah-hitam dapat sewenang-wenang un- -balanced.μ

Ide Bukti : Isi subtree kanan dengan node sebanyak mungkin dan kiri dengan node sesedikit mungkin untuk jumlah dari node hitam pada setiap jalur root-leaf.k

Bukti : Tentukan urutan pohon merah-hitam sehingga memiliki simpul hitam pada setiap jalur dari akar ke daun manapun (virtual). Tentukan denganTkTkkTk=B(Lk,Rk)

  • Rk pohon lengkap dengan tinggi dengan tingkat pertama, ketiga, ... berwarna merah, yang lain hitam, dan2k1
  • Lk pohon lengkap dengan ketinggian dengan semua node berwarna hitam.k1

Jelas, semua adalah pohon merah-hitam.Tk

Misalnya, ini adalah , dan , masing-masing:T1T2T3


T_1
[ sumber ]


T_2
[ sumber ]


T_3
[ sumber ]


Sekarang mari kita verifikasi kesan visual dari sisi kanan yang lebih besar dibandingkan dengan yang kiri. Saya tidak akan menghitung daun virtual; mereka tidak memengaruhi hasilnya.

kiri selesai dan selalu memiliki tinggi dan karenanya mengandung node. Subtree kanan, di sisi lain, lengkap dan memiliki tinggi dan karenanya mengandung node. Sekarang nilai -balance untuk root adalahTkk12k12k122k1μ

2k2k+22k=11+2kk0

yang membuktikan bahwa tidak ada seperti yang diminta.μ>0


14

Tidak. Pertimbangkan pohon merah-hitam dengan struktur khusus berikut.

  • Subtree kiri adalah pohon biner lengkap dengan kedalaman , di mana setiap node berwarna hitam.d
  • Subtree kanan adalah pohon biner lengkap dengan kedalaman , di mana setiap node pada kedalaman ganjil berwarna merah, dan setiap node pada kedalaman genap berwarna hitam.2d

Sangat mudah untuk memeriksa bahwa ini adalah pohon merah-hitam yang valid. Tetapi jumlah node di subtree kanan ( ) kira-kira kuadrat dari jumlah node di subtree kiri ( ).2 d + 1 - 122d+112d+11


22d+1+2d+11n

1
n

@ Jeff JE: Pada dasarnya rantai counterexample kemudian akan menjadi subset 'padat', bukan subset 'jarang'. Mungkin saya akan mengubah rumusan pertanyaan.
Aryabhata
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.