10. Balancierte Bäume Informatik II für Verkehrsingenieure Ziel GEORDNETER BINÄRER BAUM § Suchen § Operationen Einfügen und Löschen § Analyse der Eigenschaften des geordneten Baumes BALANCIERTER SUCHBAUM § Einfügen und Löschen § Rotationen 2 Bäume: Definition ormatik: Programmierung und Software-Entwicklung, WS 11/12 4 BaumEin BaumBäume: besteht ausDefinition Knoten, die durch Kanten miteinander verbunden sind. Ein Wurzelknoten ist ein Knoten, auf den keine Kante zeigt. In Knoten können nach Anwendung verschiedeneverbunden Daten gespeichert sein. besteht aus Knoten, diejedurch Kanten miteinander DEFINITION Die Menge Bäume wird durch folgende Regeln konstruiert: Wurzelknoten ist einaller Knoten, auf den keine Kante zeigt. Knoten Kanten § Ein Baum besteht aus , die durch miteinander verbunden sind. Ein Wurzelknoten ist ein Knoten, auf den keine Kante zeigt. Es gibt einen leerenverschiedene Baum. können je nach Anwendung Daten gespeichert sein. einzelner ohneverschiedene irgendwelche Kanten ist einsein. Baum. § In KnotenEin können je nachKnoten Anwendung Daten gespeichert e aller Bäume wird durch folgende Regeln konstruiert: Ist n > 0 und sind B1, B2, …, Bn Bäume mit Wurzelknoten w1, w2, …, wn, so § Die Menge aller Bäume wird zu durch folgende RegelnBaum konstruiert: t einen leeren Baum. kann man diese einem größeren zusammensetzen, indem man - Es gibt einen leeren Baum. einen neuen Knoten hinzufügt und diesen mit w1, w2, …, wn verbindet. Der Ein einzelnerohne Knoten ohne irgendwelche Kanten ist ein Baum nzelner- Knoten irgendwelche Kanten ist ein Baum. neue Knoten ist dann Wurzelknoten des so aufgebauten Baums. - Sind B , B , ..., B Bäume mit Wurzelknoten w , w , ..., w , so kann man diese zu einem größeren Baum 1 2 n 1 2 n zusammensetzen, indem einen neuen hinzufügt und diesen , w , ..., Der neue 0 und sind B1, B2, …, Bn man Bäume mitKnoten Wurzelknoten w1, mit w2w, …, wwn, verbindet. so Knoten ist dann Wurzelknoten des so aufgebauten Baums. man diese zu einem größeren Baum zusammensetzen, indem man w2 … neuen Knoten hinzufügt und diesen mit w1w, 1w2, …, wn verbindet. Der wn Knoten ist dann Wurzelknoten des so aufgebauten Baums. 1 B1 B2 2 n Bn 3 17 Informatik II, SS06 Geordneter Binärbaum (Suchbaum) Geordnete Binärbäume (Suchbäume) Ein Binärbaum b heißt geordnet, wenn IN BINÄRBAUM T HEISST bGEORDNET , WENN leer ist oder wenn § T leer ist oder wennFolgendes für alle nichtleeren Teilbäume t von b gilt: § Folgendes für alle nichtleeren Teilbä Der Schlüssel vonutme ist t von T gilt: Der Schlüssel von t ist größer (oder gleich) als alle Schlüssel des linken Teilbaums von t und - größer (oder gleich) als alle Schlüssel des linken Teilbaums von t und kleiner (oder gleich) als alle Schlüssel des rechten Teilbaums von t - kleiner (oder gleich) als alle Schlüssel des rechten Teilbaums von t 7 > < 10 5 > > 3 9 < 12 M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume 4 Suche im Binärbaum Suche im geordneten Binärbaum 19 II, SS06 PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6): zipieller Ablauf der Berechnung von t.contains(6): § Suche ob Element 6 enthalten ist Vergleiche 6 mit dem Wert der Wurzel; 7 Da 6<7, gehe zum linken Kindknoten; 6<7 8 5 3 6 12 5 Suche im Binärbaum Suche im geordneten Binärbaum 19 II, SS06 PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6): zipieller Ablauf der Berechnung von t.contains(6): ① VERGLEICHE DEMWert WERT DER WURZEL ; Vergleiche 6 mit6 MIT dem der Wurzel; 7 Da 6<7, gehe linken Kindknoten; ② DA 6<7, GEHE zum ZUM LINKEN KINDKNOTEN ; 6<7 8 5 3 6 12 6 Suche im Binärbaum Suche im geordneten Binärbaum 19 II, SS06 PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6): zipieller Ablauf der Berechnung von t.contains(6): ① VERGLEICHE DEMWert WERT DER WURZEL ; Vergleiche 6 mit6 MIT dem der Wurzel; 7 Da 6<7, gehe linken Kindknoten; ② DA 6<7, GEHE zum ZUM LINKEN KINDKNOTEN ; 6<7 ③ VERGLEICHE 6 MIT DEM WERT DIESES KNOTENS; 8 5 ④ DA 6>5, GEHE ZUM RECHTEN KINDKNOTEN DIESES KNOTENS; 6>5 3 6 12 7 Suche im Binärbaum Suche im geordneten Binärbaum 19 II, SS06 PR IN Z IP IE LLE R AB LA U F D E R BE R E C H N U N G V O N T .C O N TA IN S (6): zipieller Ablauf der Berechnung von t.contains(6): ① VE R G6 L Emit IC H Edem 6 M IT D E M WEder R T DWurzel; E R WU RZ E L ; Vergleiche Wert 7 Da 6<7, gehe Kindknoten; ② DA 6<7, G E H zum E Z U M linken L IN K E N K IN D K N O T E N ; ③ VE R G L E IC H E 6 M IT ④ DA 6>5, G E H E DEM WE R T KN O T EN S ; 8 5 ZU M R EC HTEN ⑤ VE R G L E IC H E 6 M IT D IE SE S 6<7 DEM KIN D K N O T E N WE R T D IE SE S ⑥ DA 6==6, G E B E ER G E B N IS T R U E D IE S ES KN O T EN S ; KN O T E N S ; 3 6==5 6 12 Z U R U ̈CK. 8 24 Informatik II, SS06 Einfügen in geordneten Baum Einfügen in geordneten Binärbaum Einfügen in einen geordneten Binärbaum wird rekursiv die “richtige” Stelle BE IM EIN FU ̈GENBeim IN EINEN GEORDNETEN BINÄRBAUM WIRD REKURSIV DIE “RICHTIGE” STELLE GESUCHT, SO gesucht, so dass wieder eine geordneter Binärbaum entsteht. DASS WIEDER EINEBeispiel: GEORDNETER INÄRBAUM ENTSTEHT. t.add(8)Bergibt: § Beispiel: t.add(8) ergibt: 7 7 t= t= 5 3 t.add(8) 10 6 10 5 12 3 6 8 12 M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume 9 Löschen im geordneten Binärbaum EIGENSCHAFT § Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden. 7 3 14 18 Löschen 33 19 18 52 26 10 Löschen im geordneten Binärbaum/2 EIGENSCHAFT § Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden. Das ist etwas schwieriger bei inneren Knoten. 7 3 14 14 Löschen 33 19 52 26 11 Löschen im geordneten Binärbaum/3 EIGENSCHAFT § Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden. Das ist etwas schwieriger bei inneren Knoten. 7 3 7 Löschen 33 19 52 26 12 Löschen im geordneten Binärbaum/4 Informatik II, SS06 36 Löschen in geordneten Binärbaum Allgemein treten zwei grundsätzlich verschiedene Situationen auf: Fall 1: der Knoten q mit dem zu entfernenden Schlüssel besitzt höchstens einen Sohn (Blatt oder Halbblatt): a) der Knoten q besitzt keinen Sohn b) der Knoten q besitzt einen linken Sohn (rechts: symmetrisch) M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume 13 37 Informatik II, SS06 Löschen im geordneten Binärbaum/5 Löschen in geordneten Binärbaum Fall 2: Der Knoten q mit dem zu entfernenden Schlüssel besitzt zwei Söhne (innerer Knoten): Der zu löschende Schlüssel von q wird durch den kleinsten der größeren Schlüssel ersetzt. Dieser Schlüssel befindet sich stets in einem Blatt oder einem Halbblatt, das daraufhin aus dem Baum entfernt wird. M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume 14 Analyse des geordneten Binärbaumes AUFBAU BINÄRBAUM ZU FOLGENDER DATENMENGE (SIEHE ÜBUNG 8.4) § 50, 17, 72, 12, 23, 54, 76, 9, 14, 19, 67 15 Analyse des geordneten Binärbaumes/2 AUFBAU BINÄRBAUM ZU FOLGENDER DATENMENGE (SIEHE ÜBUNG 8.4) § 9, 12, 14, 17, 19, 23, 50, 54, 67, 72, 76 16 Vollständig ausgeglichene binäre Suchbäume Vollständig ausgeglichene b. Suchbäume EIN VOLLSTÄNDIG AUSGEGLICHENER BINÄRER SUCHBAUM IST § binär geordneter Baum (Suchbaum), bei dem -- abgesehen von der untersten Schicht -alle Levels vollständig besetzt sind. § Die Tiefe/Höhe eines vollständig ausgeglichenen Suchbaums beträgt log2(n+1), wobei n die Anzahl der Elemente ist à Dies ist die minimale Höhe für alle Suchbäume à Optimaler Aufwand für Suche 18 Vollständig ausgeglichene b. Suchbäume Informatik II, SS06 8 Vollständig ausgeglichene binäre Suchbäume BEISPIELE Beispiele: Vollständig ausgeglichene binäre Suchbäume der Höhen 1-4 M. Wirsing: Balancierte Bäume 19 Einfügen Informatik II, SS06 9 EINFÜGENVollständig ausgeglichene binäre Suchbäume Problem: Einfügen eines Elements muss ein vollständiger Suchbaum § erfolgt erst einmalBeim identisch zum geordneten Binärbaum möglicherweise vollständig reorganisiert werden. Beispiel: Einfügen von Zuse unproblematisch; Einfügen von Bauer führt zu vollständiger Reorganisation Hoare Hoare Zuse Wirth Floyd einfügen Wirth Floyd Dahl Dahl Gosling Gosling Zuse Turing Gosling Hoare Floyd Turing Wirth Bauer einfügen Dahl Turing 20 9 Informatik II, SS06 Einfügen/2 Vollständig ausgeglichene binäre Suchbäume Beim Einfügen eines Elements muss ein vollständiger Suchbaum EINFÜGENProblem: VON BAUER möglicherweise vollständig reorganisiert werden. Beispiel: Einfügen von Zuse unproblematisch; Einfügen von Bauer führt zu vollständiger Reorganisation Hoare Hoare Zuse Wirth Floyd einfügen Wirth Floyd Dahl Dahl Gosling Gosling Dahl Gosling Wirth Gosling Zuse Turing Hoare Floyd Turing Turing Bauer einfügen Turing Dahl Bauer Floyd Hoare Wirth 21 Vollständig ausgeglichene b. Suchbäume PROBLEM § Beim Einfügen eines Elements muss ein vollständiger Suchbaum möglicherweise vollständig reorganisiert werden. § Damit erhöht sich der Aufwand für das Einfügen KOMPROMISSLÖSUNG § Ist notwendig, um den vollständigen Baum nicht reorganisieren zu müssen 22 AVL-Bäume AVL-Bäume DEFINITION § Ein binärer Suchbaum heißt AVL-Baum, falls für den linken Teilbaum T1 und den rechten Teilbaum T2 der Wurzel gilt § | h(T2) – h(T1) | <= 1 Wurzel § T1 und T2 sind ihrerseits AVL-Bäume. BALANCEFAKTOR (BF) § Der Wert |h(T2) – h(T1)| wird als Balancefaktor (BF) eines Knotens bezeichnet. Er kann in einem AVL-Baum nur die Werte -1,0, oder 1 (dargestellt durch -, = und +) annehmen. T1 T2 24 Entstehung 14 Informatik II, SS06 AVL-Bäume: Entstehung George Adelson-Velsky *1922 , jetzt in Israel Forscher am ITEP (Moskau Inst. für Theor. u. Exper. Physik) Schachcomputer Pionier Gewann 1967 3:1 im Computerschach gegen John McCarthy AVL Bäume sind benannt nach den russischen Mathematikern G.M. Adelson-Velskii und E. M. Landis, die diese schwächere Definition von Ausgeglichenheit eines Baums 1962 aufstellten. G. M. Adelson-Velskii und E. M. Landis, Doklady Nauk SSSR 146, S. 263-266, 1962; Englische Übersetzung in Soviet Math 3, S. 1259-1263 Evgenii Mikhailovich Landis 1921-1997 Diss. 1953, ITEP und Professor der Moskauer Staatsuni. 25 15 Informatik II, SS06 Beispiel AVL-Bäume IBeispiele: ST DAS EIN AVL-BAUM? Mit Angabe der Balancefaktoren 26 Beispiel/2 15 AVL-Bäume Mit Angabe der Balancefaktoren KEIN AVL-Baum 27 Einfügen in AVL-Baum 16 Informatik II, SS06 Einfügen in AVL-Baum Dijkstra = Dahl einfügen Dijkstra Dahl = Einfügen von Dahl: Neuberechnung des Balancierungsfaktors, AVL Kriterium erfüllt 28 17 matik II, SS06 Einfügen in AVL-Baum Einfügen in AVL-Baum Dahl tra EINFÜGEN = einfügen § Von Bauer Einfügen von Dahl: Neuberechnung des Balancierungsfaktors, AVL Kriterium erfüllt Dijkstra Dahl = ügen von Bauer: Verletzung des AVL Kriteriums hl Dijkstra -2 - Rechtsrotation Dahl Bauer = ch Rechtsrotation: AVL Kriterium wieder erfüllt = Dijkstra = 29 Bauer: Verletzung des AVL Kriteriums Einfügen in AVL-Baum Rechts EINFÜGEN § rotation Von Wirth Dahl Bauer = = Dijkstra = otation: AVL Kriterium wieder erfüllt e Bäume 30 18 Informatik II, SS06 Einfügen in AVL-Baum EINFÜGEN § Von Zuse Dahl Bauer Einfügen in AVL-Baum Einfügen von Wirth: Nach Neuberechnung des Balancierungsfaktors ist AVL-Kriterium weiter erfüllt + Dijkstra + = Wirth = Einfügen von Zuse: Dahl Bauer = Dahl +2 Linksrotation Dijkstra +2 Bauer + Wirth = = Dijkstra = Wirth + Zuse = Zuse = Nach Linksrotation: AVL Kriterium wieder erfüllt M. Wirsing: Balancierte Bäume 31 Einfügen in AVL-Baum EINFÜGEN § Von Hoare 32 Einfügen in AVL-Baum EINFÜGEN § Von Gosling und Naur 33 Einfügen in AVL-Baum EINFÜGEN § Von Turing 34 21 Informatik II, SS06 Anwendungsstelle der Rotation Anwendungsstelle der Rotation Veränderungen der Balancierungsfaktoren geschehen ausschließlich auf dem Pfad von der Wurzel zur Einfügeposition Ausgangspunkt der Rotation ist immer der „tiefste“ Elternknoten mit BF = ±2 (dieser Knoten hatte vorher BF = ±1) Der (auf dem Pfad) darunter liegende Knoten hat BF = ±1 Dahl Bauer = Dijkstra +2 +2 Dahl Dijkstra +2 Bauer Wirth + Zuse = = Wirth -2 Hoare Gosling = Zuse = + Naur + Turing = 35 Allgemeine Rotationstypen in AVL-Bäumen 22 Informatik II, SS06 Rotationstypen Rotationstypen Betrachte ausgehend vom tiefsten Knoten mit BF = 2 den Pfad zur Einfügeposition: RR: Rechts-Rechts Linksrotation LL: Links-Links Rechtsrotation RL: Rechts-Links Doppelrotation „rechts“ LR: Links-Rechts Doppelrotation „links“ L L R R L R R L Rotation ist immer eindeutig bestimmt Jetzt genauere Betrachtungen der einzelnen Typen M. Wirsing: Balancierte Bäume 37 Informatik II, SS06 Typ RR: Linksrotation 23 Typ RR: Linksrotation Wir bezeichnen den „tiefsten“ Knoten mit Strukturverletzung mit A, dessen Kind mit S und den Enkelknoten mit B Bei der Linksrotation hat S den BF „+“ und A den BF „+2“ A +2 T1 T2 S S A + T3 Linksrotation T1 = = T3 T2 38 24 Informatik II, SS06 Typ LL: Rechtsrotation Typ LL: Rechtsrotation Bei der Rechtsrotation hat S den BF „-“ und A den BF „-2“ A S T1 S -2 = A - T3 T2 Rechtsrotation T1 T2 = T3 39 25 Informatik II, SS06 Typ RL: Doppelrotation Typ RL: Doppelrotation Bei der RL-Doppelrotation hat A den BF „+2“, S den BF „-2“, B den BF „+“ oder „-“ . Wir wählen „-“ für den BF von B. A B +2 T1 S B T2 - A - T4 T3 M. Wirsing: Balancierte Bäume RL Doppelrotation T1 = S = T2 T3 + T4 40 Typ RL: Doppelrotation 26 Informatik II, SS06 Typ LR: Doppelrotation Bei der LR-Doppelrotation hat A den BF „-2“, S den BF „+“, B den BF „+“ oder „-“ . Wir wählen „-“ für den BF von B. A S + T1 T2 B B -2 S T4 - T3 LR Doppelrotation T1 = A = T2 T3 + T4 41 27 Informatik II, SS06 Typ LR: Doppelrotation/2 Typ LR: Doppelrotation Variante der LR-Doppelrotation mit Balancefactor „+“ für B A S + T1 T2 B B -2 S T4 + T3 LR Doppelrotation T1 = A = T2 T3 + T4 42 Löschen im AVL-Baum Löschen DAS LÖSCHEN § Erfolgt wie bei den geordneten Suchbäumen und kann (wie das Einfügen) zu Strukturverletzungen führen, die durch Rotationen ausgeglichen werden § Beim Löschen genügt nicht immer eine einzige Rotation oder Doppelrotation. Im schlechtesten Fall muss auf dem Suchpfad bottom-up vom zu entfernenden Schlüssel bis zur Wurzel auf jedem Level eine Rotation bzw. Doppelrotation durchgeführt werden. 44 Take-Home-Message GEORDNETER BINÄRER BAUM § Suchen § Operationen Einfügen und Löschen § Analyse der Eigenschaften des geordneten Baumes BALANCIERTER SUCHBAUM § Einfügen und Löschen § Rotationen 45