3 Spezielle Bäume

Werbung
3
3 Spezielle Bäume
3.1 Spezielle Bäume
3.2 Ausgeglichene binäre Bäume
3.3 AVL-Bäume
3.4 Rot-Schwarz-Bäume
3.5 B-Bäume
3.6 Digitale Bäume
41
3 Spezielle Bäume
Teil III
Spezielle Bäume
Überblick
Spezielle Bäume
Ausgeglichene binäre Bäume
AVL-Bäume
Rot-Schwarz-Bäume
B-Bäume
Digitale Bäume
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–1
Mehr zu Bäumen
◮
ausgeglichene binäre Bäume
◮
◮
Rot-Schwarz-Baum
AVL-Baum
◮
B-Bäume
◮
Digitale Bäume
Saake/Schallehn
42
Algorithmen & Datenstrukturen II
3–2
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Ausgeglichene binäre Bäume
◮
Rot-Schwarz
◮
◮
◮
Ansatz: total ausgegelichen aber nicht binär ist möglich
nicht binären Baum als binären Suchbaum kodieren
AVL
◮
binär und voll ausgeglichen ist nicht möglich
◮
◮
abgeschwächtes Kriterium für Ausgeglichenheit
relativ raffiniertes Ausgleichen beim Einfügen trotzdem
notwendig
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–3
Ausgeglichene Bäume
◮
Wie verhindert man daß Suchbäume entarten??
◮
jeweils ausgleichen ist zu aufwendig:
5
3
5
3
2
7
4
6
7
2
→insert(1)
4
6
→ausgleichen
1
4
2
1
◮
6
3
5
7
... diese Folge zeigt, daß beim Ausgleichen eventuell jeder
Knoten bewegt werden müßte!
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–4
Lösungsideen
◮
abgeschwächtes Kriterium für ausgeglichene Höhe
◮
◮
Beispiel: AVL Bäume
ausgeglichene Höhe, aber unausgeglichener
Verzweigungsgrad
◮
direkte Realisierung als Mehrwegbäume
◮
Kodierung als binäre Bäume
◮
◮
Saake/Schallehn
Beispiel: B-Bäume
Beispiel: Rot-Schwarz-Bäume
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–5
43
3 Spezielle Bäume
AVL-Bäume
◮
◮
AVL für Adelson-Velskii und Landis (russische
Mathematiker)
binäre Suchbäume mit AVL-Kriterium:
für jeden (inneren) Knoten gilt: Höhe des linken und rechten
Teilbaums differieren maximal um 1
◮
Bemerkung: es reicht nicht dieses nur für die Wurzel zu
fordern!
◮
Beide Teilbäume der Wurzel könnten entartet sein.
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–6
AVL-Eigenschaft am Beispiel
7
5
2
1
2
8
4
7
3
1
8
4
5
3
AVL
Saake/Schallehn
nicht AVL
Algorithmen & Datenstrukturen II
3–7
Höhe von AVL-Bäumen
Wieviel Knoten kmin hat ein AVL-Baum der Höhe h mindestens?
◮
rekursive Beziehung:
◮
◮
◮
◮
◮
kmin (0) = 1
kmin (1) = 2
kmin (n) = kmin (n − 1) + kmin (n − 2) + 1
wächst vergleichbar der Fibonacci-Reihe!
exakter Wert (Vorsicht - nicht einfach zu berechnen!):
HAVL (n) ≤ 1.44 log(n + 2) − 0.328
Saake/Schallehn
44
Algorithmen & Datenstrukturen II
3–8
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Einfügen in AVL-Bäume
Einfügen eines Schlüssels mit üblichen Algorithmus
Danach kann die AVL-Eigenschaft verletzt sein:
◮
◮
◮
◮
◮
Balance = left.height − right.height
AVL-Eigenschaft: balance ∈ {−1, 0, +1}
nach Einfügen: balance ∈ {−2, −1, 0, +1, +2}
reparieren mittels Rotation und Doppelrotation
◮
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–9
Fallunterscheidung beim Einfügen
Verletzung der AVL-Eigenschaft tritt ein bei
1. Einfügen in linken Teilbaum des linken Kindes
2. Einfügen in rechten Teilbaum des linken Kindes
3. Einfügen in linken Teilbaum des rechten Kindes
4. Einfügen in rechten Teilbaum des rechten Kindes
1 und 4 sowie 2 und 3 sind symmetrische Problemfälle
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–10
Einfache Rotation
+2
0
k2
k1
0
+1
k2
k1
Z
X
Z
Y
Y
X
Rotation mit linkem Kind nach rechts, analoge Operation nach
links (spiegelbildlich)
Saake/Schallehn
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–11
45
3 Spezielle Bäume
Doppelrotation
0
+2
k2
k3
-1
0 / +1
k1
0 / -1
k1
k3
*
k2
D
A
A
B
B
C
D
C
Doppelrotation mit linkem Kind nach rechts, analoge Operation
nach links (spiegelbildlich)
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–12
Rotationen am Beispiel
insert 3, 2, 1
→ einfache Rotation nach rechts (2,3)
insert 4, 5
→ einfache Rotation nach links (4,3)
insert 6
→ einfache Rotation (Wurzel) nach links (4,2)
insert 7
→ einfache Rotation nach links (6,5)
insert 16, 15
→ Doppelrotation nach links (7,15,16)
insert 13 + 12 + 11 + 10
→ jeweils einfache Rotationen
insert 8, 9
→ Doppelrotation nach rechts
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–13
Beispielrotationen (gesamt)
3
2
3
1
3
R
3
4
2
2
2
1
2
3
1
3
1
5
L
2
1
1
3
4
6
2
4
1
3
4
R
2
2
4
5
3
1
5
R
4
2
1
5
16
4
2
6
3
5
6
3
6
5
7
4
1
4
6
2
6
3
1
7
5
3
5
15
DR
4
6
2
1
3
5
7
16
7
4
6
2
7
1
16
3
15
5
7
16
15
Saake/Schallehn
46
Algorithmen & Datenstrukturen II
3–14
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Beispielrotationen I
3
2
3
1
3
R
3
2
2
4
2
1
2
3
1
3
1
5
L
2
1
2
1
3
4
6
4
2
1
3
4
R
5
4
2
4
3
1
5
5
6
3
6
5
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–15
Beispielrotationen II
7
R
4
2
1
5
6
3
16
4
2
1
3
4
2
6
1
7
5
6
3
7
5
16
7
15
DR
4
2
1
6
3
5
4
2
7
1
6
3
16
15
5
7
16
15
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–16
Rotationen in Einzelfällen
◮
Verletzung der AVL-Eigenschaft tritt ein bei
◮
◮
◮
◮
Einfügen in linken Teilbaum des linken Kindes
→ Rotation mit linkem Kind
Einfügen in rechten Teilbaum des linken Kindes
→ Doppelrotation mit linkem Kind
Einfügen in linken Teilbaum des rechten Kindes
→ Doppelrotation mit rechtem Kind
Einfügen in rechten Teilbaum des rechten Kindes
→ Rotation mit rechtem Kind
Saake/Schallehn
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–17
47
3 Spezielle Bäume
2-3-4-Bäume und Rot-Schwarz-Bäume
◮
Idee: ausgeglichene Bäume mit variablen
Verzweigungsgrad
◮
Ausgeglichenheit wird durch Einfügeoperation gewähleistet
◮
Implementierung durch Binärbäume
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–18
2-3-4-Bäume
1 2 4
5
8
6
7
9
neben binären Knoten (2-Knoten) auch 3-Knoten und 4-Knoten
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–19
Operationen in 2-3-4-Bäume
◮
◮
Suche analog zu binären Suchbäumen
Einfügen:
◮
◮
◮
◮
◮
erfolglose Suche liefert Blattknoten b
ist b ein 2- oder 3-Knoten: Einfügen
ist b ein 4-Knoten: Aufteilen (“split”), mittleres Element nach
oben ziehen
Splitten kann sich bis zur Wurzel fortpflanzen! (bottom-up)
Alternativ: Beim Einfügen werden vorsorglich alle 4-Knoten
auf dem Pfad gesplittet (top-down)
Saake/Schallehn
48
Algorithmen & Datenstrukturen II
3–20
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Binäre Repräsentation von 2-3-4-Bäumen
Rot-Schwarz-Bäume (red-black, kurz RB-Bäume)
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–21
2-3-4-Bäume als RB-Bäume
Rot-Schwarz-Bäume sind binäre Suchbäume mit
1. Jeder Knoten ist entweder rot oder schwarz.
2. Jeder Blattknoten (Null-Knoten) ist per Definition schwarz.
3. Die Kinder jedes roten Knotens sind schwarz.
4. Für jeden Knoten k gilt: Jeder Pfad von k zu einem Blatt
enthält die gleiche Anzahl schwarze Knoten.
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–22
Einfügen in RB-Bäumen
◮
Splitten der 4-Knoten : top-down, nichtrekursiv
◮
zwei Hauptfälle unterscheiden
1. der 4-Knoten hängt an einem 2-Knoten
2. der 4-Knoten hängt an einem 3-Knoten
Unterfälle:
◮
◮
Saake/Schallehn
Teilbaum hängt links oder rechts
Teilbaum hängt in der Mitte
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–23
49
3 Spezielle Bäume
Splitten im RB-Baum: Fall 1
p
p
Umfärben
n
x
n
y
x
y
4-Knoten an 2-Knoten
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–24
Splitten im RB-Baum: Fall 2a
Umfärben
g
p
v
p
w
n
w
n
y
x
g
v
y
x
Rotation
p
g
n
x
y
v
w
4-Knoten unter 3-Knoten links oder rechts
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–25
Splitten im RB-Baum: Fall 2b
g
w
w
g
Rotation
y
50
n
g
p
w
x
y
v
x
4-Knoten unter 3-Knoten mittig
falsch im Buch !
Saake/Schallehn
y
Rotation
v
n
v
n
x
y
x
w
p
v
n
p
g
Umfärben
p
Algorithmen & Datenstrukturen II
3–26
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Beispiel: Einfügen im RB-Baum I
great
7
4
grand
14
parent
2
5
1
6
3
15
9
8
11
10
Saake/Schallehn
node
12
Algorithmen & Datenstrukturen II
3–27
Beispiel: Einfügen im RB-Baum II
(1) Umfärben
& Rotieren
node
parent
8
grand
14
11
parent
15
11
9
(2) Rotieren
& Umfärben
10
12
(3) Einfügen
10
Saake/Schallehn
14 grand
9
8
12
node
Algorithmen & Datenstrukturen II
15
13
3–28
B-Bäume
Idee: Baumhöhe vollständig ausgeglichen, aber
Verzweigungsgrad variiert
◮
◮
Ausgangspunkt: ausgeglichener, balancierter Suchbaum
Ausgeglichen oder balanciert: alle Pfade von der Wurzel zu
den Blättern des Baumes gleich lang
◮
mehrere Zugriffsattributwerte auf einer Seite
◮
Mehrweg-Bäume
Saake/Schallehn
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–29
51
3 Spezielle Bäume
Prinzip des B-Baumes
◮
B-Baum von Bayer und McCreight
◮
dynamischer, balancierter Suchbaum
◮
B für balanciert, breit, buschig, Bayer, NICHT: binär
Mehrwegebaum wäre völlig ausgeglichen, wenn
1. alle Wege von der Wurzel bis zu den Blättern gleich lang
2. jeder Knoten gleich viele Einträge
vollständiges Ausgleichen wäre zu aufwendig, deshalb
B-Baum-Kriterium:
Jede Seite außer der Wurzelseite enthält zwischen m und 2m
Schlüsselwerte
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–30
Eigenschaften eines B-Baumes
◮
◮
◮
◮
m heißt Ordnung des B-Baums
i Schlüsselwerte (m ≤ i ≤ 2m) im inneren Knoten → i + 1
Unterbäume
Höhe des B-Baums bei minimaler Füllung: logm (n)
n Datensätze ⇒ in logm (n) Seitenzugriffen von der Wurzel
zum Blatt
Vorsicht: in einigen Büchern wird als Ordnung der maximale
Verzweigungsgrad bezeichnet, also hier 2m + 1!
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–31
Definition B-Baum
B-Baum der Ordnung m:
1. Jede Seite enthält höchstens 2m Elemente.
2. Jede Seite, außer der Wurzelseite, enthält mindestens m
Elemente.
3. Jede Seite ist entweder eine Blattseite ohne Nachfolger
oder hat i + 1 Nachfolger, falls i die Anzahl ihrer Elemente
ist.
4. Alle Blattseiten liegen auf der gleichen Stufe.
Saake/Schallehn
52
Algorithmen & Datenstrukturen II
3–32
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Einfügen in einen B-Baum: Ein Beispiel
◮
◮
Buchstaben des Wortes “ALGORITHMUS” der Reihe nach
in einen B-Baum der Ordnung 1 einfügen
Tafel !
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–33
Weiteres Beispiel
1
1
Split
2
5
6
5
1
Split
2
5
1
7
3
2
3
1
5
6
4
2
6
1
4
5
5
7
7
1
6
2
6
4
5
7
7
8
6
4
5
3
7
8
4
6
2
5
3
1
5
1
2
5
2
1
8
Split
Saake/Schallehn
2
8
Split
6
4
1
7
2
1
6
2
5
1
7
8
Algorithmen & Datenstrukturen II
3–34
Weiteres Beispiel I
1
1
Split
2
5
6
5
1
Split
2
1
Saake/Schallehn
5
7
1
7
2
5
1
6
2
5
1
6
4
2
6
1
4
5
7
5
2
5
1
8
2
6
1
4
5
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
2
6
7
7
8
3–35
53
3 Spezielle Bäume
Weiteres Beispiel II
3
1
2
3
Split
6
4
5
7
8
1
Split
Saake/Schallehn
6
4
5
3
7
8
4
6
2
3
1
2
5
7
8
Algorithmen & Datenstrukturen II
3–36
Suchen in B-Bäumen
Startend auf Wurzelseite Eintrag im B-Baum ermitteln, der
den gesuchten Schlüsselwert w überdeckt
◮
25
10 20
2
5
7
8
13 14 15 18
30 40
22 24
Saake/Schallehn
26 27 28
32 35 38
41 42 45 46
Algorithmen & Datenstrukturen II
3–37
Einfügen in B-Bäumen
Einfügen eines Wertes w
◮
◮
◮
Blattseite suchen
passende Seite hat n < 2m Elemente → w einsortieren
passende Seite hat n = 2m Elemente → neue Seite
erzeugen
◮
◮
◮
◮
ersten m Werte auf Originalseite
letzten m Werte auf neue Seite
mittleres Element in Vaterknoten nach oben
eventuell dieser Prozeß rekursiv bis zur Wurzel
◮
B-Bäume wachsen an der Wurzel!
Saake/Schallehn
54
Algorithmen & Datenstrukturen II
3–38
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Löschen in B-Bäumen
Problem: bei weniger als m Elementen auf Seite: Unterlauf
◮
◮
◮
entsprechende Seite suchen
w auf Blattseite gespeichert
⇒ Wert löschen, eventuell Unterlauf behandeln
w nicht auf Blattseite gespeichert ⇒
◮
◮
◮
Wert löschen
durch lexikographisch nächstkleineres Element von einer
Blattseite ersetzen
eventuell auf Blattseite Unterlauf behandeln
analog Löschen in klassischen Suchbaum!
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–39
Löschen in B-Bäumen: Unterlauf
Unterlaufbehandlung
◮
◮
Ausgleichen mit einer benachbarten Seite (benachbarte
Seite hat n Elemente mit n > m)
oder
◮
◮
◮
Zusammenlegen zweier Seiten zu einer (Nachbarseite hat
n = m Elemente)
das passende “mittlere” Element vom Vaterknoten dazu
in Vaterknoten eventuell (rekursiv) Unterlauf behandeln
→ B-Bäume schrumpfen an der Wurzel!
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–40
Komplexität der Operationen
◮
◮
◮
Aufwand beim Einfügen, Suchen und Löschen im B-Baum
immer O(logm (n)) Operationen
entspricht genau der “Höhe” des Baumes
beliebt für sehr große Datenbestände (mit großer
Knotengröße):
◮
◮
◮
Konkret : Seiten der Größe 4 KB, Zugriffsattributwert 32
Bytes, 8-Byte-Zeiger: zwischen 50 und 100 Indexeinträge
pro Seite; Ordnung dieses B-Baumes 50
1.000.000 Datensätze: log50 (1.000.000) = 4 Seitenzugriffe
im schlechtesten Fall
optimiert Anzahl von der Festplatte in den Hauptspeicher
zu transferierenden Blöcke!
Saake/Schallehn
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–41
55
3 Spezielle Bäume
Beispiel für Einfügen und Löschen im B-Baum
Einfügen des Elementes 22; Löschen von 22
20
7
10 15 18
26 30 35 40
20 30
7
10 15 18
Saake/Schallehn
22 26
35 40
Algorithmen & Datenstrukturen II
3–42
Praktischer Einsatz der vorgestellten Verfahren
◮
◮
AVL in Ausbildung und Lehrbüchern
Rot-Schwarz-Bäume: Implementierung von Sets und Maps
in Java-Bibliothek
http://java.sun.com/j2se/1.5.0/docs/api/java/util/TreeMap.html
◮
B-Bäume “überall im Einsatz” (einfache
Einfüge-Algorithmen; Knotengröße an Seitengröße von
Hintergrundspeichern optimal anpaßbar)
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–43
Digitale Bäume
◮
digitale Bäume
◮
◮
◮
spezielle (Mehrweg-) Suchbäume
feste Verzweigung unabhängig von gespeicherten
Schlüsseln
nur für Datentypen bei denen eine derartige feste
Verzweigung sinnvoll ist
◮
◮
‘digital’ von ‘Finger’ (10 Finger → Digitalbaum für
numerische Zeichenketten)
Saake/Schallehn
56
insbesondere: Zeichenketten über festem Alphabet,
Verzweigung nach jeweils erstem Buchstaben
Algorithmen & Datenstrukturen II
3–44
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Digital- und Präfixbäume
◮
◮
◮
B-Bäume: Probleme bei variabel langen Zeichenketten als
Schlüssel
Lösung: Digital- oder Präfixbäume
Digitalbäume indexieren (fest) die Buchstaben des
zugrundeliegenden Alphabets
◮
◮
◮
können dafür unausgeglichen werden
Beispiele: Tries, Patricia-Bäume
Präfixbäume indexieren Präfixe von Zeichenketten
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–45
Tries
von “Information Retrieval”, aber wie try gesprochen
...
◮
E
H
L
Hellhof
U
Heuer
Jagellowsk
J
Korn
K
A
...
Lansen
L
O
U
Saake/Schallehn
E
Loeser
T
Lottermann
Ludwich
Algorithmen & Datenstrukturen II
3–46
TRIE Knoten
A B C D E
F
.....
A B C D E
Saake/Schallehn
F
W X Y
.....
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
Z
W X Y
Z
3–47
57
3 Spezielle Bäume
Probleme mit Tries
◮
Probleme bei Tries:
◮
◮
◮
◮
lange gemeinsame Teilworte
nicht vorhandene Buchstaben und
Buchstabenkombinationen
möglicherweise fast leere Knoten
sehr unausgeglichene Bäume
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–48
Patricia-Bäume
◮
◮
◮
◮
Tries: Probleme beispielsweise bei künstlichen Schlüsseln
(Teilekennzahlen), Pfadnamen, URLs (lange gemeinsame
Teilworte), Bitfolgen
Lösung: Practical Algorithm To Retrieve Information Coded
In Alphanumeric (Patricia)
Prinzip: Überspringen von Teilworten
Problem (siehe Beispiel): Finden des Begriffs
Datenbanksprache bei Suchbegriff Triebwerksperre
Saake/Schallehn
Algorithmen & Datenstrukturen II
3–49
Patricia-Baum und Trie im Vergleich
a
Data Base
3
e
Datenbankmodelle
m
5
s
u
p
Datenbanksprache
y
Datenbanksystem
0
Datum
D a
t
a
Data Base
e n
m
b
a
u
58
Datenbankmodell
k
s
Datum
Saake/Schallehn
n
p
y
Datenbanksprache
Datenbanksystem
Algorithmen & Datenstrukturen II
3–50
Uni Magdeburg, WS 2005/06
3
3 Spezielle Bäume
Präfix-Bäume
a
Dat 3
Base
e
m
nbank
odelle
5
u
p
s
rache
0
m
Saake/Schallehn
y
stem
Algorithmen & Datenstrukturen II
3–51
Bemerkungen zu digitalen Bäumen
◮
◮
◮
nur bei Gleichverteilung ungefähr ausgeglichen (welcher
Vorname beginnt mit dem Buchstaben ‘Q’?)
Einsatz insbesondere für Information Retrieval,
Textindizierung (Suchmaschinen), Bitfolgen
Alternative: ‘Präfix-B-Bäume’
◮
◮
innere Knoten haben zur Verzweigung nur die notwendigen
Präfixe als Schlüsseleinträge
echte Datensätze nur in den Blättern
Saake/Schallehn
Algorithmen & Datenstrukturen II
Uni Magdeburg, WS 2005/06
3–52
59
Herunterladen