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

Ähnliche Dokumente
Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 1

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

ContainerDatenstrukturen. Große Übung 4

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

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

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.

ADS 1: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I AVL-Bäume

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

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

Mehrwegbäume Motivation

Vorlesung Datenstrukturen

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

Übung: Algorithmen und Datenstrukturen SS 2007

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

Algorithmen und Datenstrukturen 13

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen 1

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

Übung zur Vorlesung Algorithmische Geometrie

Logische Datenstrukturen

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

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und 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

Algorithmen und Datenstrukturen Balancierte Suchbäume

Dynamische Mengen. Realisierungen durch Bäume

Programmiertechnik II

Algorithmen und Datenstrukturen 1

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

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

Abschnitt 18: Effizientes Suchen in Mengen

Datenstrukturen & Algorithmen

Nachtrag zu binären Suchbäumen

Algorithmen und Datenstrukturen

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

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

Copyright, Page 1 of 8 AVL-Baum

7 Weitere Baumstrukturen und Heapstrukturen

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

Vorlesung Datenstrukturen

Algorithmen & Datenstrukturen. 3. Suchen

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

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Informatik II, SS 2014

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 1-5. Seminar -

Algorithmen und Datenstrukturen 1

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

Übung Algorithmen und Datenstrukturen

Balancierte Suchbäume

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

7. Sortieren Lernziele. 7. Sortieren

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

Datenstrukturen und Algorithmen

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

Datenstrukturen und Algorithmen (SS 2013)

Balancierte Binär- und B-Bäume

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

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

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Übung Datenstrukturen. Bäume

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

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

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

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

Organisationsformen der Speicherstrukturen

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

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

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Algorithmen und Datenstrukturen Suchbaum

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

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

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

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

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

B-Bäume. Suchbäume. Suchen, Einfügen, Löschen. Thomas Röfer. Balancierte Bäume (AVL-Bäume) Universität Bremen. Bäume 2

Algorithmen und Datenstrukturen

Übung 4: Die generische Klasse AvlBaum in Java 1

Informatik II, SS 2016

Lernmodul 7 Algorithmus von Dijkstra

3.8 Bäume. Definition des Baumes

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Übung Algorithmen und Datenstrukturen

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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Datenbanken. Interne Datenorganisation:

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Binärbäume: Beispiel

Transkript:

5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume 3. Streuspeicherung 7. Graphen 1. Darstellung und Topologisches Sortieren 2. Kürzeste Wege 3. Fluß- und Zuordnungsprobleme

Eigenschaften von binären Bäumen Ein Binärbaum der Tiefe T hat höchstens 2 T -1 Knoten N max = 2 T -1 N max : Maximale Knotenzahl Die Tiefe eines Binärbaumes mit N Knoten liegt zwischen lg 2 (N + 1) und N lg2(n+1) T N 2

Ausgeglichene Bäume (1) Suchen in binären Suchbäumen hat die Komplexität O(t), wobei t = Tiefe des Baumes 6 Beispiel vollständiger Binärbaum: Anzahl Knoten = 7 Tiefe des Baumes = 3 Die Suche benötigt maximal 3 Schritte 3 9 1 5 7 10 Beispiel entarteter Binärbaum: Tiefe des Baumes = 7 Suchen benötigt max. 7 Schritte Ob ein Binärbaum entartet oder nicht, hängt von der Reihenfolge ab in der die Elemente eingefügt werden. 1 3 5 6 7 9 10 3

Ausgeglichene Bäume (2) Die Tiefe eines Binärbaumes ist minimal, wenn er vollständig ist, d.h. jede Ebene (bis auf die Ebene der Blätter) maximal gefüllt ist. In vollständigen k-nären Bäumen gilt: T = log k( N + 1) T= Tiefe N= Anzahl der Knoten Der Wunsch, die Tiefe von Bäumen minimal zu halten führt zum Begriff der ausgeglichenen Bäume: Ein k-närer Baum B ist genau dann ausgeglichen (bzw. balanciert), wenn für seine Tiefe folgendes gilt: T = log k( N + 1) Die Ausgeglichenheit wird dadurch erreicht, dass Einfüge- und Löschoperationen diese Eigenschaft sicherstellen. Beispiele: AVL-Bäume, R/B- und B-Bäume 4

Aufwand beim Ausgleichen 1 11 11 5 17 5 17 2 7 13 2 7 13 1 Ausgleichen 7 Beim Augleichen muss nahezu jeder Knoten bewegt werden Hoher Aufwand! 1 2 5 11 13 17 5

AVL-Bäume AVL-Bäume (Adelson-Velskii und Landis, 1962) sind eine Form von binären Suchbäumen, die das Entarten vermeiden AVL-Bäume basieren auf einem abgeschwächten Kriterium für eine ausgeglichene Tiefe AVL-Kriterium: Ein Binärer Suchbaum ist ein AVL-Baum, wenn für jeden (inneren) Knoten der absolute Betrag der Differenz der Tiefen des rechten und linken Teilbaums maximal 1 beträgt Merke: Es genügt nicht, diese Eigenschaft nur für die Wurzel zu fordern, da beide Teilbäume entartet sein können 6

AVL-Bäume: Beispiel 5 6 7 7 2 2 6 4 4 1 1 3 5 3 AVL-Baum Kein AVL-Baum 7

Eigenschaften von AVL-Bäumen Für AVL-Bäume mit n Knoten und Tiefe t gilt: log (n+1) t < 1, 441. log (n + 2) AVL-Bäume sind höchstens um circa 44% tiefer als minimal möglich. Die Operationen Suchen, Einfügen und Löschen sind mit einem Aufwand von O(log n) realisierbar. F(t + 3) - 1 n 2 t+1-1, Dabei ist F(k) die k-te Fibonacci-Zahl, definiert durch F(0) = 0, F(1) = 1 und F(k + 2) = F(k + 1) + F(k). 8

Einfügen und Löschen in AVL-Bäumen AVL-Bäume sind binäre Suchbäume: Alle Suchoperationen (z.b. Suche nach min. bzw. max. Element) können problemlos übernommen werden Durch Einfüge- und Löschoperationen kann die AVL- Eigenschaft verloren gehen. Mit Hilfe von Baumtransformationen (Rotation und Doppelrotation) kann die AVL-Eigenschaft wieder hergestellt werden 9

Einfügen in AVL-Bäumen (1) Balance eines Knotens: Die Differenz der Tiefen der Teilbäumen left und right eines Knotens k wird balance b(k) genannt b(k) = t (left) - t (right) Für die AVL-Eigenschaft gilt: b(k) є { 1,0,+1} Nach dem Einfügen eines Knotens kann die Balance auch die Werte 2 und +2 annehmen: b(k) є { 2, 1,0,+1,+2} 10

AVL-Bäume: Balance eines Knotens 17 +1 8-1 19-1 4 0 10 0 21 0 9 0 14 0 11

Einfügen in AVL-Bäumen (2) Fälle die zu einer Verletzung der AVL-Eigenschaft führen können: 1. Einfügen im linken Teilbaum des linken Kindes 2. Einfügen im rechten Teilbaum des linken Kindes 3. Einfügen im rechten Teilbaum des rechten Kindes 4. Einfügen im linken Teilbaum des rechten Kindes Merke: Die Fälle (1) und (3) bzw. (2) und (4) sind symmetrisch und können analog Weise behandelt werden 12

Rotation Ausgehend vom neu eingefügten Knoten wird (auf dem Pfad zur Wurzel) der erste unbalancierte Knoten gesucht (In diesem Fall K 3 ). Der Teilbaum mit K 3 als Wurzel verletzt die AVL-Eigenschaft. Diese wird durch einfache Rotation von vom Knoten K 2 über K 3 (so dass der neue Teilbaum die Wurzel K 2 hat) wieder hergestellt Single LL-Rotation K 3 +2 K 3 Single RR-Rotation -2 +1 K 2 K 2-1 0 K 1 K 1 0 0 K 2 0 K 2 0 K 1 K 3 0 0 K 3 K 1 0 13

Doppelrotation Ausgehend vom neu eingefügten Knoten wird (auf dem Pfad zur Wurzel) der erste unbalancierte Knoten gesucht (In diesem Fall K 3 ). Der Knoten K 1 muss Wurzel des neuen ausgeglichenen Teilbaumes werden, da sein Schlüssel zwischen K 2 und K 3 liegt. Die Bezeichnung Doppelrotation lässt sich durch das Rotieren von K 1 über K 2 und K 3 K 3 +2 K 3-2 Double LR-Rotation Double RL-Rotation -1 K 2 K 2 +1 0 K 1 0 K 1 0 K 1 0 K 1 0 K 2 K 3 0 0 K 3 0 K 2 14

Baumtransformation: Vorgehensweise 1. Einfügen in linken Teilbaum des linken Kindes => Rechtsrotation des Vaters 2. Einfügen in rechten Teilbaum des linken Kindes => Doppelrotation (LR) des linken Kindes/Vaters 3. Einfügen in rechten Teilbaum des rechten Kindes => Linksrotation des Vaters 4. Einfügen in linken Teilbaum des rechten Kindes => Doppelrotation rechts/links (RL) des rechten Kindes/Vaters 15

Rotationen im AVL-Baum (1) 16

Rotationen im AVL-Baum (2) 17

Rotationen im AVL-Baum (3) 18

Rotationen im AVL-Baum (4) 19

Löschen in AVL-Bäumen Löschen funktioniert analog zum Einfügen Nach dem Löschen eines Schlüssels kann die AVL- Eigenschaft eines inneren Knotens k verletzt sein Ggf. Balance des betroffenen, vom Vater aufgespannten Teilbaums durch Rotieren wieder herstellen. Vorsicht: Rotieren kann Ausgeglichenheit weiterer Knoten auf dem Pfad zur Wurzel verletzen. Balance rekursiv/iterativ ggf. bis zur Wurzel wieder herstellen. 4 4 +2 2 2 5 5 löschen 2 1 4 RR 1 3 1 3 3 20

2-3-4-Knoten Ein binärer Suchbaum enthält Knoten mit einem Schlüssel (und den dazu gehörigen Daten) sowie zwei Verweise auf einen linken und rechten Teilbaum, die natürlich auch leer sein können. Solche Knoten werden 2-Knoten genannt 3-Knoten sind Knoten, die zwei Schlüssel und drei Verweise auf weiterführende Teilbäume enthalten 4-Knoten sind Knoten, die drei Schlüssel und vier Verweise auf weiterführende Teilbäume enthalten n-knoten sind Knoten, die (n-1) Schlüssel und n Verweise auf weiterführende Teilbäume enthalten 2-Baum: Ein binärer Suchbaum wird 2-Baum genannt, wenn er nur 2-Knoten enthält und alle Blätter auf einer Ebene sind 21

2-3-4-Bäume 2-3-Bäume: Ein Suchbaum, dessen Knoten alle 2-Knoten oder 3-Knoten sind und dessen Blätter alle auf einer Ebene liegen, wird 2-3-Baum genannt. 2-3-4-Bäume: Ein Suchbaum, dessen Knoten alle 2- Knoten, 3-Knoten oder 4-Knoten sind und dessen Blätter alle auf einer Ebene liegen, werden 2-3-4-Baum genannt. 2-3-4-Baumes der Tiefe 2 22

B-Bäume B-Bäume (1972 von Bayer und McCreight eingeführt ) stellen eine Verallgemeinerung der 2-3- und der 2-3-4-Bäume dar Ziel der B-Bäume ist primär den Zugriff auf große Datenbestände (z.b. bei Datenbanken), die überwiegend auf externen Datenträgern (z.b. auf Festplatten, CD-ROM) gespeichert sind und nicht in den Hauptspeicher geladen werden können zu optimieren Die Anzahl der Plattenzugriffe erweist sich als proportional zur Höhe des B-Baums. Da Plattenzugriffe um Größenordnungen langsamer sind als Hauptspeicherzugriffe, wird versucht, die Höhe niedrig zu halten B-Bäume werden typischerweise im Zusammenhang mit Datenbanken z.b. für Indexstrukturen verwendet. 23

B-Bäume: Anmerkungen Bei B-Bäumen variiert der Verzweigungsgrad, während die Tiefe vollständig ausgeglichen ist B Bäume sind Bäume mit variabler Kinderzahl (auch Vielwegbäume genannt) Alle Pfade von der Wurzel bis zu den Blättern sind in einem B-Baum gleich lang Typischerweise werden B-Bäume hoher Ordnung verwendet Knoten enthalten sehr viele Werte Höhe des Baumes ist dafür niedrig. 24

B-Bäume: Grundbegriffe (1) Ein B-Baum der Ordnung n ist ein Suchbaum, für den gilt Jede Seite (Baumknoten) enthält eine variable Zahl m von Schlüsseln. Für die Wurzelseite gilt 1 m 2n Für alle Seiten außer der Wurzelseite gilt n m 2n Jede Seite ist entweder eine Blattseite (ohne Nachfolger), oder sie hat m + 1 Nachfolger Alle Blattseiten liegen auf gleicher Stufe (Tiefe) 25

B-Bäume: Grundbegriffe (2) Für jede Seite (jeder Knoten) eines B-Baumes gilt: Seien s 1, s 2,..., s m-1, s m die Schlüssel in der Seite und u 1, u 2,..., u m-1, u m die Unterseiten der Seite. Es muss gelten: s 1 < s 2 <... < s m-1 < s m Die Schlüssel in der Unterseite u o (und deren Unterseiten) sind alle kleiner als s 1. Die Schlüssel in der Unterseite u m (und deren Unterseiten) sind alle größer als s m und die Schlüssel in anderen Unterseiten u i (und deren Unterseiten) liegen jeweils zwischen s m -1 und s i. 26

B-Bäume: Struktur einer Seite Jede Seite enthält i geordnete Elemente (Schlüsselwerte), wobei es ein Wert m existiert, so dass m i 2.m m wird Ordnung des Baumes genannt Jede Seite enthält Verweise auf die Kindknoten mit den Unterbäumen, wobei für einen inneren Knoten sind jeweils i+1 Verweise vorhanden 27

B Baum: Beispiel B-Baum der Ordnung 2 Der Wurzelknoten enthält einen Schlüssel Alle anderen Knoten enthalten 2 m 4 Schlüssel. 28

Tiefe eines B-Baumes Die Laufzeit und damit die Anzahl der Festplattenzugriffe ist für die meisten B-Baum-Operationen abhängig von der Tiefe des Baumes Ist n >1 die Anzahl der Werte (Schlüssel) eines B-Baumes der Tiefe t und der Ordnung m, so gilt:. t log m n+ 1 2 29

Suchen in B-Bäumen Die Suche in B-Bäumen kombiniert Suche in binären Suchbäumen Suche in Liste bzw. Folgen Vorgehen bei der Suche nach Schlüsselwert s Beginnend auf der Wurzelseite wird der Eintrag gesucht, der den gesuchten Antrag überdeckt: D.h. es wird das erste Element e gesucht, das größer oder gleich s ist Falls e=s wurde das gesuchte Element gefunden, die Suche kann abgebrochen werden Falls e > w muss der Verweis von e zur nächsten Seite weiterverfolgt werden Falls kein Element kleiner als w gefunden wurde wird der letzte Verweis der Seite verwendet Falls eine Blattseite erreicht wird, die den gesuchten Wert w nicht enthält, dann existiert der gesuchte Wert nicht im Baum! 30

Suchen in B-Bäumen: Beispiel Suche nach dem Schlüsselwert 38 in B-Baum der Ordnung 2: Auf der Wurzelseite 0 wird durch Vergleich mit dem Schlüssel 25 der Verweis auf Seite 2 ermittelt und weiterverfolgt Auf der Seite 2 wird festgestellt, dass sich der Schlüssel zwischen 31 und 40 befinden muss Durch Verfolgen des Verweises auf Seite 7 und der Suche in der Folge in Seite 7 wird der gesuchte Schlüssel gefunden 31

Aufwand der Suche in B-Bäumen 1. Die Suche innerhalb eines Knotens erfolgt linear und ist beendet, wenn ein Wert größer oder gleich dem gesuchten Wert ist oder alle Werte des Knotens betrachtet worden sind. In einem B-Baum der Ordnung m hat jede Seite höchsten 2m Elemente Der Aufwand dieser lokalen Suche in O(m) 2. Wird der Wert in einem inneren Knoten nicht gefunden, so wird analog zum binären Suchbaum der nächste Knoten in Richtung der Blätter weitergesucht. Die Anzahl der besuchten Knoten ist damit abhängig von der Tiefe des Baumes Der Aufwand dieser Suche ist Θ(t) = Θ(log m n), n: Anzahl der Elemente im B-Baum, t: Tiefe des B-Baumes, m: Ordnung des B- Baumes 3. Der Gesamtaufwand der Suche ist Ο(m log m n) 32

Einfügen in B-Bäume (1) Vorgehensweise beim Einfügen eines Schlüssels w in B-Baum 1. Es wird die Blattseite gesucht, in dem der Schlüssel w gespeichert werden soll. Diese Seite hat entweder Zwei Elemente v und x mit v w x Ein Element x als kleinstes Element der Seite mit w x ist dabei die am weitestens links stehende Seite im Baum Ein Element v als größtes Element der Seite mit v w ist dabei die am weitesten rechts stehende Seite im Baum 2. Das neue Element wird in die Seite eingefügt Falls das Blatt vor dem Einfügen bereits voll (d.h. enthält bereits 2m Elemente), so verstößt der Baum danach gegen die B-Baum-Definition! Lösung: Beim Auftreten eines Überlaufs muss der übervolle Knoten aufgteilt werden: Die ersten m Werte verbleiben auf der Originalseite Die letzten m Werte werden auf die neue Seite verschoben Das mittlere Element wandert in den Vaterknoten nach oben 33

Einfügen in B-Bäume (2) Beim Einfügen müssen übervolle Knoten aufgeteilt werden Der neue Vaterknoten muss nun in den ursprünglichen Vaterknoten integriert werden, wodurch wieder die B-Baum-Eigenschaft verletzt sein kann Rekursiv in Richtung Wurzel ist demnach solange jeder so entstehende übervolle Knoten aufzuteilen, bis spätestens ein neuer Vater die neue Wurzel des Baumes bildet (B-Bäume wachsen in Richtung Wurzel) Merke: Das Verfahren durchläuft den Baum ggf. zweimal: Erst wird der Baum in Richtung eines Blattes durchsucht, der Knoten eingefügt und dann in Richtung der Wurzel ausgeglichen. Lösung: Ein effizienteres Verfahren, das den Baum nur einmal durchläuft, teilt auf dem Suchpfad in Richtung des Zielblattes vorsorglich jeden vollen Knoten auf und fügt zum Schluss den Wert in einen Knoten ein, der sicher nicht voll ist (One-pass-Verfahren) 34

Einfügen in B-Bäume (3) Wert 16 einfügen Für die Speicherung von 16 Wurde Seite 4 Festgelegt. Die Seite 4 enthält bereits 4 Elemente und muss aufgeteilt werden. Beim Aufteilen muss das mittlere Element (hier 16) auf die Vaterseite (hier Seite 1) weitergereicht werden 16 Einfügen 35

Einfügen in B-Bäume (4) 36

Löschen in B-Bäume (1) Vorgehensweise beim Löschen eines Schlüssels w aus einem B-Baum Es wird die Blattseite gesucht, die den zu löschenden Schlüssel enthält Der Schlüssel wird aus der Seite entfernt, dabei sind zwei Fälle zu unterscheiden: Falls w auf einer Blattseite gespeichert ist, kann w gelöscht werden. Verbleiben danach weniger als m Elemente auf der Seite, ist ein Unterlauf zu behandeln Falls w auf einer inneren Seite gespeichert ist, so wird w gelöscht und durch das nächstkleinere Element von einer Blattseite ersetzt. Danach kann sich wieder ein Unterlauf ergeben, der behandelt werden muss. 37

Löschen in B-Bäume (2) Beim Löschen können Knoten einen Unterlauf aufweisen und damit die B-Baum-Eigenschaft verletzen Lösung Ausgleichen Voraussetzung: Die Nachbarseite hat n Elemente mit n>m Die Elemente der beiden Seiten und das eingeschlossene Elemente der Vaterseite müssen neu verteilt werden, so dass auf beiden Seiten n Elemente mit m n vorhanden sind Vereinigen von zwei Seiten Falls die Nachbarseite nur n=m besitzt, werden Unterlaufseite und Nachbarseite zusammengelegt Das von beiden Seiten eingeschlossene Element der Vaterseite muss heruntergezogen werden, da durch das Zusammenlegen einer der beiden Verweise überflüssig wurde Die neue Blattseite hat 2m Elemente 38

Löschen in B-Bäume (3) Löschen von 22 verursacht einen Unterlauf in Seite 5 Da die linke Nachbarseite voll besetzt ist, können die Elemente 13, 14, 17, 18, 20 und 24 neu verteilt werden: 13, 14 und 17 verbleiben auf der linken Seite (Seite 4) 20 und 24 werden in Seite 5 gespeichert 18 wird in den Vaterknoten aufgenommen (Seite 1) 22 löschen 39

Löschen in B-Bäume (4) Löschen von 43: Unterlauf in Seite 8 Die Seite 7 enthält nur 2 Elemente: Seite 7 und Seite 8 können vereinigt werden Die Elemente der neuen Seite sind: 32, 38 und 42 Die übergeordnete Seite (Seite 2) verliert das Element 40, das in die neue Seite aufgenommen wird 40

Einfügen und Löschen: Aufwand 1. Zunächst muss der für Einfügen/Löschen relevante Knoten gesucht und der richtige Index i bestimmt werden Beim Einfügen wird hierfür ein Blatt gesucht, das Löschen kann potenziell jeden Knoten betreffen Daher liegt die Laufzeit dieser lokalen Suche entsprechend der Laufzeitanalyse für die Suche in O(m log m n) 2. Beim Löschen und beim Einfügen, werden Ausgleichoperationen vorgenommen, die aber lokal und beschräkt sind: Es kommt höchstens eine Konstante hinzu 3. Der Aufwand der beiden Operationen liegt ebenfalls in O(m log m n) 41