Datenstrukturen und Algorithmen Wiederholung Balancierte Bäume

Werbung
Wiederholung
• Binärbäume sind Bäume der Ordnung 2 (jeder Knoten hat
maximal 2 Söhne)
• Sortierte Binärbäume (binäre Suchbäume) sind in
symmetrischer Reihenfolge sortiert
• Dynamische Lösung des Wörterbuchproblems
Datenstrukturen und
Algorithmen
– Einfügen (Aufbau), Entfernen, Suchen, Minimum, Maximum,
Vorgänger, Nachfolger
– O(h) Zeit, h … Baumhöhe
– Vollständiger Binärbaum: h=O(log n); entarteter Baum: h=Θ(n)
VO 708.031
• Online Update-Operationen können einen Binärbaum
entarten lassen
17.12.2009
[email protected]
1
17.12.2009
Balancierte Bäume
Gewichtsbalanciert:
g(B) = #Blätter von B
Für jeden Knoten gilt:
h( Blinks ) − h( Brechts ) ≤ k
1 g ( Blinks )
≤
≤α
α g ( Brechts )
z.B.: AVL-Bäume
• Balancierung ist leichter aufrechtzuerhalten, wenn die Werte
blattorientiert statt knotenorientiert gespeichert werden.
Innere Knoten enthalten nur Hilfsinformationen.
• Definition:
Ein (2-4)-Baum ist ein Baum mit folgenden Eigenschaften:
(1)
(2)
(3)
(4)
(5)
BB-Bäume (bounded balance)
Mehrwegbäume:
Alle Blätter haben dieselbe Tiefe,
aber Grad der Knoten ist variabel
(a-b)-Bäume, B-Bäume, Bruder-Bäume
17.12.2009
[email protected]
2
(2-4)-Bäume
• Techniken zum Erhalten einer logarithmischen Baumhöhe:
Höhenbalanciert:
h(B) = Höhe von B
Für jeden Knoten gilt:
[email protected]
Alle Äste sind gleich lang.
Die max. Anzahl der Söhne eines Knotens ist gleich 4.
Innere Knoten haben ≥ 2 Söhne.
Die Blätter enthalten v.l.n.r. die Werte aufsteigend sortiert.
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 iten Sohnes von links.
2 ≤ α(k) ≤ 4 … Anzahl der Söhne des Knotens k
3
17.12.2009
[email protected]
4
(2-4)-Bäume
• Beispiel:
(2-4)-Bäume
Innere Knoten speichern
Hilfsinformationen
(Max. der linken t-1 Unterbäume)
4,6
• Suchen: pro Knoten wird der relevante Teilbaum in O(t) = O(1)
Zeit pro Knoten selektiert ⇒ O(h) = Θ(log n) Zeit
8
1,2
1
Höhe h=Θ(log n)
17.12.2009
2
5
4
5
6
10
11
24
2
2
Daten werden in den Blättern gespeichert
(v.l.n.r. aufsteigend sortiert)
[email protected]
5
17.12.2009
(2-4)-Bäume
4
5
12
10
5
8
10
11
12
24
24
31
[email protected]
6
• Entfernen: Suchen, Blatt von Knoten k entfernen
– α(k) ≤ 4: Resultierender Baum ist wieder ein (2-4)-Baum
– α(k) = 5: Resultierender 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) = Θ(log n) Zeit
[email protected]
4
(2-4)-Bäume
• Einfügen: Suchen, Blatt an Knoten k anhängen
17.12.2009
11
10,11
– α(k) ≥ 2: Resultierender Baum ist wieder ein (2-4)-Baum
– α(k) = 1: Resultierender 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) = Θ(log n) Zeit
7
17.12.2009
[email protected]
8
(2-4)-Bäume
• Der (2-4)-Baum ist eine Datenstruktur, die das
Wörterbuchproblem (Suchen, Einfügen, Entfernen) auf einer
Menge von n Elementen in O(log n) Zeit pro Operation löst,
und O(n) Speicher belegt.
• Einfügen und Entfernen erfordert Umstrukturierungen
(Spalten, Stehlen, Verschmelzen)
• Bereits vorgenommene Umstrukturierungen amortisieren
sich jedoch später
• Amortisierte Analyse: Die Laufzeit von m Einfüge-/EntferneOperationen ist O(m), statt O(m*log n)
17.12.2009
[email protected]
Danke für Ihre Aufmerksamkeit!
Bis zum nächsten Mal.
(Donnerstag, 14. Jan. 2010, 11:15, i13)
9
17.12.2009
[email protected]
10
Herunterladen