Kırmızı-Siyah ağaçlarının hepsi dengeli değil mi?


30

Sezgisel olarak "dengeli ağaçlar", her düğümdeki sol ve sağ alt ağaçların "yaklaşık aynı" düğüm sayısına sahip olması gereken ağaçlar olmalıdır.

Tabii ki, kırmızı-siyah ağaçlardan * bahsedince (sondaki tanımlara bakınız) dengelendikten sonra, aslında yükseklik dengeli olduklarını ve bu anlamda dengeli olduklarını kastediyoruz .

Yukarıdaki sezgiyi resmileştirmeye çalıştığımızı varsayalım:

Tanım: İkili Ağaç, dengelenmiş, , eğer her düğüm için eşitsizlik varsaμ0μ12N

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

tutar ve her μ>μ için, yukarıdaki ifadenin başarısız olduğu bazı düğümler vardır. | N_L | N ve | N | '|NL| nin sol alt ağacındaki düğümlerin sayısıdır. ağacın altındaki ve kök olarak N ile düğümlenen düğüm sayısıdır .N|N|N

İnanıyorum ki, bu konuyla ilgili bazı literatürlerde ağırlık dengeli ağaçlar denir .

Biri n düğümleri olan bir ikili ağacın μ dengelenmiş (bir sabit μ>0 ) ise, o zaman ağacın yüksekliğinin O(logn) , böylece güzel aramayı korur. özellikleri.

Yani soru şudur:

Bazı yeteri kadar büyük her kırmızı-siyah ağacın \ mu- dengesiz olması için var mı?μμ>0μ


Kullandığımız Kırmızı-Siyah ağaçlarının tanımı (Cormen ve arkadaşlarının Algoritmalara Girişinden):

Her düğümün kırmızı ya da siyah renkli olduğu ikili arama ağacı ve

  • Kök siyah
  • Tüm NULL düğümleri siyah
  • Bir düğüm kırmızıysa, her ikisi de siyahtır.
  • Her düğüm için, o düğümden soyundan NULL düğümlere giden tüm yollar aynı sayıda siyah düğüme sahiptir.

Not: Yukarıda μ balanced tanımındaki NULL düğümleri saymıyoruz . (Buna rağmen yapmamızın bir önemi olmadığını sanıyorum).


@Aryabhata: Düzenlemenizdeki benzersizliğin ( ) nesi var ? Ben gerçeği ile iyiyim -balanced ima -balanced. Yüksekliği olarak ispatlamak için tam bulmanız gerektiğini sanmıyorum . Bir şey mi eksik? μ>μ1314 O ( log n )μO(logn)
Jmad

Ayrıca, her için bir ağaç içeren bir karşı örnek zincir sağlamak için negatif bir ifadeye ihtiyacınız var . Düğüm boyutunda küçülmeyen herhangi bir sonsuz zincir yeterlidir, değil mi? nN
Raphael

@jmad: Without düzenlemek, her ağacın trivially olduğu 0 -balanced ve biz soruya önemsiz bir cevabım yok bu yüzden. Bundan kaçınmak istedim. μ0
Aryabhata

@Raphael: Anlamıyorum. ağacının düğüm büyüklüğü n'dir . Bunu biz almak ne ağaç fark etmez diyorsun R B n ve o μ n0 ? Bana açık görünmüyor ve soru bununla ilgili! nthnRBnμn0
Aryabhata

1
Bu sorunun önceki bir sürümü, her adımda doğrusal miktarda çalışma yapan kırmızı-siyah bir ağaçta özyinelemeli bir algoritmanın çalışma zamanının mutlaka olmadığını iddia etti . Bu iddia yanlıştı; yükseklik dengesi, bir n düğümü kırmızı-siyah ağacının derinliğinin O ( log n ) olduğunu gösterir . Bu nedenle, ağacın her düzeyinde O ( n ) çalışması yaparsanız , toplam çalışma O ( n log n ) olur . O(nlogn)nO(logn)O(n)O(nlogn)
JeffE

Yanıtlar:


31

İddia : Kırmızı-siyah ağaçlar un- keyfi olabilir μ -balanced.

Kanıt Fikir : Birçok mümkün olduğunca düğümler ve belirli bir sayıda için mümkün olduğunca az düğümler olarak birlikte solda olarak doğru alt ağacı doldurun k her kök-yaprak yolda siyah düğümlerin.

Kanıt : Bir dizi tanımlayın Tk böylece kırmızı-siyah ağaçların Tk sahiptir k herhangi (sanal), ağacın köküne kadar her yolda siyah düğümleri. Tk=B(Lk,Rk) ile tanımlayın

  • Rk tam boy ağacı2k1 diğerleri siyah, kırmızı renkli birinci, üçüncü, ... düzeyiyle ve
  • Lk yüksekliği tam ağacınık1 siyah renkli tüm düğümlerle.

Açıkçası, tüm Tk kırmızı-siyah ağaçlardır.

Örneğin, bunlar T1 , T2 ve T3 , sırasıyla:


T_1
[ kaynak ]


T_2
[ kaynak ]


T_3
[ kaynak ]


Şimdi sağ tarafın görsel izlenimini sola göre çok büyük olduğunu doğrulayalım . Sanal yaprakları saymayacağım; sonucu etkilemezler.

Tk sol alt ağacı tamamlanmıştır ve daima k1 yüksekliğine sahiptir ve bu nedenle 2k1 düğüm içerir. Diğer yandan sağ alt ağaç tam ve 2k1 yüksekliğe sahip ve dolayısıyla 22k1 düğüm içeriyor . Şimdi kök için μ -balance değeri

2k2k+22k=11+2kk0

istendiği gibi μ>0 olmadığını kanıtlar .


14

Hayır . Aşağıdaki özel yapıya sahip kırmızı-siyah bir ağaç düşünün.

  • Sol alt ağaç derinliği ile tam bir ikili ağaçtır her düğüm siyah olduğu.d
  • Sağ alt ağaç , tek derinlikteki her düğümün kırmızı olduğu ve çift derinlikteki her düğümün siyah olduğu, derinliği olan tam bir ikili ağaçtır .2d

Bunun geçerli bir kırmızı-siyah ağaç olduğunu kontrol etmek kolaydır. Fakat sağ alt ağaçtaki düğüm sayısı ( ), kabaca sol alt ağaçtaki düğüm sayısının karesidir ( 2 d + 1 - 1 ).22d+112d+11


+1: Teşekkürler! Ancak düğüm sayısı . Belki 'ped' bunlar yeterince bir ağacını belirli bir boyut almaya Can n ? (Yapılması gereken gibi görünüyor). 22d+1+2d+11n
Aryabhata

1
Sınırsız sayıda için zaten bir karşı örnek var , öyleyse neden rahatsız ettin ? Ancak, isterseniz sol alt gruba daha fazla kırmızı düğüm ekleyebilir veya sağ alt ağaçtan biraz kırmızı düğüm alabilir. n
JeffE,

@JeffE: Temel olarak karşı örnek zincir, 'seyrek' bir altküme yerine 'yoğun' bir altküme olacaktır. Belki de sorunun formülasyonunu değiştiririm.
Aryabhata
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.