O( log n)

Werbung
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
Herunterladen