Datenstrukturen & Algorithmen



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

14. Rot-Schwarz-Bäume

Datenstrukturen & Algorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

VL-11: Rot-Schwarz Bäume. (Datenstrukturen und Algorithmen, SS 2017) Janosch Fuchs

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

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

7 Weitere Baumstrukturen und Heapstrukturen

Datenstrukturen und Algorithmen

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

Übung Algorithmen I

Algorithmen und Datenstrukturen I AVL-Bäume

Algorithmen und Datenstrukturen I Bruder-Bäume

ADS 1: Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Übung zur Vorlesung Algorithmische Geometrie

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

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

Abschnitt 18: Effizientes Suchen in Mengen

7. Sortieren Lernziele. 7. Sortieren

7. Übung Algorithmen I

Randomisierte Algorithmen

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Datenstrukturen Teil 3. Traversierung und AVL- Bäume. Traversierung. Traversierung. Traversierung

Übung: Algorithmen und Datenstrukturen SS 2007

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

Kapitel 9 Suchalgorithmen

ContainerDatenstrukturen. Große Übung 4

Sortieren II / HeapSort Heaps

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

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

Kapitel 9 Suchalgorithmen

2. Übungstest. Motivation Überblick. Motivation für B-Bäume. B-Bäume. Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

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

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Mehrwegbäume Motivation

Aufgabe 1 O-Notation (2+3+5=10 Punkte)

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Programmiertechnik II

11.1 Grundlagen - Denitionen

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

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

ADS: Algorithmen und Datenstrukturen

9. Natürliche Suchbäume

Kapitel Andere dynamische Datenstrukturen

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

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

Copyright, Page 1 of 8 AVL-Baum

Vorlesung Datenstrukturen

Datenstrukturen und Algorithmen SS17 Lösung - Übung 5

Datenstrukturen & Algorithmen

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Transkript:

Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010

Übersicht Rot-schwarz Bäume Eigenschaften Rotationen Einfügen (Löschen) 2

Einführung Binäre Suchbäume Höhe h O(h) für Operationen auf dynamische Mengen Baum kann zu Liste degenerieren h ist im Worst Case O(n) Balancierte Suchbäume Garantieren, dass Baum nicht zu Liste degenerieren kann Garantieren h=o(lg n) Erzwungen mittels zusätzlichen Bedingungen an Datenstruktur 3

Rot-schwarz Bäume Eine Variante von balancierten Suchbäumen Ggarantieren, dass Höhe im Worst Case O(lg n) statt wie vorher O(n) Alle Operationen sind O(lg n) ) 4

Rot-schwarz Bäume Zeiger gleich wie binäre Suchbäume (left, right, p) Konvention Falls ein Kind nicht existiert, wird Zeiger auf Wächterelement t nil[t] gespeichert Alle Knoten ausser nil[t] werden als innere Knoten betrachtet Vater von Wurzel zeight auch auf nil[t] 5

Rot-schwarz Bäume Hauptidee Jeder Knoten hat ein Bit Zusatzinformation Farbe des Knotens Rot oder schwarz Bedingungen g an Farbreihenfolge entlang Pfaden von Wurzel zu Blatt Garantieren, dass kein Pfad mehr als doppelt so lang als alle anderen Baum ist balanciert Einfügen und Löschen müssen Bedingungen erhalten 6

Eigenschaften 7

Beispiel 8

Schwarz-Höhe Höhe eines Knotens Länge des längsten Pfades vom Knoten zu einem Blatt Schwarz-Höhe eine Knotens bh(x) Anzahl Schwarzer Knoten auf irgendeinem i Pfad von x zum Blatt nil[t] x selbst nicht gezählt Blatt nil[t] [ ] mitgezählt Wegen Eigenschaft 5 wohldefiniert 9

Beispiel 10

Höhe von rot-schwarz Bäumen Lemma: Eigenschaften von rot-schwarz Bäumen garantieren, dass Höhe des Baumes h <= 2lg(n+1) = O(lg n) Garantiert effiziente Operationen! Beweis mittels 2 Behauptungen 11

Höhe von rot-schwarz Bäumen 1. Behauptung: Knoten mit Höhe h hat Schwarz-Höhe bh mindestens h/2 Beweis: Eigenschaft 4 Höchstens h/2 rote Knoten auf einem Pfad von Knoten zu jedem Blatt Mindestens h/2 Schwarze Knoten 12

Höhe von rot-schwarz Bäumen 2. Behauptung: Unterbaum von jedem bh(x) ( Knoten x hat 2 ) 1 interne Knoten 13

Höhe von rot-schwarz Bäumen Zusammenfassend 1. Knoten mit Höhe h hat Schwarz-Höhe h/2 2. Für jeder Knoten x,, Unterbaum hat interne Knoten 2 bh(x) 1 Sei b Schwarz-Höhe der Wurzel, n Anzahl Knoten im ganzen Baum 14

Operationen Nicht-modifizierende Operationen (Suchen, Vorgänger, Nachfolger, Minimum, Maximum) gleich wie binäre Suchbäume Aufwand O(lg n) Einfügen und Löschen sind komplizierter Einfügen Roter Knoten: kann Eigenschaft 4 verletzen Schwarzer Knoten: kann Eigenschaft 5 verletzen Löschen Rote Knoten: kein Problem Schwarze Knoten: kann Eigenschaften 2, 4, oder 5 verletzen 15

Übersicht Rot-schwarz Bäume Eigenschaften Rotationen Einfügen (Löschen) 16

Rotationen Einfügen und Löschen zerstören rot- schwarz Eigenschaften Benötigen Rotationen, um rot-schwarz Eigenschaften wiederherzustellen Ändern Baumstruktur Bewahren binäre Suchbaum-Eigenschaft Es gibt Links- und Rechtsrotationen Inverse voneinander Implementiert durch umhängen von Zeigern 17

Rotationen 18

Beispiel 19

Rotationen Aufwand konstant, da eine konstante Anzahl Zeiger verändert werden Rotationen werden auch in anderen balancierten Suchbäumen verwendet AVL Bä S l Bä AVL Bäume, Splay Bäume http://en.wikipedia.org/wiki/avl_tree http://en.wikipedia.org/wiki/splay_tree

Übersicht Rot-schwarz Bäume Eigenschaften Rotationen Einfügen (Löschen) 21

Einfügen Zwei Schritte 1. Einfügen (fast) wie in binären Suchbaum 2. Wiederherstellen der rot-schwarz Eigenschaften 22

Einfügen 23

Eigenschaften 1. Ok 2. Verletzt falls z die Wurzel ist, sonst Ok 3. Ok 4. Verletzt falls p[z] rot ist: sowohl z wie auch p[z] sind rot 5. Ok 24

Wiederherstellen der Eigenschaften 25

Schleifeninvariante Zu Beginn jeder Iteration der while- Schleife gilt a. z ist rot b. Falls p[z] Wurzel, dann ist p[z] schwarz c. Es gibt höchstens eine rot-schwarz Verletzung Eigenschaft 2: z is die Wurzel und rot Eigenschaft 4: sowohl z wie auch p[z] sind rot 26

Schleifeninvariante Initialisierung a. Bei Initialisierung i ist z roter Knoten, der eingefügt wurde b. Falls p[z] Wurzel, dann schwarz vor Einfügen, und Farbe wurde nicht geändert c. Zwei Fälle Falls Eigenschaft 2 verletzt: rote Wurzel ist Knoten der eingefügt wurde, keine andere Verletzung Falls Eigenschaft 4 verletzt: t: z und p[z] ] sind rot, keine andere Verletzung 27

Schleifeninvariante Terminierung Schleife endet weil p[z] schwarz ist, also ist Eigenschaft 4 ok Letzte Zeile garantiert Eigenschaft 2 Deshalb: rot-schwarz Eigenschaften bei Terminierung erfüllt 28

Schleifeninvariante Fortsetzung Fallunterscheidung 6 Fälle, 3 symmetrisch zu den anderen 3 Je 3 Fälle für p[z] entweder linkes oder rechtes Kind Beschreibung hier nimmt an p[z] ist linkes Kind y bezeichnet den Onkel von z, also den Bruder von p[z] ] Fälle schliessen sich gegenseitig nicht aus 29

Fall 1: Onkel y ist rot p[p[z]] [ [ muss schwarz sein, weil sowohl z wie p[z] rot sind, aber es nur eine Verletzung von Eigenschaft 4 gibt Mache p[z] und y schwarz => Eigenschaft 4 ok, aber Eigenschaft 5 kann verletzt t sein Mache p[p[z]] rot => Eigenschaft 5 ok Nächste Iteration hat p[p[z]] als neues z 30

Fall 2: y ist schwarz, z ist rechtes Kind Linksrotation um p[z] => z ist nun linkes Kind, und z und p[z] sind rot Sind nun in Fall 3 31

Fall 3: y ist schwarz, z ist linkes Kind Mache p[z] schwarz und p[p[z]] rot Rechtsrotation um p[p[z]] Eigenschaft 4 ok: nicht mehr zwei aufeinanderfolgende rote Knoten [ ] it j tt Sh k i it p[z] ist jetzt Schwarz => keine weiteren Iterationen 32

Analyse O(lg n) für RB-Insert Für RB-Insert-Fixup Jede Iteration ist O(1) Jede Iteration ist entweder die letzte (Fälle 2 und 3) oder bewegt z zwei Stufen nach oben (Fall 1) O(lg n) Stufen => O(lg n) Zeit Höchstens 2 Rotationen insgesamt! Total: Einfügen in rot-schwarz Baum ist O(lg n) 33

Übersicht Rot-schwarz Bäume Eigenschaften Rotationen Einfügen (Löschen) 34

Löschen Zwei Schritte 1. Löschen (fast) wie aus binärem Suchbaum 2. Wiederherstellen der rot-schwarz Eigenschaften 35

Löschen 36

Löschen y wurde ausgeschnitten x ist entweder y s s einziges Kind bevor y ausgeschnitten wurde oder der Wächter, falls y keine Kinder hatte p[x] zweigt auf Knoten, der vorher y s Vater war 37

Rot-schwarz Verletzungen Falls y rot, keine Verletzungen Keine Veränderung der Schwarz-Höhen Keine neuen roten Knoten Falls y schwarz, mögliche Verletzungen 1. Ok 2. Falls y die Wurzel und x rot ist, dann wurde Wurzel rot 3. Ok 4. Verletzt falls p[y] und x rot sind 5. Jeder Pfad, der y enthält, hat jetzt einen schwarzen Knoten weniger 38

Rot-schwarz Verletzungen Idee zur Reparatur: x bekommt ein zusätzliches zusätzliches Schwarz Alle Pfade, die x enthalten, erhalten +1 schwarz Eigenschaft 5 repariert, aber Eigenschaft 1 verletzt x ist doppelt schwarz oder rot & schwarz 39

Reparatur Interpretation Der Knoten, auf den x zeigt, hat ein zusätzliches ( gedachtes ) Schwarz, aber sein Farbattribut wird nicht geändert Idee: bewege x im Baum nach oben, bis x zeigt auf einen rot & schwarzen Knoten => mache x schwarz x zeigt auf die Wurzel => zusätzliches Schwarz wird einfach entfernt Geeignete Rotationen und Umfärbungen durchgeführt werden können 40

Reparatur 41

Reparatur In der while Schleife Zeigt x immer auf einen nicht-wurzel Wurzel, doppelt schwarzen Knoten w ist der Bruder von x w kann nicht nil[t] sein, weil das Eigenschaft 5 am Knoten p[x] verletzen würde 8 Fälle, je 4 symmetrisch Hier: betrachten Fälle wo x ein linkes Kind ist Fälle schliessen sich gegenseitig nicht aus Idee Jede Transformation erhält Eigenschaft 5 Jede Transformation verschiebt x zu p[x], oder führt zu Termination der Schleife in der nächsten Iteration 42

Fall 1 Bruder w von x ist rot w muss schwarze Kinder haben Mache w schwarz und p[x] rot Linksrotation auf p[x] Neuer Bruder von x war Kind von w bevor Rotation => muss schwarz sein Gehe zu Fall 2, 3 oder 4 43

Fall 2 w ist schwarz und w s Kinder sind schwarz Entferne 1 Schwarz von x (=> einfach schwarz) und 1 von w (=> rot) Bewege Schwarz zu p[x] Nächste Iteration mit p[x] ] als neuem x Falls vorher Fall 1, dann war p[x] rot => neues x ist rot & schwarz => Farbattribut von neuem x ist rot => Schleife terminiert, neues x wird schwarz in letzter Zeile 44

Fall 3 w ist schwarz, linkes Kind rot, rechtes schwarz Mache w rot und w s linkes Kind schwarz Rechtsrotation auf w Neuer Bruder w von x ist schwarz mit rotem Kind => Fall 4 45

Fall 4 w ist schwarz, w s rechtes Kind ist rot Mache w die Farbe von p[x] ] Mache p[x] schwarz und w s rechtes Kind schwarz Linksrotation auf p[x] [ ] Entferne extra schwarz auf x (=> x jetzt einfach schwarz) ohne rot-schwarz Eigenschaften zu verletzen Fertig. Lass x auf Wurzel zeigen, Schleife terminiert i 46

Analyse RB-Delete ist O(lg n) RB-Delete-Fixup Nur Fall 2 erfordert mehr Iterationen x bewegt sich eine Stufe nach oben O(lg n) ) Iterationenti Fälle 1, 3 und 4 haben eine Rotation => höchstens h 3 Rotationen total Total O(lg n) 47

Zusammenfassung Binäre Suchbäume Binäre Suchbaum-Eigenschaft Wörterbuchoperationen (Suchen, Einfügen, Löschen) Prioritätswarteschlangen tesc (Minimum, Maximum) Sortierte Ausgabe (Vorgänger, Nachfolger) Ohne Zusatzbedingungen: g Höhe h=o(n) ( ) Kann zu Liste degenerieren Balancierte Bäume Z.B. rot-schwarz Bäume Zusatzbedingungen an Struktur Garantiert logarithmische Höhe h=o(lg n) Zusatzbedingungen müssen nach Einfügen, Löschen wiederhergestellt werden, Aufwand O(lg n) 48

Nächstes Mal Kapitel 15: dynamisches Programmieren 49