Datenstrukturen & Algorithmen VO 708.031 11. Vorlesung, am 24.Jan. 2008 24.01.2008 helmut.hauser@IGI Binärbäume - Wiederholung Binärbäume sind spezielle Bäume, welcher maximal 2 Söhne haben. Knotenreihenfolgen (Symmetrische, Haupt- und Nebenreihenfolge) Æ geordneter Binärbaum möglich (Nachfolgerrelation) Implementierbare Funktionen: Alle Funktionen: O(„Baumhöhe“) 24.01.2008 • Minimum • Maximum • Vorgänger • Nachfolger • Einfügen (Aufbau) • Löschen • Suchen helmut.hauser@IGI Wörterbuchproblem Binärbäume - online Durch Update-Operation (Löschen, Einfügen) 1 9 Höhe ≠ log(n) 8 Entartet! 3 Höhe = O(n) Umstrukturieren O(n) (fast) ausgeglichen = gut, da minimale Höhe = O( log n) 24.01.2008 teuer! 7 4 5 helmut.hauser@IGI Zur Erhaltung von: Höhe=log(n) Techniken zur Erhaltung einer logarithmischen Baumhöhe Höhenbalanciert Gewichtsbalanciert h(B)=Höhe des Baums g(B) = Anzahl der Blätter Für jeden Knoten k gilt: Für jeden Knoten k gilt: |h(Blinks)-h(Brechts)|≤k 1/α ≤ g(Blinks)/g(Brechts)| ≤ α Bsp: AVL-Bäume (k=1) BB-Bäume (bounded balance) Mehrwegbäume 24.01.2008 helmut.hauser@IGI Definition: (2-4)-Bäume Ein (2-4)-Baum ist ein Baum mit folgenden Eigenschaften: (1) Alle Äste sind gleich lang. (2) Die max. Anzahl der Söhne eines Knotens ist gleich 4. (3) Innere Knoten haben ≥ 2 Söhne. (4) Die Blätter enthalten v.l.n.r. die Werte aufsteigend sortiert. (5) Jeder innere Knoten mit t Söhnen (2 ≤ t ≤ 4) speichert t-1 Hilfsinformationen x1, …, xt-1, wobei xi = größter Wert im Teilbaum des i-ten Sohnes von links. 24.01.2008 helmut.hauser@IGI (2-4)-Bäume Höhe=O(log n) Enthalten nur Hilfsinformationen. 4,6 1,2 1 2 10,11 5 4 5 6 10 11 24 Daten werden in den Blättern gespeichert. 24.01.2008 helmut.hauser@IGI (2-4)-Bäume Wir wollen damit das Wörterbuchproblem lösen: SUCHEN, EINFÜGEN, ENTFERNEN Achtung: Nach den Update-Funktionen (Einfügen, Entfernen) muss wieder ein korrekter 2-4-Baum vorliegen ! Æ Zeitlicher Mehraufwand, der sich aber rentiert Æ Amortisierte Kosten siehe später 24.01.2008 helmut.hauser@IGI (2,4)-Bäume - Suchen 8 2 2 4 4 5 5 11 10 8 10 12 11 12 24 24 Pro Knoten maximal 3 Vergleich Æ O(1) Æ Höhe garantiert Θ(log n) Æ T(n)=Θ(log n) 24.01.2008 helmut.hauser@IGI 31 (2,4)-Bäume - Einfügen Definition: α(k) ist die Ordnung des k-ten Knoten (=Anzahl der Söhne) Zwei Fälle (nach! dem Einfügen): 1.) Falls α(k) ≤ 4 Æ fertig !! 2.) Falls α(k) > 4 Æ Bedingung verletzt Æ SPALTEN v v k k 24.01.2008 v’ helmut.hauser@IGI k’ (2,4)-Bäume - Entfernen Zwei Fälle (nach dem Entfernen): 1.) Falls α(k) ≥ 2 Æ fertig !! 2.) Falls α(k) < 2 Æ Bedingung verletzt (underflow) Æ STEHLEN (wenn α(k‘) ≥ 3) k’ k oder VERSCHMELZEN (α(k‘) = 2) STEHLEN v k’ 24.01.2008 k’ k v k VERSCHMELZEN helmut.hauser@IGI k Analyse der Operationen Wörterbuchproblem 24.01.2008 Suchen: Einfügen: Entfernen: O(log n) O(log n) O(log n) Speicher: O(n) helmut.hauser@IGI Mischbare Warteschlangen Definition: • • • • EINFÜGEN (S,x) MAXIMUM (S) ENTFERNE_MAX (S) MISCHE (S,S‘) Halde Æ 3 Operationen in O(log n) Mischen aber teuer !! Æ O(n) Mit Baum alle Operation Æ O(log n) 24.01.2008 helmut.hauser@IGI Mischbare Warteschlangen 9 3 3 -Unsortierter (2,4)-Baum 9 1 9 - innere Knoten speichert Maximum in seinen Teilbaum und Zeiger darauf 8 5 Maximum trivial Æ in Wurzel O(1) 2 6 8 Entferne Maximum Æ Update der Information O(log n) 8 Einfügen ist Spezialfall von Mischen! 5 3 24.01.2008 helmut.hauser@IGI 8 1 5 2 6 8 Mischbare Warteschlangen Mische (S, S‘): Æ Beides 2-4-Bäume mit der Höhe h und h‘ 1.Fall: h = h‘ 2.Fall: h > h‘ Neue Wurzel = O(1) Check α(v) Æ O(log n)!! v k w’ h’ T 24.01.2008 helmut.hauser@IGI T’ Amortisierte Kosten 2-4-Bäume benötigen zusätzliche Operation, damit sie 2-4-Bäume bleiben und damit garantiert h=O(log n) besitzen. Potentielle Laufzeit: O(m*log(n)) Beobachtung: z.B. nach Spalt-Operation ist der Baum „ausgeglichener“. Æ Investierte Zeit rentiert sich später Æ Amortisierungsanalyse. Durchschnittliche Zeit über alle Operation (in unserem Fall: Einfügen, Löschen) im schlimmsten Fall. 24.01.2008 helmut.hauser@IGI Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. ( Donnerstag, 31.Jan.2008, i13 ) 24.01.2008 helmut.hauser@IGI