Nie wszystkie drzewa czerwono-czarne są zrównoważone?

30

Intuicyjnie „zrównoważone drzewa” powinny być drzewami, w których lewe i prawe podgrzewa w każdym węźle muszą mieć „w przybliżeniu taką samą” liczbę węzłów.

Oczywiście, gdy mówimy o zrównoważeniu czerwono-czarnych drzew * (patrz definicja na końcu), faktycznie mamy na myśli, że są one zrównoważone wysokościowo iw tym sensie są zrównoważone.

Załóżmy, że próbujemy sformalizować powyższą intuicję w następujący sposób:

Definicja: Drzewo binarne nazywa się -balanced, z , jeśli dla każdego węzła nierówność0 μ 1μ N.0μ12N

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

wstrzymuje i dla każdego istnieje jakiś węzeł, dla którego powyższa instrukcja zawodzi. jest liczbą węzłów w lewym poddrzewie ito liczba węzłów pod drzewem z jako rootem (w tym rootem).| N L | N | N | N.μ>μ|NL|N|N|N

Sądzę, że w literaturze na ten temat nazywane są drzewami o zrównoważonej masie .

Można pokazać, że jeśli drzewo binarne z węzłów jest zrównoważone (dla stałej ), wówczas wysokość drzewa wynosi , utrzymując w ten sposób ładne wyszukiwanie nieruchomości.μ μ > 0 O ( log n )nμμ>0O(logn)

Pytanie brzmi:

Czy jest jakieś takie, że każde wystarczająco duże czerwono-czarne drzewo jest zrównoważone?μ>0μ


Stosujemy definicję drzew czerwono-czarnych (od Wstęp do algorytmów Cormena i in.):

Drzewo wyszukiwania binarnego, w którym każdy węzeł ma kolor czerwony lub czarny i

  • Korzeń jest czarny
  • Wszystkie węzły NULL są czarne
  • Jeśli węzeł jest czerwony, wówczas oba jego dzieci są czarne.
  • Dla każdego węzła wszystkie ścieżki od tego węzła do potomnych węzłów NULL mają tę samą liczbę czarnych węzłów.

Uwaga: nie liczymy węzłów NULL w powyższej definicji balanced. (Chociaż uważam, że nie ma znaczenia, jeśli to zrobimy).μ

Aryabhata
źródło
@Aryabhata: co jest takiego wyjątkowego ( ) w twojej edycji? Nic mi nie jest z tym, że zrównoważony oznacza zrównoważony. Nie sądzę, że powinieneś znaleźć dokładną aby udowodnić, że wysokość to . Czy coś brakuje? μ>μ 113 μO(logn)14 μO(logn)
jmad
Ponadto potrzebujesz negatywnego wyrażenia, aby zapewnić łańcuch kontrprzykładu z jednym drzewem dla każdego . Jakikolwiek łańcuch nieskończony, który nie zmniejsza wielkości węzła, byłby wystarczający, prawda? nN
Raphael
@jmad: Bez edycji każde drzewo jest trywialnie zbalansowane więc nie mamy trywialnej odpowiedzi na pytanie. Chciałem tego uniknąć. 0μ0
Aryabhata
@Raphael: Nie rozumiem. Rozmiar węzła drzewa wynosi . Mówisz, że nie ma znaczenia, jakie drzewo wybieramy dla i że ? Nie wydaje mi się to oczywiste i właśnie o to chodzi! n R B n μ n0nthnRBnμn0
Aryabhata
1
Wcześniejsza wersja tego pytania twierdziła, że ​​środowisko uruchomieniowe algorytmu rekurencyjnego na czerwono-czarnym drzewie, które wykonuje liniową ilość pracy na każdym etapie, niekoniecznie jest . To twierdzenie było nieprawidłowe; równowaga wysokości oznacza, że ​​głębokość n- węzłowego drzewa czerwono-czarnego wynosi O ( log n ) . Zatem jeśli wykonujesz pracę O ( n ) na każdym poziomie drzewa, całkowita praca to O ( n log n ) . O(nlogn)nO(logn)O(n)O(nlogn)
JeffE

Odpowiedzi:

31

Twierdzenie : Czerwono-czarne drzewa można dowolnie niezrównoważić μ .

Pomysł na dowód : wypełnij prawą poddrzewę jak największą liczbą węzłów, a lewą jak najmniejszą liczbą węzłów dla danej liczby k czarnych węzłów na każdej ścieżce liścia.

Dowód : Określanie sekwencji Tk z czarnymi drzewa tak, Tk ma k czarne węzłów każdej ścieżki od korzenia do dowolnego (wirtualnego) liści. Zdefiniuj Tk=B(Lk,Rk) przy pomocy

  • Rk pełne drzewo o wysokości2k1 z pierwszym, trzecim, ... poziomym kolorem czerwonym, pozostałe czarne i
  • Lk pełne drzewo wysokościk1 ze wszystkimi węzłami w kolorze czarnym.

Oczywiście, wszystkie Tk są czerwono-czarny drzewa.

T1T2T3


T_1
[ źródło ]


T_2
[ źródło ]


T_3
[ źródło ]


Teraz zweryfikujmy wrażenie, że prawa strona jest ogromna w porównaniu do lewej. Nie będę liczyć wirtualnych liści; nie wpływają na wynik.

Tkk12k12k122k1μ

2k2k+22k=11+2kk0

μ>0

Raphael
źródło
14

Nie. Weź pod uwagę czerwono-czarne drzewo o następującej specjalnej strukturze.

  • d
  • 2d

22d+112d+11

JeffE
źródło
22d+1+2d+11n
1
n
@JeffE: Zasadniczo łańcuch kontrprzykładu byłby wówczas podzbiorem „gęstym”, a nie podzbiorem „rzadkim”. Być może zmienię sformułowanie pytania.
Aryabhata