Mehrwegbäume — Motivation - AG CGVR Uni

Werbung
CC
G
G
CC
Mehrwegbäume — Motivation
 Wir haben gute Strukturen (AVL-Bäume) kennen gelernt, die die
CC
G
G
CC
 D.h., Zugriff auf (externe) Knoten sehr teuer
Anzahl der Operationen begrenzen
 Bsp. :
 Was ist, wenn der Baum zu groß für den Hauptspeicher ist?
 File-Tree des File-Systems
 Externe Datenspeicherung → Speicherhierarchie:
 Datenbanken (DB2 (IBM), Sybase, Oracle, …)
 Man hätte gerne einen Baum, der noch geringere Tiefe hat als
Register (< 1kB)
Cache (L2) (1-2 MB)
1 ns
3 ns
Hauptspeicher (512 MB – 8 GB)
20 ns
Festplatte (20 – 512 GB)
7 ms
 Idee:
 "Erhöhe die Basis des Logarithmus"
 oder: speichere mehrere "aufeinanderfolgende" Baum-Knoten auf
derselben Seite (Page) auf der Platte
 Zugriffsverhältnis zwischen Hauptspeicher und Festplatte:
 reduziere damit die Anzahl der Seitenzugriffe
t(P) / t(H) = (7·10-3) / (20·10-9) = 3.5·105
G. Zachmann
Informatik 2 - SS 06
Bäume
G. Zachmann
92
CC
G
G
CC
m-Wege-Bäume
 Ein m-Wege-Suchbaum ist eine Verallgemeinerung eines binären
Informatik 2 - SS 06
Bäume
93
CC
G
G
CC
Definition
 In einem m-Wege-Baum haben alle Knoten den Grad ≤ m
Suchbaumes (d. h., ein binärer Suchbaum ist ein 2-WegeSuchbaum)
 der Baum ist entweder leer oder besitzt folgende Eigenschaften:
 jeder Knoten hat folgende Struktur:
- Ki sind die Schlüssel, 1 ≤ i ≤ b
- b ist die Anzahl der Schlüssel im Knoten
1 Page
b
K1
P0
K2
P1
…
Kb
P2
Pb
- Pi sind die Zeiger zu den Unterbäumen des Knotens
 Schlüssel innerhalb eines Knotens sind aufsteigend geordnet:
- K1 ≤ K2 ≤ … ≤ K b
 alle Schlüssel im Unterbaum Pi sind kleiner als Ki+1 , für 0 ≤ i < b
 alle Schlüssel im Unterbaum Pb sind größer als Kb
Anstatt 5 nur noch 2 Zugriffe auf Platte / CD
 Die Unterbäume Pi , für 0 ≤ i ≤ b, sind ebenfalls m-Wege-Bäume
G. Zachmann
Informatik 2 - SS 06
Bäume
94
G. Zachmann
Informatik 2 - SS 06
Bäume
95
1
CC
G
G
CC
Beispiel
30
50
CC
G
G
CC
Bemerkungen
 Probleme:
80
 Baum ist nicht ausgeglichen
 Blätter sind auf verschiedenen Stufen
10
15
20
35
60
90
 Bei Veränderungen gibt es keinen Ausgleichsalgorithmus
95
 Schlechte Speicherausnutzung, kann zu verketteten Listen degenerieren
 Anzahl der Knoten im vollständigen m-Wege Baum mit Höhe h:
5
25
85
 Maximale Anzahl n von Schlüsseln:
1
 Sei b = Anzahl der Schlüssel im Knoten mit Grad m: b ≤ m -1
 n ≤ N .( m -1) = m h -1
 völlig degenerierter Baum: n = N = h
 Grenze für die Höhe eines m-Wege-Baumes: logm(n+1) ≤ h ≤ n
G. Zachmann
Informatik 2 - SS 06
Bäume
CC
G
G
CC
Beispiel: Einfügen in einen 4-Wege-Baum
50
Informatik 2 - SS 06
Bäume
97
CC
G
G
CC
B-Bäume
 vielleicht die Datenstruktur, die in der Praxis am meisten benutzt
 Einfügen von 20,
10,
30, 35,
15,
50, 5,
60,
8095,
90 1, 25, 85
30
G. Zachmann
96
wird
80
 B-Bäume sind ausgeglichene m-Wege-Bäume
 Da ein Knoten die Größe einer Übertragungseinheit hat (eine Page
10
15
20
35
60
90
der Festplatte, typ. 4-16 kBytes), sind 50 Keys pro Knoten üblich
95
 sehr flache Bäume
5
25
 kurzer Weg von der Wurzel zu den Blättern
85
48
 Schlüssel in internen Knoten sind Schlüssel und
89
Separatoren
1
 innerhalb eines Knotens: sequentielle Suche,
12
33
37
45
69
77
83
91
97
auch binäre Suche möglich
G. Zachmann
Informatik 2 - SS 06
Bäume
98
G. Zachmann
Informatik 2 - SS 06
Bäume
99
2
CC
G
G
CC
Definition von B-Bäumen
CC
G
G
CC
Bemerkungen
 CLRS benutzt eine etwas andere Definition:
 jeder Weg von der Wurzel zu einem Blatt ist gleich lang
 Für einen B-Baum vom Grad t gilt:
 jeder Knoten (außer Wurzel) enthält mindestens k und höchstens
- jeder Knoten, außer der Wurzel, hat mindestens t -1 Schlüssel, also
2k Schlüssel
mindestens t Kinder
 jeder Knoten (außer der Wurzel) hat zwischen k+1 und 2k+1
- jeder Knoten besitzt höchstens 2t -1 Schlüssel, also höchsten 2t Kinder
Kinder (Unterbäume)
 Formeln müssen „angepasst“ werden, damit sie stimmen
 die Wurzel ist entweder ein Blatt oder hat mindesten 2 Kinder
 die Prüfung läuft gemäß den Folien, bei Unsicherheiten die Definition
angeben
L
 jeder Knoten hat die Struktur:
b
K1
P0
K2
P1
…
Kb
P2
frei
Pb
 b ist die Anzahl der Schlüssel im Knoten, k ≤ b ≤ 2k
 Schlüssel in Knoten sind aufsteigend sortiert (K1 < K2 < … < Kb)
 (L = Größe einer Seite)
G. Zachmann
Informatik 2 - SS 06
Bäume
G. Zachmann
100
CC
G
G
CC
Die Klasse τ(k ,h)
 die Klasse τ(k,h) bezeichnet alle B-Bäume mit
Informatik 2 - SS 06
Bäume
101
CC
G
G
CC
Höhe eines B-Baumes
 Für die Höhe eines B-Baumes mit n Schlüsseln gilt:
k>0 und der Höhe h ≥ 0
 Beispiel: B-Baum der Klasse τ(2,3)
12
1
2
G. Zachmann
3
5
4
9
6
7
Informatik 2 - SS 06
16
8
10
11
13
14
15
17
19
18
20
21
22
Bäume
23
102
G. Zachmann
Informatik 2 - SS 06
Bäume
103
3
CC
G
G
CC
Erklärung
 in einem minimalen B-Baum hat jeder Knoten die kleinstmögliche
CC
G
G
CC
 die Höhe definiert eine obere und untere Schranke für die Anzahl
der Knoten N(B) eines beliebigen B-Baumes der Klasse τ(k, h ):
Anzahl an Kindern:
 von Nmin(B) und Nmax(B) lässt sich ableiten:
 in einem maximalen B-Baum hat jeder Knoten die größtmögliche
Anzahl (2k+1) an Kindern:
 Somit gilt für die Schlüsselanzahl in einem B-Baum:
G. Zachmann
Informatik 2 - SS 06
Bäume
G. Zachmann
104
Informatik 2 - SS 06
Bäume
105
CC
G
G
CC
Einfügen in einen B-Baum
CC
G
G
CC
 füge anfangs in ein leeres Feld der Wurzel ein
Kk +1
 die ersten 2k Schlüssel werden geordnet in die Wurzel eingefügt
 der nächste, der (2k+1)-te, Schlüssel passt nicht und erzeugt
K1
…
Kk
Kk +2
…
K2k+1
einen "Überlauf"
 die Wurzel wird geteilt, jeder der beiden Knoten bekommt k Keys,
ein neuer Knoten wird Wurzel
 neue Schlüssel werden in den Blättern sortiert gespeichert
 läuft ein Blatt über (2k+1 Keys), wird ein Split durchgeführt:
 die ersten k Schüssel kommen in den linkten Unterbaum
 Das Blatt wird geteilt (ergibt 2 Knoten à k Keys),
 die letzen k Schüssel kommen in den rechten Unterbaum
 diese werden im Vaterknoten anstelle des ursprünglichen Blattes
verankert, und
 Der Median der (2k+1) Schlüssel wird zum neuen Separator im
 der Median-Schlüssel wandert in den Vaterknoten
neuen Wurzel-Knoten
 ist auch der Elternknoten voll, wird das Splitten fortgesetzt
 Im worst-case bis zur Wurzel
G. Zachmann
Informatik 2 - SS 06
Bäume
106
G. Zachmann
Informatik 2 - SS 06
Bäume
107
4
CC
G
G
CC
Beispiel
CC
G
G
CC
 k = 2 → 2 ≤ #Schlüssel ≤ 4 (außer Wurzel)
48 89
33
 Einzufügende Schlüssel:
 77, 12, 48, 69
12
48
69
2
77
 33, 89, 97
12
37
45
57
 99
 2, 5, 57, 90, 95
12
33
69
77
83
90
91
95
97
 Einzufügende Schlüssel:
48
 91, 37, 45, 83
5
69
77
89
2
48
89
77
83
33
48 89
48 89 95
33
 50
97
5
12
37
45
57
69
77
83
90
91
97
99
69
12
2
G. Zachmann
5
33
37
12
45
37
69
45
91
57
97
33
69
77
83
90
91
Informatik 2 - SS 06
95
2
97
Bäume
CC
G
G
CC
Variante statt Split (B*-Baum)
 Idee: Ausgleich mit
5
15
9
11
5
12
8
9
6
12
12
37
89
45
50
57
77
90
91
97
99
Informatik 2 - SS 06
Bäume
109
CC
G
G
CC
Löschen in einem B-Baum
 Methoden:
1
 füge ein:
4
7
8
12
16
 Ausgleich mit Nachbarknoten (Rotation)
17
 Mischung (Merge)
 Beispiel: K k wird gelöscht:
6
 Wende Rotation an
1
1
Informatik 2 - SS 06
83
95
 Bedingung durch Def.: minimale Belegung eines Knotens erhalten
Nachbarknoten
statt Split
G. Zachmann
G. Zachmann
108
5
48
4
4
7
5
7
8
9
11
11
15
15
16
16
…
 Schlüssel Kb' wird
in den Vaterknoten
K1‘
verschoben,
Schlüssel Kn kommt
in den rechten
Knoten (mit k-1 Knoten)
17
K1‘
17
Bäume
110
G. Zachmann
Informatik 2 - SS 06
…
Kk ‘
…
Kb ‘
…
…
Kk ‘
…
Kn-1
Kn
Kn+1
K1
Kn-1
Kb ‘ Kn+1
Kn
…
…
Kk-1
Kk
…
Kk-1
…
K1
Bäume
111
5
CC
G
G
CC
 um wiederholte Anpassungen (durch neue Löschoperationen) zu
 Zweite Art der Unterlauf-Behandlung: Mischen
vermeiden, kann mehr als ein Schlüssel rotiert werden
 wird benutzt, wenn es
einen Unterlauf gibt
 beide Knoten haben danach ungefähr die gleiche Schlüsselanzahl
7
14
15
18
21
23
7
G. Zachmann
14
15
18
21
K1‘
 d.h., man kann nichts
…
Kn-1
Kn
Kk ‘
Kn+1
K1
…
…
Kk-1
Kk
vom linken / rechten Knoten
"stehlen"
38
26
25
21
…
und beide Nachbarknoten
genau k Schlüssel haben
 Beispiel: 33 soll entfernt werden
25
CC
G
G
CC
31
 Beispiel: Kk löschen
33
…
K1‘
38
38
23
26
23
31
25
26
31
Informatik 2 - SS 06
Kk ‘
Kn
K1
…
…
Kk-1
 Der Seperator und Schlüssel k-1 werden mit den k Schlüsseln im
Unterlauf
Bäume
…
Kn-1 Kn+1
anderen Knoten eingefügt
G. Zachmann
112
CC
G
G
CC
Allgemeiner Lösch-Algorithmus
Informatik 2 - SS 06
 lösche:
 Suche x
 21
CC
G
G
CC
1
3
 11 → Unterlauf
- lösche x
113
Beispiel
 x = zu löschendes Element
 x ist in einem Blatt:
Bäume
11
19
15
17
11
18
15
17
15
18
18
21
25
19
25
19
25
 → Mischen
- #E ≥ k (nach dem Löschen) → OK
- #E = k-1 und #E’ > k → Rotation
1
3
- #E = k-1 und #E’ = k → Mischung
 x ist in einem internen Knoten:
- ersetze x mit K b oder K1 ’ (nächstgößerer oder -kleiner Schlüssel)
1
- entferne den Seperator (K b oder K1 ’) aus dem entsprechenden Kind-Knoten
3
- behandle diesen Kind-Knoten mit Rekursion
15
1
G. Zachmann
Informatik 2 - SS 06
17
Bäume
114
G. Zachmann
Informatik 2 - SS 06
3
17
18
19
25
Bäume
115
6
CC
G
G
CC
B+-Bäume
CC
G
G
CC
Definition eines B+-Baum
 Seien k, l, h ganze Zahlen mit h ≥ 0, k > 0, l > 0
 Ein B+-Baum der Klasse τ(k, l, h) ist entweder ein leerer Baum
 in einem B-Baum haben die Schlüssel Ki 2 Funktionen:
 Ki dienen als Seperatoren
oder ein sortierter Baum mit den folgenden Eigenschaften:
 Nutzdaten werden mit im Baum gespeichert (auch in inneren Knoten)
1. alle Wege von der Wurzel zu einem Blatt haben die gleiche Länge
 ein B+-Baum teilt diese Eigenschaften auf:
 Ki werden nur als Seperatoren benutzt (ergibt einen flacheren Baum)
2. jeder innere Knoten (außer Wurzel) enthält mindestens k und
höchstens 2k Schlüssel
 Schlüssel werden redundant gespeichert (vereinfachte LöschOperationen wiegen den zusätzlichen Speicherbedarf auf)
3. jeder innere Knoten (außer der Wurzel) hat zwischen k +1 und 2k +1
Kinder
 die Blätter werden zu einer Liste verlinkt
4. alle Blätter (außer der Wurzel als Blatt) haben mindestens l und
höchstens 2l Schlüssel
 auf die Daten kann man in sequentieller Ordnung zugreifen
5. Schlüssel können mehrfach auf einem Weg zu den Blättern
vorkommen
 interne Knoten sind ein sog. Index auf die Blätter
1. in inneren Knoten nur Seperatoren ohne Nutzdaten ("satellite data")
2. an Blättern zusammen mit den Nutzdaten
6. Alle Blätter sind zu einer sortierten Liste verlinkt
G. Zachmann
Informatik 2 - SS 06
Bäume
CC
G
G
CC
Format der Knoten
P0
K2
P1
…
P2
Kb
Pp
K2
CC
G
G
CC
D1
K2
D2
…
Kb
Db
frei
D2
…
Km
Dm
P2
Pb
 b ist die Anzahl der Elemente, mit Länge Lb
 Elemente mit fester Länge (LK und LD )
 Zeiger haben Länge LP
L
D1
K1
P1
Pb
 die Blätter haben folgendes Format:
K1
118
frei
 M gibt den Typ des Knoten und die Anzahl der Schlüssel ( k≤b ≤2k ) an
M
Bäume
Größe der Knoten im B-Baum
b
L
K1
Informatik 2 - SS 06
L
 die internen Knoten haben folgendes Format:
M
G. Zachmann
117
 Max. Anzahl der Eintrage ist also:
frei
Pn
 M gibt den Typ des Knoten und die Anzahl der Schlüssel ( l≤m≤2 l ) an
 Pp zeigt auf den vorhergehenden und P n auf den nächsten Blatt-Knoten
G. Zachmann
Informatik 2 - SS 06
Bäume
119
G. Zachmann
Informatik 2 - SS 06
Bäume
120
7
CC
G
G
CC
Größe der Knoten im B +-Baum
CC
G
G
CC
Beispiel
 für Knoten mit fester Länge L kann k aus L errechnet werden
 B+-Baum der Klasse τ(3, 2, 3)
[k = 3 , l = 2, h = 3]
 interne Knoten:
12
 Blätter:
2
1
G. Zachmann
Informatik 2 - SS 06
Bäume
121
2
G. Zachmann
3
4
5
Informatik 2 - SS 06
5
9
6
7
15
8
9
10
11
12
13
14
18
15
20
16
...
Bäume
122
8
Herunterladen