Vorlesung 2.5.3

Werbung
2.5 Bäume
2.5.1 Binäre Suchbäume
2.5.2 Optimale Suchbäume
2.5.3 Balancierte Bäume
2.5.4 Skip-Listen
2.5.5 Union-Find-Strukturen
1
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Balancierte Bäume
•  Nachteil bei normalen Suchbäumen:
Worst-case Aufwand ist O(n)
•  Tritt bei degenerierten Bäumen auf
•  Kann durch Balancierung verhindert
werden
•  Problem: Stelle Balance in O(log n)
wieder her
2
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Balancierte Bäume
•  Gewichtsbalance: Für jeden Knoten
unterscheidet sich die Anzahl der
Knoten im linken und rechten Teilbaum
um maximal eins.
•  Höhenbalance: Für jeden Knoten
unterscheidet sich die Höhe des linken
und rechten Teilbaums um maximal
eins.
3
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Balancierte Bäume
•  Zur Erinnerung:
–  Maximale Zahl von Knoten in einem Baum
der Höhe h ist O(2h)
–  Minimale Zahl von Knoten in einem Baum
der Höhe h ist ΩΩ(h)
–  Minimale Zahl von Knoten in einem
balancierten Baum der Höhe h ist ΩΩ(2h/2)
4
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Balancierte Bäume
•  Zur Erinnerung:
–  Minimale Höhe eines Baums mit n Knoten
ist ΩΩ(log n)
–  Maximale Höhe eines Baums mit n Knoten
ist O(n)
–  Maximale Höhe eines balancierten Baums
mit n Knoten ist O(2×log n)=O(log n)
5
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
2.5 Bäume
2.5.1 Binäre Suchbäume
2.5.2 Optimale Suchbäume
2.5.3 Balancierte Bäume
2.5.3.1 AVL-Bäume
2.5.3.2 Rot-Schwarz-Bäume
2.5.3.3 B-Bäume
2.5.4 Skip-Listen
2.5.5 Union-Find-Strukturen
6
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
•  Werden wie normale binäre
Suchbäume behandelt
•  Jeder Knoten speichert sein
Ungleichgewicht (+1,0,−1)
•  Nach Insert() oder Delete()
Wiederherstellung der Balance durch
Rotation
7
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
h
h
8
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
h
h
9
h+1
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Einfache
Rotation
h
10
h
h+1
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Einfache
Rotation
h
11
h
h+1
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Einfache
Rotation
h
12
h
h+1
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
h
h
13
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
h
h+1
14
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
h
h
h
15
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
h
16
h
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
h
17
h
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
h
h
18
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
h
h
19
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
h
h
20
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
Doppelte
Rotation
h
21
h
h
h
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
AVL-Bäume
•  Rotationen müssen ggf. nach oben
propagiert werden
•  Im schlechtesten Fall O(log n)
Rotationen bei Delete()
•  Nur praktikabel, wenn gesamte
Datenstruktur im Hauptspeicher
22
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
2.5 Bäume
2.5.1 Binäre Suchbäume
2.5.2 Optimale Suchbäume
2.5.3 Balancierte Bäume
2.5.3.1 AVL-Bäume
2.5.3.2 Rot-Schwarz-Bäume
2.5.3.3 B-Bäume
2.5.4 Skip-Listen
2.5.5 Union-Find-Strukturen
23
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Binärer Suchbaum, jeder Knoten hat
zwei Söhne oder keinen
•  Rote und schwarze Knoten
•  Re-Balancing durch Rotationen und
Umfärben
24
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Konsistenzregeln
1.  Jeder Knoten ist rot oder schwarz
2.  Die Wurzel ist schwarz
3.  Die Blätter sind schwarz
4.  Die Söhne eines roten Knotens sind
schwarz.
5.  Alle Pfade von einem Knoten zu den
nachfolgenden Blättern haben gleich
viele schwarze Knoten
25
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
7
2
8
1
5
4
9
6
Blätter werden im Folgenden nicht mehr dargestellt.
26
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Eigenschaften
–  Maximales Pfadlängenverhältnis 2:1
–  Pfadlängen Θ(log n)
27
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Lemma:
Die Höhe eines Rot-Schwarz-Baums
mit n inneren Knoten ist höchstens
2×ld(n+1)
28
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Die Zahl der schwarzen Knoten auf
einem (dann jeden) Pfad von einem
Knoten x (ausschließlich) bis zu einem
Blatt (einschließlich) sei bh(x)
29
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
7
bh( 2 ) = 2
1
bh( 5 ) = 1
4
30
8
9
6
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Der Baum unter einem Knoten x enthält
mindestens 2bh(x)−1 innere Knoten
I.A. x ist ein Blatt → 2bh(x)−1=20−1=0
I.V. Die Beh. gelte für alle y mit
height(y) < height(x)
I.S. x sei ein innerer Knoten mit Söhnen x1,x2
➡ bh(x1), bh(x2) ≥ bh(x)−1
➡ der Baum unter x enthält mindestens
(2bh(x)−1−1)+(2bh(x)−1−1)+1 = 2bh(x)−1 innere
Knoten
31
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Es sei h = height(root) die Höhe des Baumes
–  Mindestens die Hälfte der Knoten auf
einem Pfad von der Wurzel zu einem Blatt
müssen schwarz sein.
➡ bh(root) ≥ h ∕ 2
➡ n ≥ 2h/2−1
➡ h ≤ 2×ld(n+1)
32
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
•  Insert(), Delete()
–  Wie bei normalen binären Suchbäumen
mit anschließender Wiederherstellung der
Konsistenzbedingungen
–  Insert() → drei verschiedene Fälle
–  Delete() → vier verschiedene Fälle
–  Pseudo-Code: siehe Cormen et al.
33
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
•  Jeder eingefügte Knoten wird zunächst
rot gefärbt
•  Bei Wiederherstellung durch Umfärben
oder Rotation kann genau eine weitere
Konsistenzverletzung auftreten.
•  Propagiere Modifikation nach oben.
34
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
•  Mögliche Konsistenzverletzungen
–  Neuer Knoten ist Wurzel
–  Neuer Knoten ist Nachfolger eines roten Knotens
•  Fallunterscheidung nach der Farbe des Onkels
•  Konsistenzregeln
1. 
2. 
3. 
4. 
5. 
35
Jeder Knoten ist rot oder schwarz.
Die Wurzel ist schwarz.
Die Blätter sind schwarz.
Die Söhne eines roten Knotens sind schwarz.
Alle Pfade von einem Knoten zu den
nachfolgenden Blättern haben gleich viele
schwarze Knoten.
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Großvater
Vater
X
Onkel
Bruder
Neffen
36
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
7
2
8
1
5
4
37
9
6
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume Insert – Scheme
0
Onkel
up
Rot
Vorgänger schwarz
à nichts zu tun
Schwarz
1 umfärben
Innen
2 Rotation
38
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Außen
3 Rotation
& Umfärben
Rot-Schwarz-Bäume: Insert()
Einfügen zunächst wie bei normalen binären Suchbäumen
7
2
8
1
5
4
9
6
3
39
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 1: Der Onkel ist rot → umfärben und weiter mit
Großvater
7
2
8
1
5
4
9
6
3
40
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 1: Der Onkel ist rot → umfärben und weiter mit
Großvater
7
2
8
1
5
4
9
6
3
41
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 1: Der Onkel ist rot → umfärben und weiter mit
Großvater
7
2
8
1
5
4
9
6
3
42
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 1: Der Onkel ist rot → umfärben und weiter mit
Großvater
7
7
2
8
1
5
4
2
9
43
1
5
6
3
8
4
9
6
3
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
7
2
8
1
5
4
9
6
3
44
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
2
8
1
5
4
9
6
3
45
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
2
8
1
5
4
9
6
3
46
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
2
1
8
5
4
6
9
3
47
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
2
1
8
5
4
6
9
3
48
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
5
2
1
8
6
9
4
3
49
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
5
2
1
8
6
9
4
3
50
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 2: Der Onkel ist schwarz und
ist ein innerer Sohn
→ Rotation nach außen und weiter mit äußeren Sohn (Fall 3)
7
7
2
8
1
5
4
5
9
6
3
51
2
1
8
6
4
3
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
9
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
7
5
2
1
8
6
9
4
3
52
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
7
5
2
1
8
6
9
4
3
53
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
5
2
1
7
6
8
4
3
54
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
9
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
5
2
1
7
6
8
4
3
55
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
9
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
5
2
1
7
4
6
8
3
56
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
9
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
5
2
1
7
4
6
8
3
57
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
9
Rot-Schwarz-Bäume: Insert()
Fall 3: Der Onkel ist schwarz und
ist ein äußerer Sohn
→ Rotation nach innen und umfärben
7
5
2
1
5
8
6
4
2
9
1
7
4
3
3
58
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
6
8
9
Fallunterscheidung Insert()
1.  Onkel ist rot
–  Umfärben, Rekursion nach oben
2.  Sohn < Vater > Großvater oder
Sohn > Vater < Großvater
–  Rotation, weiter mit Fall 3
3.  Sohn < Vater < Großvater oder
Sohn > Vater > Großvater
–  Rotation, Umfärben, Fertig
59
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Aufwand Insert()
•  Suchen der Einfügestelle O(log n)
•  Einfügen O(1)
•  Konsistenzwiederherstellung
–  Umfärbe-Schritte O(log n)
(Schritt vom Enkel zum Großvater)
–  Rotationen O(1) (maximal zwei)
•  Insgesamt: O(log n)
60
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Wie bei normalen binären Suchbäumen
wird der Knoten entweder direkt
gelöscht oder sein Successor wird
gelöscht und der Inhalt wird kopiert.
•  Konsistenzwiederherstellung
–  Wenn der Knoten rot war, ist nichts zu tun
–  Wenn der Knoten schwarz war, gibt es
4 Fälle
61
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Falls der tatsächlich entfernte Knoten
schwarz ist, fehlt auf allen Pfaden
innerhalb des entsprechenden TeilBaums eine schwarze Marke
•  Weise diese schwarze Marke dem
(einen) Nachfolger des gelöschten
Knotens zu. Dadurch wird dieser
schwarz-rot oder doppel-schwarz.
62
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
D
α
B
C
γ
β
63
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
D
α
Succ( A ) =
B
C
γ
β
64
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
D
α
B
C
γ
β
65
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
α
D
B
C
γ
β
66
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
D
B
α
C
γ
β
67
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
Del( A )
B
D
α
C
γ
β
68
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
B
D
α
C
γ
β
69
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
B
D
α
C
β
70
γ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
B
D
α
C
β
71
γ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Erinnerung
B
D
α
C
β
C
72
oder
γ
C
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
•  Umfärben und Rotationen
–  Erhalte die Zahl schwarzer Marken der
Sub-Bäume
•  Abbruchbedingungen
–  Ein schwarz-roter Knoten wird schwarz
gefärbt
–  Ein Wurzelknoten wird erreicht
(doppel-schwarz kann einfach wegfallen,
da die Wurzel auf allen Pfaden liegt)
73
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume – Delete - Scheme
Bruder
Up
74
0
rot
1
schwarz
Rot. und umfärben
Neffen
beide
schwarz
2
innen rot,
außen schwarz
3
Umfärben
Rot. und umfärben
: rot-­‐schwarz à schwarz (nichts weiter zu tun) außen rot
4
Rot. und umfärben
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
B
A
D
C
α
β
γ
75
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
B
A
D
C
α
β
γ
76
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
B
D
A
α
77
C
β
γ
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
B
D
A
α
78
C
β
γ
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
D
B
E
A
C
ε
α
79
β
γ
ζ
δ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
D
B
E
A
C
ε
α
80
β
γ
ζ
δ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
Fall 1: Der Bruder ist rot → Rotation nach links
und umfärben
B
D
A
α
D
B
C
β
γ
E
δ
ε
E
A
ζ
α
C
β
γ
ε
δ
weiter mit Fall 2,3,4: der Bruder ist nicht rot
81
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 2: Der Bruder ist schwarz und dessen Söhne sind beide schwarz
→ umfärben und Marke nach oben weitergeben
(Ende, falls “B” rot war, sonst weiter mit “B”)
B
A
D
C
α
β
γ
82
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 2: Der Bruder ist schwarz und dessen Söhne sind beide schwarz
→ umfärben und Marke nach oben weitergeben
(Ende, falls “B” rot war, sonst weiterNun
mit “B”)
fehlt in diesem
Teilbaum auch ein
schwarzer Knoten!
B
A
D
C
α
β
γ
83
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 2: Der Bruder ist schwarz und dessen Söhne sind beide schwarz
→ umfärben und Marke nach oben weitergeben
(Ende, falls “B” rot war, sonst weiter mit “B”)
B
A
D
C
α
β
γ
84
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 2: Der Bruder ist schwarz und dessen Söhne sind beide schwarz
→ umfärben und Marke nach oben weitergeben
(Ende, falls “B” rot war, sonst weiter mit “B”)
B
B
A
α
D
C
β
γ
85
A
E
δ
ε
α
ζ
D
C
β
γ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
E
δ
ε
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
D
C
α
β
γ
86
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
D
C
α
β
γ
87
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
α
C
β
D
E
γ
δ
ε
88
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
α
C
β
D
E
γ
δ
ε
89
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
C
D
α
β
γ
E
δ
ε
90
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
A
C
D
α
β
γ
E
δ
ε
91
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 3: Bruder ist schwarz, dessen innerer Sohn ist rot
und dessen äußerer Sohn ist schwarz
→ Rotation nach außen
und umfärben
B
B
A
α
A
D
C
β
γ
E
δ
ε
α
C
β
γ
ζ
… weiter mit Fall 4
92
D
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
E
δ
ε
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
93
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
94
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
95
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
96
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
97
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
A
D
C
α
β
γ
98
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
D
A
α
99
C
β
γ
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
D
A
α
100
C
β
γ
E
δ
ε
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ζ
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
D
B
E
A
C
ε
α
101
β
γ
ζ
δ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume: Delete()
Fall 4: Der Bruder ist schwarz, dessen äußerer Sohn ist rot
→ umfärben und Rotation nach innen
B
D
A
α
D
C
β
γ
102
B
E
δ
ε
E
A
ζ
α
C
β
γ
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
ε
δ
ζ
Aufwand Delete()
•  Suchen des Löschknotens O(log n)
•  Löschen O(1)
•  Konsistenzwiederherstellung
–  Umfärbe-Schritte O(log n)
–  Rotationen O(1) (maximal drei)
•  Insgesamt: O(log n)
103
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
2.5 Bäume
2.5.1 Binäre Suchbäume
2.5.2 Optimale Suchbäume
2.5.3 Balancierte Bäume
2.5.3.1 AVL-Bäume
2.5.3.2 Rot-Schwarz-Bäume
2.5.3.3 B-Bäume
2.5.4 Skip-Listen
2.5.5 Union-Find-Strukturen
104
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume
•  Alternative Interpretation/Implementierung
der Rot-Schwarz-Bäume führt auf 2,4-Bäume
•  Diese sind ein Spezialfall des allgemeineren
Konzepts von B-Bäumen
•  Vorteil: größere Mengen von Knoten werden
zusammengefasst und passen dadurch besser
in einen Festplatten-Block
•  Hysterese: Nicht in jedem Schritt muss
rebalanciert werden.
105
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
•  Mit zunehmendem Abstand vom
Prozessor ...
–  ... steigt die Speicherkapzität
–  ... wächst die zugreifbare Blockgröße
–  ... sinkt die Zugriffsgeschwindigkeit
106
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
•  Effiziente Algorithmen ...
–  ... führen häufige Berechnungen auf kleinen
Datenmengen durch (“innere Schleife”)
–  ... minimieren die Zugriffe auf externe
Speicherebenen
–  ... passen die Größe der Datenstrukturen an
die jeweiligen Blockgrößen an
107
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
•  Bei der Suche in externen Binärbaumstrukturen hängt die Zugriffszeit im
Wesentlichen von der Verteilung der
Knoten auf Festplatten-Sektoren ab.
•  Fasse Teilbäume in Sektoren zusammen
108
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
109
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
110
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Speicherhierarchie
111
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Definition : B-Bäume
•  Jeder Knoten x hat die folgenden Felder
–  Die Zahl n[x] der aktuell im Knoten
gespeicherten Schlüssel (“Füllgrad”)
–  n[x] Schlüssel
key1[x] ≤ ... ≤ keyn[x][x]
–  n[x]+1 Zeiger auf die Söhne
c0[x], c1[x], ... , cn[x][x]
–  Der Bool-Wert leaf[x] zeigt an, ob x ein Blatt ist
112
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Definition : B-Bäume
•  Bedingungen
–  Ist ki ein Schlüssel im Unterbaum mit Wurzel
ci[x] so ist
k0 ≤ key1[x] ≤ k1 ≤ key2[x] ≤ ... ≤ keyn[x][x] ≤ kn[x]
–  Alle Blätter haben dieselbe Tiefe h
113
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Definition : B-Bäume
•  Bedingungen (Fortsetzung)
–  Es gibt eine feste Zahl t ≥ 2, den
minimalen Grad, mit
•  Jeder Knoten außer der Wurzel enthält
mindestens t−1 Schlüssel
•  Jeder Knoten enthält höchstens
2×t−1 Schlüssel
114
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Definition : B-Bäume
•  Bedingungen (Fortsetzung, alternativ)
–  Es gibt eine feste Zahl t ≥ 2, den
minimalen Grad, mit
•  Jeder Knoten außer der Wurzel hat
mindestens t Söhne
•  Jeder Knoten hat höchstens 2×t Söhne
115
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume
•  Für die Höhe h eines B-Baums mit n
Schlüsseln gilt
#Knoten
Tiefe
t
116
t
t
t
t
t
0 1
1 ≥2
2 ≥2t
3 ≥2t2
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume
•  Halte den Wurzelknoten immer im
Hauptspeicher (da für jeden Zugriff
notwendig)
•  Erwartete Zugriffe ≈ logt n
•  Beispiel
–  108 Telefonnummern in Deutschland
–  Blockgröße 512
–  maximal 2 Festplattenzugriffe
117
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume
•  Zusammenhang mit Rot-SchwarzBäumen
–  Jeder schwarze Knoten absorbiert
seine roten Söhne
–  Minimaler Füllgrad: t = 2 Söhne
–  Maximaler Füllgrad: 2t = 4 Söhne
–  (2,4)-Bäume
118
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
119
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
120
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
121
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
122
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
123
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
124
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
125
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
126
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
127
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rot-Schwarz-Bäume
128
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume
•  Operationen
–  Search()
–  Insert()
–  Delete()
•  In den meisten Fällen kommen die
Operationen ohne Restrukturierung des
Baums aus
•  Sonst: O(1) verallgemeinerte
Rotationen
129
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Zugriff auf externen Speicher
•  DiskRead(x), DiskWrite(x)
•  x ← pointer to some object
DiskRead(x);
access/modify the contents of x
DiskWrite(x) // only if modified
access but don’t modify the contents of x
130
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Create()
•  Create()
x ← AllocateNode()
leaf[x] ← true
n[x] ← 0
DiskWrite(x)
131
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Search()
•  SEARCH( x, k )
i←1
while i ≤ n[x] and k > keyi[x]
i←i+1
if i ≤ n[x] and k = keyi[x] then
return (x,i)
if leaf[x] then
return NIL
else
DiskRead( ci−1[x] )
Search( ci−1[x], k )
132
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Insert()
•  Bei Binärbäumen wird immer ein neuer
Blattknoten eingefügt
•  Bei B-Bäumen ist kein neuer Knoten
nötig, solange der Blattknoten noch nicht
voll ist
•  Steigt die Zahl der Schlüssel über 2×t−1,
so wird das Blatt geteilt
133
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Insert()
•  Naiver Ansatz
–  Suche das entsprechende Blatt
–  Split() falls überfüllt
–  Propagiere nach oben, falls Vaterknoten
ebenfalls überläuft
–  Problem: Auf die Knoten entlang des
Pfades wird jeweils zweimal zugegriffen
134
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Insert()
•  One-Pass Algorithmus
–  Teile die Knoten entlang des Suchpfades bereits
auf dem Hinweg wenn diese schon voll sind
–  Evtl. unnötige Split-Operationen amortisieren sich
durch den schnelleren Average-Case
135
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  SplitChild(x,i)
// x : Vaterknoten
// i : Index des Sohns
// Vorbedingung: ci[x] ist voll
136
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Beispiel t = 4
x
ci[x]
137
... K S ...
L M N O P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Beispiel t = 4
x
... K S ...
L M N
138
O
P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Beispiel t = 4
x
... K S ...
O
L M N
139
P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Beispiel t = 4
x
ci[x]
140
... K O S ...
L M N
P Q R
ci+1[x]
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Spezialfall: Wurzel
L M N O P Q R
141
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Spezialfall: Wurzel
Erzeuge zuerst einen
leeren Knoten ...
L M N O P Q R
142
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Spezialfall: Wurzel
Erzeuge zuerst einen
leeren Knoten ... dann
SplitChild()
L M N
143
O
P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Spezialfall: Wurzel
Erzeuge zuerst einen
leeren Knoten ... dann
SplitChild()
O
L M N
144
P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
SplitChild()
•  Spezialfall: Wurzel
•  B-Bäume wachsen an der Wurzel
O
L M N
145
P Q R
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Insert()
•  Insert(T,k)
r ← root[T]
if n[r] = 2×t−1 then
s ← AllocateNode()
root[T] ← s
leaf[s] ← false
n[s] ← 0
c0[s] ← r
SplitChild(s,0)
InsertNonFull(s,k)
else
InsertNonFull(r,k)
146
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
InsertNonfull()
•  InsertNonFull(x,k)
if leaf[x] then
find correct position for k and insert
DiskWrite(x)
else
find correct subtree ci[x]
DiskRead(ci[x])
if n[ci[x]] = 2×t−1 then
SplitChild(x,i)
if k > keyi[x] then
i←i+1
InsertNonFull(ci[x],k)
147
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
t=3
G M P X
A C D E
148
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(B)
G M P X
A C D E
149
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(B)
G M P X
A C D E
150
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(B)
G M P X
A C D E
151
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(B)
G M P X
A B C D E
152
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P X
A B C D E
153
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P X
A B C D E
154
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P X
A B C D E
155
J K
N O
R S T U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P X
T
A B C D E
156
J K
N O
R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P T X
A B C D E
157
J K
N O
R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P T X
A B C D E
158
J K
N O
R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(Q)
G M P T X
A B C D E
159
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
G M P T X
A B C D E
160
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
G M P T X
A B C D E
161
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
G M P T X
A B C D E
162
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
P
G M
A B C D E
163
T X
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
P
G M
A B C D E
164
T X
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
P
G M
A B C D E
165
T X
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
P
G M
A B C D E
166
T X
J K
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(L)
P
G M
A B C D E
167
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
G M
A B C D E
168
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
G M
A B C D E
169
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
G M
T X
C
A B
170
D E
J K L
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
C G M
A B
171
D E
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
C G M
A B
172
D E
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Beispiel
•  Insert(F)
P
C G M
A B
173
D E F
J K L
T X
N O
Q R S
U V
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Y Z
Delete()
•  Unkritisch für Blattknoten mit
hinreichendem Füllgrad (häufigster Fall)
•  Bei Unterlauf müssen Knoten
verschmolzen werden
•  Kann/muss nach oben propagiert werden
•  One-Pass-Formulierung?
174
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Delete()
•  Delete() sucht den Schlüssel entlang
eines Pfades
•  Eine Verschmelzung findet nur statt,
wenn die entsprechenden Knoten
beide einen Füllgrad ≤ t−1 haben.
•  Teste vor dem Abstieg, ob der
Nachfolger Füllgrad ≥ t hat (dann ist
Verschmelzung ausgeschlossen)
•  Falls dies nicht der Fall ist, erzwinge
dies durch direkte Umstrukturierung
175
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Delete()
•  Wie bei Insert() sorgen wir dafür, dass
der aktuelle Knoten hinreichend gefüllt
ist, so dass keine Verschmelzung
notwendig wird (Schleifeninvariante)
•  Falls ein Knoten nicht hinreichend
gefüllt wäre, hätten wir das bereits bei
der Bearbeitung des Vaterknotens
bemerkt und behoben.
176
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Delete()
•  Hilfsoperationen
–  Steal()
–  Merge()
–  Rotate()
177
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Steal()
•  Lösche Element aus aktuellem Knoten
t=3
C H M
A B
D E F
J K
N O P
mehr als t−1 Knoten → rekursiver Abstieg möglich
178
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Steal()
C H M
A B
D E F
J
K
N O P
... G
179
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Steal()
C H M
A B
D E F
J K
...
180
N O P
G
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Steal()
C G M
A B
D E F
J K
N O P
...
181
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Merge()
•  Lösche Element aus aktuellem Knoten
C G M
A B
D E
J K
N O
nur t−1 Knoten → rekursiver Abstieg nicht möglich
182
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Merge()
C M
G
A B
183
D E
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Merge()
C M
A B
184
D E G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Merge()
•  Lösche Element aus aktuellem Knoten
C M
A B
185
D E G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
•  Lösche Element aus rechtem Teilbaum
C G M
A B
D E F
J K
N O
nur t−1 Knoten → rekursiver Abstieg nicht möglich
186
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
•  Lösche Element aus rechtem Teilbaum
C G M
A B
D E F
J K
N O
nur t−1 Knoten → rekursiver Abstieg nicht möglich
187
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
C
A B
188
D E
F
M
G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
A B
189
D E
C
M
F
G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
A B
190
D E
C
M
F
G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
C
A B
191
D E
F
M
G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rotate()
C F M
A B
192
D E
G
J K
N O
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Delete()
•  Standardfall: Schlüssel nicht im Knoten,
Rekursion in den entsprechenden Teilbaum
•  Nur in Knoten absteigen, die hinreichend
gefüllt sind → wenn nicht, vorher den Baum
mit Merge(), Steal(), Rotate() umstrukturieren.
•  Nicht-Standardfälle: 1, 2a, 2b, 3a, 3b
(s. Cormen)
193
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
B-Bäume – Delete – Scheme
Blatt
Kein Blatt
1
Rekursion
This
194
L. oder R.
≥t
Beide
<t
2ab
2c
3a
3b
Steal
Merge
Rotate
Merge
L. oder R.
≥t
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beide
<t
Delete()
•  Fall 1: Schlüssel in einem Blatt
Del(F, P )
C G M
A B
195
D E F
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 1: Schlüssel in einem Blatt
P
Del(F, C G M )
A B
196
D E F
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 1: Schlüssel in einem Blatt
P
C G M
Del(F, D E F ) J K L
197
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 1: Schlüssel in einem Blatt
•  Schlüssel wird gelöscht
P
C G M
A B
198
D E
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
Del(M, P )
C G M
A B
199
D E
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
P
Del(M, C G M )
A B
200
D E
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
P
Del(M, C G M )
A B
201
D E
J K L
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
P
Del(M, C G M )
A B
202
Del(L, J K L ) N O
T X
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
P
Del(M, C G M )
A B
203
D E
J K
T X
L
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2a: Schlüssel in innerem Knoten,
linker Sohn hat ≥ t Schlüssel
•  Stehle Vorgänger aus linkem Teilbaum
P
C G L
A B
204
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2b: Schlüssel in innerem Knoten,
rechter Sohn hat ≥ t Schlüssel
→ analog zu Fall 2a
205
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
Del(G, P )
C G L
A B
206
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
P
Del(G, C G L )
A B
207
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
P
Del(G, C G L )
A B
208
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
P
Del(G, C L )
T X
G
A B
209
D E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
P
Del(G, C L )
A B
210
D E
G
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
P
Del(G, C L )
A B
211
D E G
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
•  Rekursion
P
C L
Del(G, D E G
B
212
T X
J K )
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 2c: Schlüssel in innerem Knoten, beide Söhne
haben t−1 Schlüssel
•  Stehlen nicht möglich → Merge()
•  Rekursion
P
C L
A B
213
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
C L P T X
A B
214
E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
Del(B, C L P T X )
A B
215
E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate()
Del(B, C L P T X )
A B
216
E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate()
Del(B,
C
A B
217
E
J K
L P T X )
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate()
Del(B,
C
A B
218
L P T X )
E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate()
Del(B,
E
L P T X )
C
A B
219
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate()
Del(B, E L P T X )
A B C
220
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate(), Rekursion
E L P T X
Del(B, A B C )
221
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3a: Schlüssel nicht im aktuellen Knoten, der
entspr. Unterbaum hat nur t−1 Schlüssel, sein
Bruder aber t Schlüssel
•  Rotate(), Rekursion
E L P T X
A C
222
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
P
C L
A B
223
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
Del(D, P )
C L
A B
224
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
Abstieg nicht
möglich!
Del(D, P )
C L
A B
225
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
•  Merge zwei der Unterbäume
Abstieg nicht
möglich!
Del(D, P )
C L
A B
226
D E
J K
T X
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
•  Merge zwei der Unterbäume
Del(D,
)
C L P T X
A B
227
D E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
•  Merge zwei der Unterbäume
Del(D, C L P T X )
A B
228
D E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
•  Merge zwei der Unterbäume
C L P T X
Del(D, D E
229
J K )
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Delete()
•  Fall 3b: Schlüssel nicht im aktuellen Knoten,
sowohl der entspr. Unterbaum als auch dessen
Brüder haben t−1 Schlüssel
•  Merge zwei der Unterbäume
C L P T X
A B
230
E
J K
N O
Q R S
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
U V
Y Z
Zusammenfassung
•  B-Bäume
–  Optimierter Zugriff auf externen Speicher
durch Blockung mehrerer Schlüssel
–  Minimaler/maximaler Füllgrad
–  Garantierte Balancierung
–  Hysterese bei der Umstrukturierung
–  Steal(), Merge(), Rotate()
231
Datenstrukturen und Algorithmen
Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Herunterladen