Motivation / Wiederholung: natürliche Suchbäume im Worst Case: lineare Zugriskosten (d.h. für Suchen, Einfügen, Löschen) ADS 1: Algorithmen und Datenstrukturen 1 ... ... ... ... .. Teil IX ⇒ 2 ... ... ... ... .. Prof. Peter F. Stadler & Sebastian Will ... ... ... ... ... beschränke die Höhe: ... ... ... ... ... . 6 2 .. .... ... .... .. ... ... ... . ... 6 Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik 5 3 1 ... ... .. ... .. 3 Universität Leipzig ... ... ... ... .. 5 19. Dezember 2013 Z.B. in ausgeglichenem Baum; statisch ok, aber einen Baum bei Einfüge/Lösch-Operationen ausgeglichen zu halten, ist sehr teuer! Was wäre z.B. nötig, nachdem 4 eingefügt wird? P.F. Stadler & S. Will (Bioinf, Uni LE) Wiederholung: ADS1, V9 `-balancierter 19. Dezember 2013 1 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) Binärbaum ADS1, V9 x . Weiterhin sei h(B ) die Höhe eines Baumes B . Denition: Ein Binärbaum heisst `-balanciert, genau dann wenn für jeden seiner Knoten x gilt: nach russischen Mathematikern Denition: also: AVL-Kriterium | h(Bl (x )) − h(Br (x ))| ≤ 1 . (Anmerkung: Nach dieser Denition ist der leere Baum auch `-balanciert.) d.h. der maximale Höhenunterschied von Tochterbäumen eines Knotens ist ` Adelson-Velski und Landis (1962) Ein 1-balancierter binärer Suchbaum heiÿt AVL-Baum. | h(Bl (x )) − h(Br (x ))| ≤ ` . ` 2 / 20 AVL-Baum Seien Bl (x ) und Br (x ) die linken und rechten Tochterbäume eines Knotens durch 19. Dezember 2013 Konstruktionsprinzip: h+1 beschränkt h+1 h+1 lässt sich als Maÿ für die Abweichung von einer ausgeglichenen Baumstruktur auassen. h−1 Oenbar ist jeder ausgeglichene Baum auch 1-balanciert. Aber ist jeder 1-balancierte Baum ausgeglichen? P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 h Bl h Br h Bl 3 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) Balancefaktor h Br h−1 Bl ADS1, V9 Br 19. Dezember 2013 4 / 20 Rebalancierung / Wartungsoperationen nach Einfügen BF(x ) für Knoten x Deniere Balancefaktor Wann und wo kann das AVL-Kriterium beim Einfügen verletzt werden? als Durch Einfügen kann sich nur der Balancefaktor von Knoten auf dem BF(x ) = h(Bl (x )) − h(Br (x )) . Pfad von der Wurzel des Baumes zum neuen Blatt verändern. Höchstens h Knoten sind betroen. Markieren der Knoten mit dieser Höhendierenz der Tochterbäume, z.B. 6(+1) . . .. ... ... ... ... . . .. 3(0) .. .. ... ... ... .. ... ... .... ... ... . .. .. 2 3(-1) . . 7 . ... ... ... ..... .. ... ... ... ... ... 4 2 ... ... ... ... ... ... .. 3(0) ... ... . ... .. .. ... ... ... ... ..... .. ... ... 7 .. .... ... .... .. ... ... ... ... ... . .. P.F. Stadler & S. Will (Bioinf, Uni LE) .. .. .. ..... ... ... .. ... ... ... ... .. → 7 3(+1) .. ... . .. ... .... ... ... ... .. ... ... ... ... 7 2(+1) 4 ... 2 4 . ... ... .. ... ... 4(-1) . ... ... ... ... ... ... 1 5 macht AVL-Kriterium deutlich (| 6(+2) .. ... 6(+1) .. ... 6(+2) . . . ... ... .. .. .... ... ... ... .. . . ... .. . Reorganisation lässt sich lokal begrenzen. BF(x )| ≤ 1). Geeignete Operationen: Rotationen. ADS1, V9 19. Dezember 2013 Rotation 5 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 6 / 20 Beispiel: Einfügen und Einfachrotation ... ... ... ... ... ... . ... ... .. ... y Rechtsrotation ... ... ... ... . x C AB −→ ←− Linksrotation .. ... ... .... ... .. ... ... . ... ... ... ... ... ... ... . AVL-Baum x ... ... ... .. ... . ... .. ... ... ... ... ... ... .. ... ... .... ... .. ... ... ... ... . ... . 3(0) .. ... .... ... .. .. ... ... ..... .. ... . . . .. 2 7 Rechtsrotation +2) 6( . 6(+1) . . ... ... ... ... A y BC Einfügen von 1 .. .... ... .... ... .. ... ... ... ... . ... . → 4 3(+1) . . .. .. .. ..... ... ... ... ... ... .. ... ... 2(+1) . ... .. ... ... .. .... 7 4 3(0) → .. .. ... ..... ... ... .. ... ... ... ... ... . . 2(+1) . .. .. ... ... .. ..... 1 6(0) .. ... .... ... .. .. ... ... ..... .. ... . . . .. 4 7 1 Hier: x und y sind Knoten; A,B und C stehen für Teilbäume. Warum erhält Rotation die Suchbaumeigenschaft? Wie verändert Rotation die Balancierung? P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 7 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 8 / 20 Beispiel: Einfügen und Doppelrotation Rebalancierung nach Einfügen eines Knotens Test AVL-Baum Einfügen von 5 Linksrotation x 3 +2) 3(0) .. 2 3(-1) . . 7 .. ... .. ... ... ... ... .... .. ... .... .. 6( . 4 4(+1) . . 7 . . ... .... ... .... .. ... ... ... .. ... . . ... ... .. .... ... ... ... ... ... .. ... ... 4(-1) . 2 4(0) . . . ... ... .. .... ... ... ... ... .. ... ... ... . ... ..... ... ... ... ... ... ... ... ... ... ... .. .. .. ... ... .... ... ... ... .. ... ... . 3(+1) . ... ... ... ... ... ... 5 BF(y ) 3(+1) . 7 x ... .... ... .. .. ... ... ..... .. ... . . . .. A 5 C B BF(y ) ≤ −2: Betrachte rechten Tochterknoten x von y . Falls BF(x ) ≤ 0, rotiere links um y . Sonst (BF(x ) > 0), rotiere zuerst .. ... .. ... ... ... ... .... .. ... .... .. 2 . .. ... ..... .. ... ... ... ... ... . . .. zuerst links um x , dann rechts um y . 6(0) .. .. .. ... ... .. .... y (≥ +2) ≥ +2: Betrachte linken Tochterknoten Falls BF(x ) ≥ 0 (d.h h(A) ≥ h(B )), rotie- re rechts um y . Sonst Doppelrotation nötig: rotiere ... ..... ... ... ... ... ... ... ... ... ... . 5 ... .. ... ... .. ... Falls 6 x von y . +2) 6( . 6(+1) . . y 4 auf Pfad von i bis zur Wurzel (in dieser Reihenfolge). Rechtsrotation 4 BF(y ) für alle Knoten y i Falls 7 rechts um x , dann links um y . 2 Nach Einfügen eines Knotens ist maximal eine Einfach- oder Doppelrotation nötig. Der reorganisierte Teilbaum hat danach dieselbe Höhe wie vorher, so dass das AVL-Kriterium für alle Knoten oberhalb wieder erfüllt ist. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 9 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) Löschen in AVL-Bäumen I ADS1, V9 19. Dezember 2013 10 / 20 Löschen in AVL-Bäumen II Einfacher Fall: Löschen eines Blattes bzw. eines Randknotens (also Löschen von Knoten mit max. 1 Tochter) Rebalancierung wie bei Einfügen gegebenenfalls wiederholte Rebalancierung (nur auf dem Pfad zur Wurzel). Dies ist ein Unterschied zu Einfügen, denn Rebalancierung kann Balancierungsfaktoren von Vorgängern ändern - an Vorgängerknoten mit BF = +/- 2 Löschen eines Knotens x mit 2 Töchtern wird auf Löschen für Blatt/Randknoten zurückgeführt: ersetze x durch kleinsten Schlüssel y im rechten Tochterbaum von x nach Löschen kann Höhe eines Teilbaums erniedrigen. AVL-Baum Löschen von 1 .. ... ... .. .... .. 1 . ... ... .. .. .... ... ... ... ... . .. ... 4 . .. ... .... .. ... ... ... ... ... .. .. ... → 6(-1) . . . ... ... .. .. .... ... ... ... ... . .. ... 7(0) .. .. .. ... ... .... ... .. .. ..... .... ... . 8 9 8 7(0) .. 4 .. .. ... ... .... ... .. .. ..... .... ... . P.F. Stadler & S. Will (Bioinf, Uni LE) → 6(-1) . . 2 Warum hat der Knoten mit Schlüssel ADS1, V9 9 .. .. ... ..... ... .. ... ... ... ... . . ... ... 3(0) .. 7(0) .. 2 8 .. ... ... .... ... .. .. ..... .... ... . .. 4 19. Dezember 2013 11 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 der Höhe h gilt, T hat mindestens schätzen wir also Fh weiter ab. Nach Binetscher Formel (vgl. 1. Vorlesung) gilt wobei A Da |B | √ = (1 + < 1, ist B 5)/2 und h < 1. Wir können deshalb weiter abschätzen ausserdem |T | minimal. Fh Einer der Tochterbäume von T muss die Höhe h − 1 haben. Wegen Minimalität von T hat der andere Tochterbaum die kleinstmögliche Höhe; wegen AVL-Eigenschaft, also h − 2. Nach Induktionshypothese gilt, dass die Tochterbäume mindestens Fh−1 und Fh−2 Knoten enthalten, daher gilt |T | ≥ Fh−1 + Fh−2 + 1 ≥ Fh . P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 2 log A n ≥ Fh ≥ (Ah − 1)/ √ √ 5 . 5, also (nach h aufgelöst) log ≤ h √ 2( 5n + 1) 2 log A 13 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) . ADS1, V9 19. Dezember 2013 14 / 20 Fibonacci-Bäume Maximal unbalancierte AVL-Bäume. ≈ 1 2 log A · (log2 √ 5 Zu jedem h + log2 n) 0 B < 1.44 log2 n (+kleine Konstante) ≥0 gibt es genau einen Fibonacci-Baum Bh mit Höhe h. 1 ist der leere Baum, B für h ergibt sich ≥2 Bh = log2 (n + 1) 2 B Resultat: Selbst im ungünstigsten Fall sind AVL-Bäume nur um Faktor 1.44 höher als vollständige Bäume mit derselben Knotenzahl! ◦ ... .. ... .. ... ◦ B 3 ◦ . ..... .. ... ... ..... .. ... ... . ... .. .... ... ◦ ◦ ◦ Was haben wir also erreicht? = BUILD(Bh−1 , x , Bh−2 ) . 4 B B ◦ .. ... ... ... ..... ... ... ... ... . ... .. .. ... ..... . ... ... .... ... . ... .. . . ... ... .. ... .. ... ... ◦ ◦ ◦ ◦ ◦ ◦ (Wie sieht der worst-case aus?) ADS1, V9 ist ein einzelner Knoten ist der Fibonacci-Baum der Höhe h mit Wurzel x . Vergleich mit vollständigen Bäumen: P.F. Stadler & S. Will (Bioinf, Uni LE) ≥ (Ah − 1)/ Sei T ein AVL-Baum der Höhe h mit n Knoten. Nun gilt Höhe von AVL-Bäumen III √ log2 ( 5n + 1) √ = (Ah − B h )/ 5 , √ B = (1 − 5)/2. Fh Beweis durch vollständige Induktion (über Baumhöhe) Induktionsstart: h = 0 (leerer Baum), h = 1 (nur Wurzel) ok. Induktionsschritt (h ≥ 2). Sei T ein AVL-Baum der Höhe h; sei h 12 / 20 Um die minimale Knotenzahl eines AVL-Baums der Höhe h abzuschätzen, ≥ Fh ). h 19. Dezember 2013 Höhe von AVL-Bäumen II Behauptung: Für jeden AVL-Baum T ≤ wie zuvor 9 0 = 0; F1 = 1; Fi = Fi −1 + Fi −2 (i > 1) h höchstens eine Tochter? .. ... ... .... ... .. .. ..... .... ... . .. Zur Erinnerung: Fibonacci-Zahlen F Aus y Lösche ursprünglichen Knoten von y und rebalanciere Höhe von AVL-Bäumen I Fh Knoten (|T | Beachte: die Suche nach y benötigt O (log n ) Schritte. 6(0) 3(-2) . . 3(-1) .. .... ... ... ... ... ... ... ... ... . . ... . ... 2(+1) . (oder wahlweise gröÿten Schlüssel im linken); Linksrotation 5 ◦ . . ..... ......... ..... ..... ..... ..... ..... ..... ..... ..... .. ..... . .... ... ..... . ... .... . ... ... ... ... . . . . ... .. .... .. .. . ... ... . . . . . .. . . ... .... ... ... .. .. ... .... . . . . . . . . ... ... ... ... . ... .. .... .. ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ 19. Dezember 2013 15 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 16 / 20 Gewichtsbalancierte Suchbäume I Gewichtsbalancierte Suchbäume II Gewichtsbalancierte oder BB-Bäume (bounded balance) Wahl des Parameters Zulässige Abweichung der Struktur vom ausgeglichenen Binärbaum wird über den Quotient zwischen der Anzahl der Knoten im linken Tochterbaum α = 1/2: Binärbäume α < 1/2: und dem gesamten Teilbaum beschränkt. α = 0: Denition: Sei B ein binärer Suchbaum mit n >0 Knoten, von denen sich nl Knoten im linkem Tochterbaum Bl benden. ρ(B ) = nn++11 l α: Balancierungskriterium akzeptiert nur vollständige Strukturbeschränkung wird zunehmend gelockert keine Beschränkung der Baumstruktur Wartung Einsatz derselben Rotationstypen wie beim AVL-Baum heiÿt die Wurzelbalance von B . Ein Baum B heiÿt gewichtsbalanciert, BB(α), oder von beschränkter Rebalancierung ist gewährleistet durch eine Wahl von 0 Balance α, wenn für jeden Tochterbaum B von B gilt: α≤1− 0 α ≤ ρ(B ) ≤ 1 − α ADS1, V9 1 2 Kosten für Suche und Aktualisierung: O (log n ) Nievergelt and Reingold (1972), http://portal.acm.org/citation.cfm?id=804906 P.F. Stadler & S. Will (Bioinf, Uni LE) r 19. Dezember 2013 17 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) Positionssuche mit balancierten Bäumen I ADS1, V9 19. Dezember 2013 18 / 20 Positionssuche mit balancierten Bäumen II Rangzahlen erlauben Bestimmung eines direkten Suchpfads im Baum für Positionssuche nach dem k -ten Element. Balancierte Suchbäume Position p sind linearen Listen in fast allen Grundoperationen überlegen beginne Suche am Wurzelknoten Wenn Rang r eines Knotens = p, gilt: Element gefunden Lösung des Auswahlproblems bzw. Positionssuche (Suche nach k -tem Element der Sortierreihenfolge) kann jedoch noch verbessert werden Denition: Der Rang eines Knotens ist die um 1 erhöhte Anzahl der Knoten seines linken Tochterbaums. (Blattknoten haben Rang 1) := k ; falls r > p: Suche im linken Tochterbaum des Knotens weiter falls r < p: Ersetze p := p - r und setze Suche im rechten Tochterbaum fort. Die Wartungsoperationen erfordern etwas mehr Aufwand: Nach Einfügen / Löschen eines Knotens müssen die Rangwerte auf dem kompletten Suchpfad angepasst werden. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 19 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS1, V9 19. Dezember 2013 20 / 20