Übung Algorithmen I

Ähnliche Dokumente
7. Übung Algorithmen I

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

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

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

Übung zur Vorlesung Algorithmische Geometrie

ADS 1: Algorithmen und Datenstrukturen

Übung Algorithmen I

Tutoraufgabe 1 (Vollständige Induktion):

Datenstrukturen und Algorithmen SS17 Lösung - Übung 5

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

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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


Übung: Algorithmen und Datenstrukturen SS 2007

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

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Abschnitt 18: Effizientes Suchen in Mengen

14. Rot-Schwarz-Bäume

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I AVL-Bäume

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Programmiertechnik II

Vorlesung Datenstrukturen

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen 12

Kapitel Andere dynamische Datenstrukturen

Algorithmen und Datenstrukturen Balancierte Suchbäume

Suchbäume balancieren

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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

elementare Datenstrukturen

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

Datenstrukturen & Algorithmen

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

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

Algorithmen und Datenstrukturen

Informatik II Prüfungsvorbereitungskurs

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Invarianzeigenschaft (für binären Suchbaum)

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

Informatik II Prüfungsvorbereitungskurs

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

Anwendungsbeispiel MinHeap

Datenstrukturen und Algorithmen

7. Sortieren Lernziele. 7. Sortieren

Algorithmen und Datenstrukturen

Auswählen nach Rang (Selektion)

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

Copyright, Page 1 of 8 AVL-Baum

Transkript:

Übung Algorithmen I.6.5 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.)

Roadmap Hinweise zur Übungsklausur (Weitere) Traversierungen von Binärbäumen Die Anzahl binärer Suchbäume Rot-Schwarz-Bäume

Organisation Übungsklausur am Montag, dem 8.6.5, um 5.45, im Audimax Freiwillig, keine Prüfungsleistung, aber zur Selbstkontrolle Deckt den ersten Teil der Vorlesung und Übung (bis 7.5.5) ab (Nicht vergessen: Neues Übungsblatt ab heute)

(Weitere) Traversierungen von Binärbäumen

Traversierungen von Binärbäumen Beispiel: n = 5 Knoten b = 8 Blätter c = 7 innere Knoten h = Höhe

Traversierungen von Binärbäumen 4 5 6 7 Beispiel: n = 5 Knoten b = 8 Blätter c = 7 innere Knoten h = Höhe 8 9 0 4 5 (Level-order-Traversierung.)

Traversierungen von Binärbäumen 6 0 9 Beispiel: n = 5 Knoten b = 8 Blätter c = 7 innere Knoten h = Höhe 4 5 7 8 4 5 (Pre-order-Traversierung.)

Traversierungen von Binärbäumen 8 4 6 0 4 Beispiel: n = 5 Knoten b = 8 Blätter c = 7 innere Knoten h = Höhe 5 7 9 5 (In-order-Traversierung.)

Traversierungen von Binärbäumen 5 7 6 0 4 Beispiel: n = 5 Knoten b = 8 Blätter c = 7 innere Knoten h = Höhe 4 5 8 9 (Post-order-Traversierung.)

Die Anzahl binärer Suchbäume

Binäre Suchbäume Wiederholung In der Vorlesung: Daten nur an Blättern Hier in der Übung: Daten in allen Knoten 8 4 7 8 5 Invariante: Für alle Knoten v: w left(v) : w v und w right(v) : w > v 6 8 5 4 49

Alle binäre Suchbäume mit n =,, : n = : n = : n = :

Alle binäre Suchbäume mit n = 4: 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Die Anzahl binärer Suchbäume C n x < x > x Bekannte Startwerte: C 0 = 0, C =, C =, C = 5, C 4 = 4. Durch Partitionieren der sortieren Folge: C n = C 0 C n + C C n + + C n C + C n C 0, n > 0. Wende erzeugende Funktionen an: C(z) = n=0 C n heißen die Catalan-Zahlen. C z z n = C(z) zc(z) +. = C n = ( ) n. n + n

Balancierte binäre Suchbäume: Rot-Schwarz-Bäume

Binäre Suchbäume Wiederholung 8 4 7 8 5 Invariante: Für alle Knoten v: w left(v) : w v und w right(v) : w > v 6 8 5 4 49 Problem von binären Suchbäumen: können unbalanciert sein Lösung der Vorlesung: (a, b)-bäume Weitere Lösung hier in der Übung: Rot-Schwarz-Bäume

Warum balancierte Bäume? 4 5

Warum balancierte Bäume? Höhe: h O(n) Suchen: O(n) im Worst Case Löschen: O(n) im Worst Case Einfügen: O(n) im Worst Case 4 5 Geht das besser? Ja, Rot-Schwarz-Bäume garantieren Höhe von O(log n).

Rot-Schwarz-Bäume Rot-Schwarz-Bäume sind binäre Suchbäume mit folgenden Eigenschaften: Jeder Knoten ist entweder rot oder schwarz. ( Bit mehr an Information pro Knoten.) Die Wurzel ist schwarz. Jedes Blatt ist schwarz und enthält keine Werte. (Nur innere Knoten enthalten Werte.) Ist ein Knoten rot, so sind beide Kinder schwarz. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Anzahl schwarzer Knoten.

Rot-Schwarz-Bäume Rot-Schwarz-Bäume sind binäre Suchbäume mit folgenden Eigenschaften: Jeder Knoten ist entweder rot oder schwarz. ( Bit mehr an Information pro Knoten.) Die Wurzel ist schwarz. Jedes Blatt ist schwarz und enthält keine Werte. (Nur innere Knoten enthalten Werte.) Ist ein Knoten rot, so sind beide Kinder schwarz. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Anzahl schwarzer Knoten. 5 47 0 0 8 5 5 8 6 9 49

Höhe von Rot-Schwarz-Bäumen Satz: Ein Rot-Schwarz-Baum mit n inneren Knoten hat die Höhe h log (n + ). Beweis. Betrachte Teilbaum t x an einem Knoten x Sei sh(x) die Anzahl der schwarzen Knoten auf dem Pfad von x zu einem Blatt ohne x selbst (Schwarzhöhe) Lemma: t x hat mindestens sh(x) innere Knoten. Beweis. Induktion über Höhe h von t x IA: h = 0 = sh(x) = 0 und 0 = 0 IS: Aussage gilt für Kinder x, x von x mit h(x) > 0 Wir bemerken: sh(x i ) sh(x) = t xi hat mind. sh(x) innere Knoten Also hat t x mindestens ( sh(x) ) + = sh(x) innere Knoten

Höhe von Rot-Schwarz-Bäumen Satz: Ein Rot-Schwarz-Baum mit n inneren Knoten hat die Höhe h log (n + ). Weiter im Beweis... Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. Lemma. t x hat mindestens sh(x) innere Knoten. Nach Eigenschaft 4 eines Rot-Schwarz-Baumes sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz Einsetzen in vorheriges Ergebnis ergibt n h/ und damit h log (n + )

Höhe von Rot-Schwarz-Bäumen Anders ausgedrückt: Die Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Anzahl der inneren Knoten, also h log (n + ). Suchen offensichtlich in O(log n) möglich. Einfügen, Löschen auch in O(log n), wenn Aufwand nur von der Höhe des Baums abhängt.

Einfügen in Rot-Schwarz-Bäumen Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Einfügen: Einfügen wie in normalen binären Suchbäumen Einfügen kann Rot-Schwarz-Eigenschaften verletzen. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Herstellen der Eigenschaften durch zwei grundlegende Operationen:. Umfärbung von Knoten. Rotation von Teilbäumen

Was ist eine Rotation? Lokale Operation, die die binäre Suchbaumeigenschaft erhält Umhängen einer konstanten Zahl an Pointern pro Teilbaum a Linksrotation b b Rechtsrotation a a > b (a, b] > b a (a, b]

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Die Wurzel ist schwarz. 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Kein Vorgänger Neuer Knoten ist Wurzel N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Die Wurzel ist schwarz. 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Kein Vorgänger Neuer Knoten ist Wurzel Umfärben N Umfärben N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Ist ein Knoten rot, so sind beide Kinder schwarz. 4. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Schwarzer Vorgänger oder N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Ist ein Knoten rot, so sind beide Kinder schwarz. 4. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Schwarzer Vorgänger Nichts zu tun oder N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Ist ein Knoten rot, so sind beide Kinder schwarz. 4. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Roter Vorgänger oder oder oder N N N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Ist ein Knoten rot, so sind beide Kinder schwarz. 4. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Roter Vorgänger 4 mögliche Strukturen, aber: durch Spiegelung und max. eine Rotation identisch N N N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung:. Ist ein Knoten rot, so sind beide Kinder schwarz. 4. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften wieder herstellen Roter Vorgänger 4 mögliche Strukturen, aber: durch Spiegelung und max. eine Rotation identisch N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Umfärben N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Umfärben Rotieren N N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Umfärben N N

Einfügen in Rot-Schwarz-Bäume Zur Erinnerung: 4. Ist ein Knoten rot, so sind beide Kinder schwarz. 5. Für alle Knoten v: Alle Pfade von v zu einem Blatt enthalten die gleiche Zahl schwarzer Knoten. Umfärben Rekursion N N N

Rot-Schwarz-Bäume Aufwandsabschätzung Speicher: Bit pro Knoten für die Farbe Parent-Pointer ist nötig Zeit: Konstanter Aufwand pro Knoten (Färben und Rotieren) Maximal O(log n) Rekursionstiefe Ziel erreicht: O(n) Platz und alle Operationen in O(log n).

Datenstrukturen in der Wirklichkeit

Datenstrukturen in der Wirklichkeit Java Collections java.util.linkedlist<t> java.util.arraylist<t> java.util.arraydeque<t> java.util.priorityqueue<t,c> java.util.treemap<k,v> java.util.treeset<k> java.util.hashtable<k,v> java.util.hashmap<k,v> java.util.hashset<k> C++ STL std::list<t> std::vector<t> std::deque<t> std::priority_queue<t,c> std::map<k,v> std::set<k> std::unordered_map<k,v> std::unordered_set<k>

Notizen zu (a, b)-bäumen B-Bäume sind fast ( m, m)-bäume mit m = B ein Festplatten-Block.

Insert-Geschwindigkeit (Integer, C++) Microsekunden pro Insert.5 0.5 Red-Black Tree verkettete Hashtabelle (, 4)-Baum (6, )-Baum (, 64)-Baum (64, 8)-Baum 0 6 8 0 4 6 8 0 4 6 Anzahl von Elementen

Locate-Geschwindigkeit (Integer, C++) Microsekunden pro Locate.5 0.5 0 Red-Black Tree verkettete Hashtabelle (, 4)-Baum (6, )-Baum (, 64)-Baum (64, 8)-Baum 6 8 0 4 6 8 0 4 6 Anzahl von Elementen