Informatik II, SS 2014

Ähnliche Dokumente
Informatik II, SS 2016

Informatik II, SS 2018

Informatik II, SS 2016

Informatik II, SS 2018

Informatik II, SS 2014

Informatik II: Algorithmen und Datenstrukturen SS 2015

Algorithmen und Datenstrukturen

Informatik II, SS 2016

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

Umstrukturierung durch Rotationen

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

elementare Datenstrukturen

14. Rot-Schwarz-Bäume

9. Natürliche Suchbäume

Übung: Algorithmen und Datenstrukturen SS 2007

Informatik II, SS 2014

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Ü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

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

18. Natürliche Suchbäume

Tutoraufgabe 1 (Vollständige Induktion):

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume

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

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Programmiertechnik II

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume.

Informatik II, SS 2018

Informatik II Bäume zum effizienten Information Retrieval

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

18. Natürliche Suchbäume

Algorithmen und Datenstrukturen II

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

Übung Algorithmen I

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

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

Vorlesung Datenstrukturen

Mehrwegbäume Motivation

Dynamische Mengen. Realisierungen durch Bäume

Literatur: Kapitel 2.1 des Skripts Rot-Schwarz-Bäume Kapitel 2.2 des Skripts Treaps Cormen. Kapitel 13, Red-Black-Trees

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

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

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen 1

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 143

Programmiertechnik II

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

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Anwendungsbeispiel MinHeap

Datenstrukturen und Algorithmen SS17 Lösung - Übung 5

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

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

7 Weitere Baumstrukturen und Heapstrukturen

Splay-Bäume. Joseph Schröer. Seminar über Algorithmen SoSe 2011, Prof. Dr. Helmut Alt

Informatik II Vorlesung am D-BAUG der ETH Zürich

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

Christian Rieck, Arne Schmidt

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

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

Vorlesung Datenstrukturen

ADS 1: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I Bruder-Bäume

Algorithmen und Datenstrukturen Suchbaum

Übersicht. Einfache Suche. Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren

Datenstrukturen & Algorithmen

Datenstrukturen und Algorithmen. Vorlesung 14

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen 1

Vereinfachen wir diese Rekursionsgleichung zunächst: E ˆT n = 1 n. = 1 n

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

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

AVL-Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. AVL-Bäume 1/38

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I AVL-Bäume

10. Wiederholung Natürliche Suchbäume und Heaps

Algorithmen und Datenstrukturen

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

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

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

Abschnitt 18: Effizientes Suchen in Mengen

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:

WS 2013/14. Diskrete Strukturen

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

Logische Datenstrukturen

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

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

Transkript:

Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität

Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer balanciert sind balanciert, intuitiv: in jedem Teilbaum, links & rechts gleich gross balanciert, formal: Teilbaum mit Knoten hat Tiefe log Rot Schwarz Bäume sind binäre Suchbäume, fuer welche 1) Alle Knoten sind rot oder schwarz 2) Wurzel ist schwarz 3) Blätter (= Knoten) sind schwarz 4) Rote Knoten haben zwei schwarze Kinder 5) Von jedem Knoten aus, haben alle (direkten) Pfade zu Blättern () im Teilbaum von die gleiche Anzahl schwarze Knoten 2

Rot Schwarz Bäume: Beispiel 3

Sentinel Wie bei den Treaps, um den Code zu vereinfachen Sentinel Knoten: Ersetzt alle NULL Pointer.key ist nicht definiert (wird nie gesetzt oder gelesen).color = black Als Blätter des Baumes verstehen wir die Knoten (sind alle schwarz) repräsentiert alle Blätter des Baumes.left,.right,.parent können beliebig gesetzt sein Wir müssen darau achten, dass sie nie ausgelesen werden Wenn es den Code vereinfacht, kann man.parent,... neu setzen 4

Rot Schwarz Bäume: Sentinel 5

Rot Schwarz Bäume: Repräsentation 6

Tiefe / Schwarz Tiefe Definition: Die Tiefe () eines Knoten ist die maximale Länge eines direkten Pfades von zu einem Blatt (). Definition: Die Schwarz Tiefe () eines Knoten ist die Anzahl schwarzer Knoten auf jedem direkten Pfad von zu einem Blatt () Der Knoten wird dabei nicht gezählt, das Blatt (, falls ) jedoch schon! 7

Schwarz Tiefe Anzahl Knoten Lemma: Im Teilbaum eines Knoten mit Schwarz Tiefe ist die Anzahl innerer Knoten Beweis: Per Induktion über die Tiefe von 8

Schwarz Tiefe Anzahl Knoten Lemma: Im Teilbaum eines Knoten mit Schwarz Tiefe ist die Anzahl innerer Knoten Beweis: Per Induktion über die Tiefe von 9

Tiefe eins Rot Schwarz Baumes Theorem: Die Tiefe eines Rot Schwarz Baumes ist. Beweis: Anzahl innerer Knoten : (alle ausser den Knoten) Lemma: 2 1 10

Rot Schwarz Bäume: Einfügen insert(x): 1. Einfügen wie üblich, neu eingefügter Knoten ist rot keycolor parent left right if root == then root = new Node(x,red,,,) else v = root; while v!= and v.key1!= x do if v.key1 > v.x then if v.left == then w = new Node(x,red,v,,); v.left = w v = v.left else if v.right == then w = new Node(x,red,v,,); v.right = w v = v.right 11

Rot Schwarz Bäume: Einfügen Rot Schwarz Baum Bedingungen nach dem Einfügen 1. Alle Knoten sind rot oder schwarz 2. Die Wurzel ist schwarz 3. Die Blätter () sind schwarz 4. Rote Knoten haben zwei schwarze Kinder 5. Von jedem Knoten haben alle direkten Pfade zu Blättern gleich viele schwarze Knoten Falls (eingefügter Knoten) nicht die Wurzel ist oder. parent schwarz ist, sind alle Bedingungen erfüllt Falls die Wurzel ist, kann man einfach schwarz einfügen Falls. parent rot ist, müssen wir den Baum anpassen so, dass 1, 3 und 5 immer erfüllt sind dabei kann die Wurzel auch rot werden 12

Erinnerung: Rotationen Rechtsrotation: Linksrotation: 13

Rot Schwarz Bäume: Einfügen Baum anpassen nach dem Einfügen: Annahmen: ist rot,.parentist rot (sonst sind wir fertig) ist linkes Kind von (anderer Fall symmetrisch) s Geschwisterknoten (rechtes Kind von ) ist schwarz Alle roten Knoten ausser haben 2 schwarze Kinder Fallunterscheidung anhand von Farbe von (Geschwister von ) und anhand von. oder. 14

Rot Schwarz Bäume: Einfügen Fall : Geschwisterknoten von ist schwarz Fall 1a:. 1. right rotate(p,u) 15

Rot Schwarz Bäume: Einfügen Fall : Geschwisterknoten von ist schwarz Fall 1b:. 1. right rotate(u,v) Nach Rotation: symmetrisch zu Fall 1a, sind rot, Geschwister is schwarz ist rechtes Kind von, ist rechtes Kind von Aulösen durch left rotate(p,v) und umfärben 16

Rot Schwarz Bäume: Einfügen Fall : Geschwisterknoten von ist schwarz Fall 1b:. 1. right rotate(u,v) 3. umfärben 17

Rot Schwarz Bäume: Einfügen Fall 2: Geschwisterknoten von ist rot umfärben Falls. parent schwarz ist, sind wir fertig das ist auch der Fall, falls root (dann noch root. color black) Sonst sind wir im gleichen Fall, wie am Anfang aber näher an der Wurzel! 18

Rot Schwarz Bäume: Einfügen 1. Füge neuen Schlüssel normal ein Knotenfarbe des neuen Knoten ist rot 2. Solange man in Fall 2 ist, färbe um Fall 2: roter Knoten mit rotem Parent Knoten Geschwisterknoten von ist auch rot 3. Sobald nicht mehr in Fall 2 Falls es ein Rot Schwarz Baum ist, sind wir fertig Falls die Wurzel rot ist, muss die Wurzel schwarz gefärbt werden Ansonsten ist man in Fall 1a oder 1b (oder symmetrisch) und kann mit Hilfe von höchstens 2 Rotationen und Umfärben von 2 Knoten einen Rot Schwarz Baum erhalten Laufzeit: Baumtiefe log 19

Rot Schwarz Bäume: Löschen 1. Finde wie üblich einen Knoten, welcher gelöscht wird Knoten hat höchstens ein Nicht Kind! Fallunterscheidung (Farbe von und. ) Annahme: ist linkes Kind von (sonst symmetrisch) Fall 1: Knoten ist rot Da mind. 1 Kind haben muss und es ein Rot Schwarz Baum ist, muss 2 Kinder haben kann einfach gelöscht werden Der Baum bleibt ein Rot Schwarz Baum 20

Rot Schwarz Bäume: Löschen Fall 2: Knoten ist schwarz Fall 2a: hat ein (rotes) nicht Kind lösche, färbe schwarz Fall 2b: hat nur Kinder 1. lösche Knoten hat jetzt nach links nur noch Schwarz Tiefe 1 (statt 2) Wir müssen den Baum anpassen 21

Rot Schwarz Bäume: Löschen Problemfall: Knoten hat nur Kinder 1. lösche Wir korrigieren erstmal die Schwarz Tiefe, in dem wir doppelt schwarz färben Ziel: Wir möchten das zusätzliche Schwarz den Baum hochbringen bis wir es entweder bei einem roten Knoten abladen können oder bis wir die Wurzel erreichen (und damit kein Problem mehr haben). Fallunterscheidung: Farbe von und der Kinder von Beobachtung: kann nicht sein (wegen Schwarz Tiefe)! 22

Rot Schwarz Bäume: Löschen Annahme: Doppelt schwarzer Knoten Parent hat beliebige Farbe (markiert als grün) ist linkes Kind von (rechtes Kind: symmetrisch) Geschwisterknoten von (rechtes Kind von ) ist Fallunterscheidung: Fall A: ist schwarz, Fall B: ist rot Fall A.1 Fall A.3 Fall A.2 Fall B 23

Rot Schwarz Bäume: Löschen Fall A.1: ist schwarz, rechtes Kind von ist rot 1. left rotate(u,w) 24

Rot Schwarz Bäume: Löschen Fall A.2: ist schwarz, l. Kind von ist rot, r. Kind ist schwarz 1. right rotate(w,a) Jetzt sind wir wieder in Fall A.1 ( übernimmt Rolle von ) left rotate(, ) und umfärben eliminiert Doppelschwarz 25

Rot Schwarz Bäume: Löschen Fall A.3: ist schwarz, beide Kinder von sind schwarz 1. umfärben Das zusätzliche Schwarz wandert eins nach oben Falls rot ist, kann man jetzt einfach schwarz färben Knoten übernimmt sonst die Rolle von und kann wieder in einem der Fälle A.1, A.2, A.3 oder B (siehe nächste Folie) sein. Fall A.3 kann höchstens log oft vorkommen Falls root, können wir das zusätzliche Schwarz einfach entfernen Bei Fall A.1 und A.2 sind wir direkt fertig 26

Rot Schwarz Bäume: Löschen Fall B: ist rot 1. left rotate(u,w) Jetzt sind wir in Fall A.1, A.2 oder A.3 Bei A.1 oder A.2 sind wir in 1 Zeit fertig Bei A.3 sind wir auch in 1 Zeit fertig, weil jetzt rot ist! 27

Rot Schwarz Bäume: Löschen 1. Wie üblich Finde Knoten mit mind. 1 Kind, welcher gelöscht werden kann ist evtl. Vorgänger/Nachfolger von Knoten mit zu löschendem Schlüssel 2. Falls der gelöschte Knoten schwarz ist, muss man korrigieren Es hat einen schwarzen Knoten mit zusätzlichem Schwarz 3. Mögliche Fälle: A.1, A.2, A.3, B Fall A.1: Mit 1 Rotation und Umfärben von 1 Knoten fertig Fall A.2: Mit 1 Rotation und Umfärben von 1 Knoten in Fall A.1 Fall A.3: Falls. parent rot ist, mit Umfärben von 1 Knoten fertig, falls. parent schwarz ist, wandert zusätzliches Schwarz Richtung Wurzel und man ist ist wieder in A.1, A.2, A.3 oder B Fall B : 1 Rotation und Umfärben von 1 Knoten gibt A.1, A.2 oder A.3, Falls A.3, dann ist. parent rot Laufzeit: Baumtiefe log 28

AVL Bäume Siehe z.b. Buch von Ottmann/Widmayer Direkte Alternative zu Rot Schwarz Bäumen AVL Bäume sind binäre Suchbäume, bei welchem für jeden Knoten gilt, dass.. Anstatt einer Farbe (rot/schwarz) merkt man sich die Tiefe jedes Teilbaums AVL Bäume haben auch immer Tiefe log Sogar mit etwas besserer Konstante als Rot Schwarz Bäume AVL Bedingung kann bei insert/delete jeweils mit log Rotationen wieder hergestellt werden Vergleich zu Rot Schwarzbäumen Suche ist in AVL Bäumen etwas schneller Einfügen / Löschen ist in AVL Bäumen etwas langsamer 29

Bäume Siehe z.b. Vorlesung vom letzten Jahr Parameter 2und 21 Elemente/Schlüssel sind nur in den Blättern gespeichert Alle Blätter sind in der gleichen Tiefe Falls die Wurzel kein Blatt ist, hat sie zwischen 2 und Kinder Alle anderen inneren Knoten haben zwischen und Kinder Ein, Baum ist also kein Binärbaum! Ähnlich: Bäume Da werden in den inneren Knoten Schlüssel gespeichert Für grosse, braucht man etwas mehr Speicher als bei BST Da man meistens gleich für Elemente Platz macht Dafür sind die Bäume viel flacher Speziell gut z.b. für Dateisysteme (Zugriff sehr teuer) 30

Weitere Alternativen AA Trees: ähnlich wie Rot Schwarz Bäume (nur rechte Kinder können rot sein) Splay Trees: Binäre Suchbaum mit zusätzlichen guten Eigenschaften Elemente, auf welche kürzlich zugegriffen wurde, sind weiter oben Gut, falls mehrere Knoten den gleichen Schlüssel haben können Allerdings nicht streng balanciert Skip Lists: Verkettete Listen mit zusätzlichen Abkürzungen kein balancierter Suchbaum, hat aber ähnliche Eigenschaften (picture from wikipedia) 31