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