(2‐4)‐Baum

Werbung
Datenstrukturen und Algorithmen VO 708.031 19.12.2013 [email protected] 1 Struktur der Vorlesung unterteilt in 5 Kapitel 1.  Einführung u. Grundlagen 2.  Algorithmische Grundprinzipien 3.  SorHerverfahren 4.  Suchen in linearen Feldern 5.  Suchen in Bäumen 19.12.2013 [email protected] 2 5. Suchen in Bäumen • 
• 
• 
• 
Bäume als Datenstruktur WH ‐ Suchen in Binärbäumen Balancierte Bäume (2‐4 Bäume) Rot/Schwarz Bäume •  Spezielle Kapitel aus D&A 19.12.2013 [email protected] 3 WH ‐ Binärbäume •  Jeder Knoten hat maximal zwei Nachfolger ExisHert ein Sohn‐ oder ein Vaterknoten nicht, wird nil zurückgeliefert 19.12.2013 [email protected] 4 WH ‐ Binärbäume •  Auslesereihenfolge der Knoten: –  Symmetrische Reihenfolge (SR, inorder): linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR Aufruf: SR(w) w … Wurzel T(n) = Θ(n) Beispiel: /
*
+
2
19.12.2013 +
3
4
3
Infix‐Nota/on 5
[email protected] 5 WH ‐ Binärbäume •  Reihenfolge der Knoten: –  Hauptreihenfolge (HR, preorder): Wurzel, linker Teilbaum in HR, rechter Teilbaum in HR –  Nebenreihenfolge (NR, postorder): linker Teilbaum in NR, rechter Teilbaum in NR, Wurzel /
*
+
(HR) +
3
4
3
(NR) 2
19.12.2013 5
Pos4ix‐Nota/on [email protected] 6 WH ‐ SorHerte Binärbäume •  Binäre Suchbäume sind in symmetrischer Reihenfolge sorHert Knoten im linken Teilbaum ≤ Wurzel ≤ Knoten im rechten Teilbaum 19.12.2013 [email protected] 7 WH ‐ SorHerte Binärbäume •  Suchen (binäre Suche): b … gesuchter Wert k … Wurzel des Teilbaums Aufruf: SUCHE(b, w) Suchzeit: O(h) h … Höhe des Baumes (= Länge des längsten Astes) 19.12.2013 [email protected] 8 WH ‐ SorHerte Binärbäume •  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) 19.12.2013 [email protected] 9 SorHerte Binärbäume können entarten! •  AuIau eines sorHerten 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 19.12.2013 [email protected] 10 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)
11.12.2008 teuer!
7
4
5
helmut.hauser@IGI Zusammenfassung ‐ SorHerte Binärbäume •  Zusammenfassung: – 
– 
– 
– 
– 
– 
– 
Minimum Maximum Vorgänger Nachfolger Einfügen Löschen Suchen Alle OperaHonen in O(h) Zeit h … Baumhöhe •  Vorteil: dynamische Lösung des Wörterbuchproblems •  Nachteil: Zeiten bis zu Θ(n) wenn Baum entartet ist, Bsp.: online Elemente hinzufügen 19.12.2013 [email protected] 12 5. Suchen in Bäumen • 
• 
• 
• 
Bäume als Datenstruktur Suchen in Binärbäumen Balancierte Bäume (2‐4 Bäume) Rot/Schwarz Bäume •  Spezielle Kapitel aus D&A 19.12.2013 [email protected] 13 Balancierte Bäume •  Bedingungen zum Erhalten einer logarithmischen Baumhöhe: 1. 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) 2. Gewichtsbedingung: g(B) = #Bläper von B Für jeden Knoten gilt: 1
g ( Blinks )
≤
≤α
α g ( Brechts )
BB‐Bäume (bounded balance) 3. Strukturbedingung: Alle Bläper haben dieselbe Tiefe, aber Ordnung der Knoten (# Söhne) ist variabel (a‐b)‐Bäume, B‐Bäume, Bruder‐Bäume 19.12.2013 [email protected] 14 (2‐4)‐Bäume •  Balancierung ist leichter aufrechtzuerhalten, wenn die Werte bla9orien:ert stap knotenorienHert gespeichert werden. Innere Knoten enthalten nur HilfsinformaHonen. •  Ein (2‐4)‐Baum ist ein Baum mit folgenden Eigenschaqen: (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äper enthalten v.l.n.r. die Werte aufsteigend sorHert. (5) Jeder innere Knoten mit t Söhnen (2 ≤ t ≤ 4) speichert z.B. t‐1 HilfsinformaHonen 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 19.12.2013 [email protected] 15 (2‐4)‐Bäume •  Beispiel: Innere Knoten speichern HilfsinformaHonen (z.B.: Max. der linken t‐1 Unterbäume) 4,6
1,2
1
2
Höhe h=Θ(log n) 19.12.2013 10,11
5
4
5
6
10
11
24
Daten werden in den Bläpern gespeichert (v.l.n.r. aufsteigend sorHert) [email protected] 16 (2‐4)‐Bäume •  Suchen: pro Knoten wird der relevante Teilbaum in O(t) = O(1) Zeit pro Knoten selekHert ⇒ Θ(h) = Θ(log n) Zeit 8
2
2
19.12.2013 4
4
10
5
5
11
8
10
12
11
[email protected] 12
24
24
31
17 (2‐4)‐Bäume •  Einfügen: Suchen, Blap an Knoten k anhängen –  α(k) ≤ 4: ResulHerender Baum ist wieder ein (2‐4)‐Baum –  α(k) = 5: ResulHerender 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 19.12.2013 [email protected] 18 (2‐4)‐Bäume •  EnYernen: Suchen, Blap von Knoten k enwernen –  α(k) ≥ 2: ResulHerender Baum ist wieder ein (2‐4)‐Baum –  α(k) = 1: ResulHerender 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 19.12.2013 [email protected] 19 Zusammenfassung (2‐4)‐Bäume •  Der (2‐4)‐Baum ist eine Datenstruktur, die das Wörterbuchproblem (Suchen, Einfügen, Enwernen) auf einer Menge von n Elementen in O(log n) Zeit pro OperaHon löst, und O(n) Speicher belegt. •  Einfügen und Enwernen erfordert Umstrukturierungen (Spalten, Stehlen, Verschmelzen) •  Bereits vorgenommene Umstrukturierungen amor]sieren sich jedoch später 19.12.2013 [email protected] 20 Danke für Ihre Aufmerksamkeit! Schöne Weihnachten und bis zum nächsten Mal. (Donnerstag, 9. Jan. 2014, 11:15, i13) 19.12.2013 [email protected] 21 
Herunterladen