Datenstrukturen und Algorithmen VO 708.031 10.01.2013 [email protected] 1 WH‐Binärbäume • Jeder Knoten hat maximal zwei Nachfolger • Alle Werte links der Wurzel sind kleiner als diese (bzw. alle Werte rechts sind größer) 13.12.2012 [email protected] 2 WH‐SorMerte Binärbäume • Zusammenfassung: – – – – – – – Minimum Maximum Vorgänger Nachfolger Einfügen Löschen Suchen Alle OperaMonen in O(h) Zeit h … Baumhöhe • Vorteil: dynamische Lösung des Wörterbuchproblems • Nachteil: Zeiten bis zu Θ(n) Vollständiger Binärbaum: h=O(log n); entarteter Baum: h=Θ(n) 13.12.2012 [email protected] 3 Beispiel: Au@au eines sorMerten Binärbaumes • durch wiederholtes Einfügen (⇒ natürliche Bäume) • Binärbaum hängt von der Reihenfolge der Elemente ab T(n) = O(n*h) = Θ(n2), wenn h = Θ(n) Einige wenige Reihenfolgen liefern entartete Bäume (= Listen) Fügt man randomisiert ein, ist E[h] klein 13.12.2012 [email protected] 4 WH‐Einfügen • Einfügen: Fügt den Wert w in den Binärbaum B ein Simuliere eine Suche nach w, bis zu einer freien Stelle (x=nil) Dort fügen wir das Element ein (als Sohn von y) Baum B war leer Laufzeit: O(h) 13.12.2012 [email protected] 5 Balancierte Bäume • Bedingungen zum Erhalten einer logarithmischen Baumhöhe: Höhenbedingung: h(B) = Höhe von B Für jeden Knoten gilt: h( B ) − h( B links rechts ) ≤ k z.B.: AVL‐Bäume (1962) Gewichtsbedingung: g(B) = #Bläker von B Für jeden Knoten gilt: 1 g ( Blinks ) ≤ ≤α α g ( Brechts ) BB‐Bäume (bounded balance) Strukturbedingung: Alle Bläker haben dieselbe Tiefe, aber Ordnung der Knoten (# Söhne) ist variabel (a‐b)‐Bäume, B‐Bäume, Bruder‐Bäume 10.01.2013 [email protected] 6 (2‐4)‐Bäume • Balancierung ist leichter aufrechtzuerhalten, wenn die Werte bla%orien+ert stak knotenorienMert gespeichert werden. Innere Knoten enthalten nur HilfsinformaMonen. • DefiniOon: Ein (2‐4)‐Baum ist ein Baum mit folgenden Eigenschamen: (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äker enthalten v.l.n.r. die Werte aufsteigend sorMert. (5) Jeder innere Knoten mit t Söhnen (2 ≤ t ≤ 4) speichert z.B. t‐1 HilfsinformaMonen x1, …, xt‐1, wobei xi = größter Wert im Teilbaum des i‐ ten Sohnes von links. 2 ≤ α(k) ≤ 4 … Anzahl der Söhne des Knotens k 10.01.2013 [email protected] 7 (2‐4)‐Bäume • Beispiel: Innere Knoten speichern HilfsinformaMonen (z.B.: Max. der linken t‐1 Unterbäume) 4,6 1,2 1 2 Höhe h=Θ(log n) 10.01.2013 10,11 5 4 5 6 10 11 24 Daten werden in den Bläkern gespeichert (v.l.n.r. aufsteigend sorMert) [email protected] 8 (2‐4)‐Bäume • Suchen: pro Knoten wird der relevante Teilbaum in O(t) = O(1) Zeit pro Knoten selekMert ⇒ Θ(h) = Θ(log n) Zeit 8 2 2 10.01.2013 4 4 10 5 5 11 8 10 12 11 [email protected] 12 24 24 31 9 (2‐4)‐Bäume • Einfügen: Suchen, Blak an Knoten k anhängen – α(k) ≤ 4: ResulMerender Baum ist wieder ein (2‐4)‐Baum – α(k) = 5: ResulMerender Baum ist kein (2‐4)‐Baum SPALTEN von k: Gib k einen Bruder k' rechts von k. Hänge die 2 rechtesten Söhne von k auf k' um ⇒ α(k) = 3, α(k') = 2 SPALTEN muss evtl. für übergeordnete Knoten wiederholt werden (Wurzel wird Sohn einer neuen Wurzel mit 2 Söhnen) ⇒ O(h) = O(log n) Zeit 10.01.2013 [email protected] 10 (2‐4)‐Bäume • EnUernen: Suchen, Blak von Knoten k enternen – α(k) ≥ 2: ResulMerender Baum ist wieder ein (2‐4)‐Baum – α(k) = 1: ResulMerender Baum ist kein (2‐4)‐Baum Sei k' ein direkter Bruder von k: – α(k') ≥ 3: STEHLEN eines Sohnes von k' ⇒ α(k) = 2, α(k') ≥ 2 – α(k') =2: VERSCHMELZEN von k mit k' ⇒ α(k) = 3 evtl. für übergeordnete Knoten wiederholen (Wurzel wird durch einzigen Sohn ersetzt) ⇒ O(h) = O(log n) Zeit 10.01.2013 [email protected] 11 Zusammenfassung (2‐4)‐Bäume • Der (2‐4)‐Baum ist eine Datenstruktur, die das Wörterbuchproblem (Suchen, Einfügen, Enternen) auf einer Menge von n Elementen in O(log n) Zeit pro OperaMon löst, und O(n) Speicher belegt. • Einfügen und Enternen erfordert Umstrukturierungen (Spalten, Stehlen, Verschmelzen) • Bereits vorgenommene Umstrukturierungen amorOsieren sich jedoch später 10.01.2013 [email protected] 12 Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. (Donnerstag, 17. Jan. 2013, 11:15, i13) 10.01.2013 [email protected] 13