Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Ähnliche Dokumente
Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I AVL-Bäume

Algorithmen und Datenstrukturen

7 Weitere Baumstrukturen und Heapstrukturen

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Abschnitt 18: Effizientes Suchen in Mengen

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Mehrwegbäume Motivation

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen I Bruder-Bäume

Datenstrukturen und Algorithmen

Übung: Algorithmen und Datenstrukturen SS 2007

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Algorithmen und Datenstrukturen Balancierte Suchbäume

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen 1

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

Datenstrukturen & Algorithmen

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Logische Datenstrukturen

Motivation Binäre Suchbäume

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Nachtrag zu binären Suchbäumen (nicht (nur) AVL Bäumen: Löschen von Elementen in binären Suchbäumen. 1. Fall: zu löschendes Element ist Blatt: löschen

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen Suchbaum

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Informatik II, SS 2016

Binärbäume: Beispiel

Dynamische Mengen. Realisierungen durch Bäume

Kapitel Andere dynamische Datenstrukturen

Nachtrag zu binären Suchbäumen

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Informatik II, SS 2014

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

3.8 Bäume. Definition des Baumes

Informatik II, SS 2014

7. Sortieren Lernziele. 7. Sortieren

Vorlesung Datenstrukturen

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen.

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Copyright, Page 1 of 8 AVL-Baum

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Informatik II, SS 2014

Kap. 4.2: Binäre Suchbäume

Algorithmen und Datenstrukturen

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Algorithmen und Datenstrukturen 1

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

13. Binäre Suchbäume

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Informationssysteme SS 2013 Lösungsvorschläge zu Übungsblatt 2. Übungsblatt 2. Für die Übungen in der Woche vom 29. April bis 03.

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum.

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 11, Donnerstag, 15.

Programmiertechnik II

Definition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Geometrische Datenstrukturen

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 1-5. Seminar -

Dynamisches Huffman-Verfahren

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Algorithmen und Datenstrukturen 1

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Übung Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

Datenstrukturen und Algorithmen (SS 2013)

Übung Algorithmen I

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Algorithmen und Datenstrukturen 1

Transkript:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers

Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen Suchen Einfügen Entfernen von Schlüsseln für einen Baum mit n Schlüsseln stets (im worst case) in O(log n) Schritten ausführbar ist. Mögliche Balancierungsbedingungen: Höhenbedingung AVL-Bäume Gewichtsbedingung BB[α]-Bäume Strukturbedingungen Bruder-, 2-3-, a-b-, B-Bäume Ziel: Höhe eines Baumes mit n Schlüsseln bleibt stets in O(log n). 2

Bruder-Bäume Idee: Innere Knoten dürfen auch nur einen Nachfolger haben. Solche Knoten heißen unäre Knoten. Durch Einfügen der unären Knoten erreicht man, dass alle Blätter dieselbe Tiefe haben. Zu viele unäre Knoten führen jedoch zu entarteten Bäumen mit großer Höhe und wenigen Blättern. Man verhindert das Entarten, indem man eine Bedingung an so genannte Bruderknoten stellt. Zwei Knoten heißen Brüder, wenn sie denselben Vorgänger haben. 3

Definition von Bruder-Bäumen Definition: Ein binärer Baum heißt ein Bruder-Baum, wenn jeder innere Knoten einen oder zwei Nachfolger hat, jeder unäre Knoten einen binären Bruder hat und alle Blätter dieselbe Tiefe haben. Bruder Baum kein Bruder-Baum kein Bruder-Baum Bruder-Baum 4

Beobachtungen Ist ein Knoten p der einzige Nachfolger seines Vorgängers, so ist p ein Blatt oder binär. Von zwei Nachfolgern eines binären Knotens kann höchstens einer unär sein. Offensichtlich ist die Anzahl der Blätter eines Bruder-Baumes stets um 1 größer als die Anzahl der binären (inneren) Knoten. Ebenso wie für AVL-Bäume gilt auch für Bruder-Bäume: Ein Bruder-Baum mit Höhe h hat wenigstens F h+2 Blätter. Entsprechend hat ein Bruder-Baum mit n Blättern und (n -1) inneren Knoten eine Höhe h 1.44... log 2 n. 5

Bruder-Bäume als Suchbäume Eine Möglichkeit Bruder-Bäume als Suchbäume zu verwenden sind die so genannten 1-2-Bruder-Bäume: Nur binäre Knoten enthalten Schlüssel (unäre nicht). Für die binären Knoten gilt die Suchbaumeigenschaft. 6

Einschub: a-b-bäume Definition: Ein a-b-baum ist ein Baum mit folgenden Eigenschaften: 1. Jeder innere Knoten hat mindestens a und höchstens b Nachfolger. 2. Alle Blätter haben die gleiche Tiefe. 3. Jeder Knoten mit i Nachfolgern enthält genau i - 1 Schlüssel. Bemerkungen: 1. Bruder-Bäume sind spezielle 1-2-Bäume. 2. Die später behandelten B-Bäume sind m/2 -m-bäume (m > 2). 7

Operationen auf Bruder-Bäumen (1) Suchen: Im Prinzip analog zu binären Suchbäumen. Stößt man auf einen unären Knoten, setzt man die Suche bei dessen Nachfolger fort. Einfügen: Beim Einfügen geht man anders vor als bei Suchbäumen: Da alle Blätter die gleiche Höhe haben, kann man einen neuen Knoten nicht einfach anhängen. Stattdessen versucht man, unäre in binäre Knoten umzuwandeln. Gelingt dies nicht, geht man stufenweise nach oben und versucht dort, durch geeignete Transformationen den Knoten einzufügen. Im schlimmsten Fall kommt man bis zur Wurzel und muss dann einen neuen Knoten zur Wurzel machen. 8

Operationen auf Bruder-Bäumen (2) Bruder-Bäume wachsen demnach an der Wurzel und nicht an den Blättern. Löschen: Beim Löschen geht man ähnlich vor wie bei binären Suchbäumen: Gegebenenfalls muss man das Löschen auf das Löschen des symmetrischen Nachfolgers reduzieren. Ausgehend von dem zu löschenden Knoten geht man dann rekursiv entlang des Suchpfads (ähnlich wie bei AVL-Bäumen) im Baum nach oben, um die Bruder-Baum-Eigenschaften wiederherzustellen. Dabei muss man schlimmstenfalls bis zur Wurzel laufen. Damit kann man auch bei Bruderbäumen die Operationen Suchen, Einfügen und Löschen in Zeit O(log n) durchführen. 9

Analytische Betrachtungen 1-2-Bruder-Bäume enthalten i.allg. unäre Knoten, die keine Schlüssel speichern. Wie viele können das sein? Für aufeinander folgende Levels sind lediglich folgende Konfigurationen möglich: Niveau l: Niveau l + 1: (1) (2) (3) 10

Wieviele Schlüssel sind in einem 1-2-Bruder-Baum? Für jeden unären Knoten auf Niveau l muss es einen binären Bruder auf demselben Niveau geben. Zulässige Kombinationen der Konfigurationen sind demnach: Konfiguration U (2) 2/3 (3) 3/3 (1) und eine Konfig. aus (2) 3/5 (1) und (3) 4/5 mit U = Anzahl von binären Knoten auf Niveaul undl Anzahl Knoten insgesamt auf Niveaul undl + + 1 1 Folglich sind wenigstens 3/5 aller Knoten in einem 1-2-Bruder-Baum binär und enthalten Schlüssel. 11

Konsequenzen Offensichtlich werden beim Einfügen von n Schlüsseln in einen anfangs leeren Teilbaum höchstens 5/3 * n Knoten erzeugt. Man kann nachweisen, dass bei der Einfügung eines neuen Knoten beim rekursiven Entlanglaufen des Suchpfads stets gestoppt wird, wenn kein neuer Knoten erzeugt wird. Also ist die durchschnittliche Anzahl der notwendigen Transformationen bei einer Einfügung in einen 1-2-Bruder-Baum konstant. Für AVL-Bäume ist die Herleitung einer entsprechenden Aussage wesentlich schwieriger. Zwar stoppt die Methode upin nach einer Rotation oder Doppelrotation, allerdings ist nicht klar, wie weit man nach oben laufen muss. 12

B-Bäume Motivation: Bisher waren wir davon ausgegangen, dass die durch Bäume strukturierten Daten im Hauptspeicher Platz finden. In der Praxis (z.b. in Datenbanken) ist man jedoch häufig gezwungen, die Daten und auch die Schlüssel auf externen Medien (heute in der Regel Festplatten) abzulegen. Ziel von B-Bäumen ist, die Anzahl der Zugriffe auf das externe Medium zu reduzieren. 13

Definition der B-Bäume Definition: Ein Baum heißt B-Baum der Ordnung m, wenn die folgenden Eigenschaften erfüllt sind. (Achtung: m > 2 ) 1. Jeder Knoten mit Ausnahme der Wurzel und der Blätter enthält mindestens m/2-1 Daten. Jeder Knoten enthält höchstens m - 1 Daten. Die Daten sind sortiert. 2. Knoten mit k Daten x 1,..., x k haben k + 1 Referenzen auf Teilbäume mit Schlüsseln aus den Mengen {-,,x 1-1}, {x 1 +1,,x 2-1},,{x k-1 +1,,x k -1}, {x k +1,, } 3. Die Referenzen, die einen Knoten verlassen, sind entweder alle null-referenzen (Blätter) oder alle Referenzen auf Knoten. 4. Alle Blätter haben gleiche Tiefe. 14

Ein Beispiel 5 7 1 3 12 15 6 Hinweis: Im Kontext von B-Bäumen sind null-referenzen durch dargestellt. Beobachtung: Dieser Baum hat 7 Schlüssel und 8 null-referenzen. 15

Anzahl der null-referenzen (Blätter) Behauptung: Die Anzahl der null-referenzen ist stets um eins größer als die Anzahl der Schlüssel in einem B-Baum. Beweis: Induktionsverankerung: Der leere B-Baum enthält eine null-referenz aber keinen Knoten. Induktionsvoraussetzung: Die Aussage gelte für alle B-Bäume mit höchstens n - 1 Schlüsseln. Induktionsschluss: Sei p die Wurzel eines B-Baums mit n Schlüsseln. Angenommen p hat k - 1 Schlüssel und k Teilbäume mit l 1,..., l k Schlüsseln. Nach Induktionsvoraussetzung ist die Summe der null-referenzen in den Teilbäumen genau k ( l + 1) = 1 + ( k 1) i i= 1 i= 1 + k l i = 1 + n 16

Höhe eines B-Baums Um die Anzahl der in einem B-Baum mit Höhe h gespeicherten Schlüssel abzuschätzen, genügt es also, die Anzahl der null-referenzen zu bestimmen. Offensichtlich ist die Höhe maximal, wenn in der Wurzel lediglich ein und in jedem weiteren Knoten genau m/2-1 Schlüssel enthalten sind. Die minimale Anzahl von null-referenzen ist somit N min = 2* m/2 h-1 Ist ein B-Baum mit N Schlüsseln und Höhe h gegeben, so hat er (N + 1) null-referenzen und es muss gelten: N min = 2* m/2 h-1 (N + 1), also h 1 + log m/2 ((N + 1)/2) 17

Konsequenzen B-Bäume haben demnach auch die für balancierte Bäume typische Eigenschaft, dass die Höhe logarithmisch beschränkt ist in der Anzahl der gespeicherten Schlüssel. Für m = 199 haben B-Bäume mit 1.999.999 Schlüsseln höchstens die Höhe 4. 18

Suchen in einem B-Baum Um einen Schlüssel in einem B-Baum zu suchen, verfahren wir wie folgt: 1. Ausgehend von der Wurzel prüfen wir, ob der gesuchte Schlüssel sich in dem gerade betrachteten Knoten befindet. 2. Ist das nicht der Fall, bestimmen wir den kleinsten Schlüssel der größer als der gesuchte ist. Existiert dieser Schlüssel, gehen wir zum Nachfolger-Knoten links von diesem Schlüssel über. Existiert der Schlüssel nicht, gehen wir zum letzten Nachfolger-Knoten über. 3. Wenn wir bei einer null-referenz landen, ist die Suche erfolglos. 19

Suche innerhalb eines Knotens Hier sind prinzipiell verschiedene Verfahren denkbar: lineare Suche binäre Suche... Allerdings beeinträchtigt die Suche innerhalb eines Knotens die Rechenzeit eher wenig, weil diese hauptsächlich durch die Anzahl der Zugriffe auf den Hintergrundspeicher (Festplatte) beeinflusst wird. 20

Einfügen eines Schlüssels in den B-Baum Zunächst suchen wir die Stelle, an der der Schlüssel x im Baum vorkommen sollte. Ist die Suche erfolglos, endet sie in einem Blatt mit Vater p an der erwarteten Position von x. Seien s 1,..., s l die in p gespeicherten Schlüssel. Wir unterscheiden 2 Fälle: 1. Knoten p ist noch nicht voll, d.h. l < m 1. 2. Knoten p ist voll, d.h. l = m -1. 21

Fall 1: Knoten p ist noch nicht voll Wir fügen x in p zwischen dem Schlüsselpaar (s i ; s i+1 ) ein, für das s i < x < s i+1. Ist x kleiner als s 0 oder größer als s l, so fügen wir x am Anfang oder am Ende in p ein. Dann setzen wir den Wert der ebenfalls einzufügenden Nachfolgereferenz auf null, d.h. wir fügen auch ein Blatt ein. s 1... s i s i+1... s l s i... s i x s i+1... s l...... p 0 p i-1 p i p l...... p 0 p i-1 p i p l 22

Fall 2: Knoten p ist voll und enthält genau m -1 Schlüssel Wir ordnen x in die Folge der Schlüssel entsprechend der Ordnung ein. Seien k 1,..., k m die Schlüssel in p in aufsteigender Reihenfolge in p. Wir erzeugen nun einen neuen Knoten q und verteilen die m Schlüssel so auf p und q, dass p die Schlüssel k 1,..., k m/2-1 und q die Schlüssel k m/2 +1,..., k m enthält. Der Schlüssel k m/2 wandert in den Vorgänger φp von p. Wenn j die Position von k m/2 in φp ist, wird p j-1 eine Referenz auf p und p j eine Referenz auf q. Dieses Verfahren wird rekursiv fortgesetzt, bis wir an der Wurzel angelangt sind und ggf. eine neue Wurzel mit einem Schlüssel erzeugt haben. 23

Ein Beispiel (2-3-Baum) Ausgangssituation: 5 7 1 3 6 12 15 24

Einfügen von 14 5 7 1 3 6 12 14 15 * 25

Overflow: Spalten eines Knoten 5 7 14 1 3 6 12 15 26

Spalten eines Knoten und neue Wurzel 7 5 14 1 3 6 12 15 27

Löschen von Schlüsseln aus einem B-Baum Das Löschen von Schlüsseln ist leider wieder komplizierter als das Einfügen. Beim Entfernen unterscheiden wir, ob der zu löschende Schlüssel x aus einem Knoten gelöscht werden soll, dessen sämtliche Nachfolger Blätter sind, oder aus einem Knoten mit inneren Knoten als Nachfolger gelöscht werden soll. Offensichtlich besteht das Problem, dass beim Löschen eines Schlüssels aus einem Knoten ein Underflow auftreten kann, d.h. dass in dem Knoten zu wenig Schlüssel vorhanden sind. 28

Löschen aus einem Knoten oberhalb der Blätter Ein Knoten, der nur Blätter als Söhne hat, hat die Struktur null, k 1,..., null, k i, null,..., k l, null Wenn nun das Element mit Schlüssel k i entfernt werden soll, so streicht man einfach k i und die darauf folgende null-referenz. Ein Underflow tritt auf, falls l = m/2-1 war. 29

Entfernen aus einem inneren Knoten Im Unterschied zum Löschen aus einem Knoten unmittelbar oberhalb der Blätter haben alle Referenzen einen Wert ungleich null. Insbesondere existiert ein Nachfolger p i rechts von dem zu löschenden Schlüssel k i. Demnach ist der symmetrische (oder inorder) Nachfolger von k i im durch p i referenzierten Teilbaum zu finden (analog zu binären Suchbäumen). Wegen der Ausgeglichenheit muss der symmetrische Nachfolger von k i in einem Knoten unmittelbar oberhalb der Blätter sein. Wir ersetzen nun k i durch seinen symmetrischen Nachfolger und löschen k i aus dem Blatt (erneut Fall 1). 30

Reduktion des Entfernens auf symmetrischen NF p 0 k 1 p 1... p i-1 k i p i... p n-1 k n p n p 0... k 1 für k i einsetzen maximaler Linkspfad k 1... k n, Alle Referenzen sind null 31

Behandlung des Underflows Bei der Behandlung des Underflows sind wieder verschiedene Fälle möglich. Wir benötigen zwei Operationen: 1. das Ausgleichen (zwischen zwei Bruder-Knoten) 2. das Verschmelzen (von zwei Bruder-Knoten) 32

Ausgleich zwischen Bruder-Knoten Zwischen zwei Brüdern p und q wird ausgeglichen, wenn bei p ein Underflow eintritt und q mehr als m/2 1 Schlüssel enthält. Idee der Austauschoperation ist, aus q einen Schlüssel zu entfernen und diesen in den Vorgänger φp (von p und q) zu einzufügen. Aus φp entnehmen wir dann einen Schlüssel, den wir in p einfügen. Dies erfolgt so, dass die B-Baum-Eigenschaft erhalten bleibt. Da das Problem symmetrisch ist, nehmen wir an, dass p linker Bruder von q ist. 33

Die Ausgleichsoperation φp p 0 k 1 p 1... p i-1 k i p i... p n-1 k n p n p p 0 (1) k 1 (1)...k n1 (1) p n1 (2) p 0 (2) k 1 (2)...k n2 (2) p n2 (2) q 1. k i wird größter Schlüssel in Knoten p. 2. p 0 (2) wird letzte Referenz in Knoten p. 3. k i wird in φp durch k 1 (2) aus q ersetzt. Hinweis: Der Baum hat anschließend wieder die B-Baum-Eigenschaft. 34

Ein Beispiel 3-6-Baum mit Underflow im zweiten Nachfolger der Wurzel: 27 40 20 40 5 13 20 35 45 50 5 13 27 35 45 50 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 35

Das Verschmelzen von Bruder-Knoten Ein Knoten p wird mit einem seiner Brüder verschmolzen, wenn bei p ein Underflow eintritt und kein direkter Bruder von p mehr als m/2 1 Schlüssel enthält. Idee der Verschmelzungsoperation ist, aus p und seinem Bruder q einen neuen Knoten zu erzeugen. Zwischen die Schlüssel von p und q kommt jedoch der entsprechende Schlüssel aus dem Vorgängerknoten φp. Danach hat der neue Knoten Knoten. m/2-2 + m/2-1 + 1 = 2 m/2-2 m -1 Allerdings haben wir aus φp einen Knoten entnommen, so dass dort ggf. ein Underflow eintreten kann. Da das Problem symmetrisch ist, nehmen wir erneut an, dass p linker Bruder von q ist. 36

Die Verschmelzungsoperation p 0 k 1 p 1... p i-1 k i+1 p i+1... p n-1 k n p n p 0 (1) k 1 (1)...k n1 (1) p n1 (1) k i p 0 (2) p 0 (2) k 1 (2)...k n2 (2) k n2 (2) mit n 1 = m/2-2 und n 2 = m/2-1 Das Vorgehen: k i aus φp wandert in den neuen Knoten. Der neue Knoten wird Nachfolger p i -1 in φp. p i wird aus φp gelöscht. 37

Spezialfall Wurzel Die Verschmelzung wird rekursiv nach oben fortgesetzt, bis wir ggf. bei der Wurzel ankommen. Wenn wir dann aus der Wurzel den letzten Schlüssel entfernen, haben wir folgende Situation: p... Da die Wurzel keinen Schlüssel mehr enthält, können wir sie einfach löschen und ihren einzigen Nachfolger als Wurzel verwenden. Die Höhe des B-Baums ist dann um 1 gesunken. 38

Ein Beispiel für eine Verschmelzung 3-6-Baum mit Underflow im zweiten Nachfolger der Wurzel: 27 40 40 5 13 35 45 50 5 13 27 35 45 50 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 39