Mergeable Heaps. C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117

Ähnliche Dokumente
13. Binäre Suchbäume

Suchen und Sortieren Sortieren. Heaps

Informatik II, SS 2014

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Algorithmen und Datenstrukturen Suchbaum

11.1 Grundlagen - Denitionen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

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

Datenstrukturen und Algorithmen

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

Dynamische Mengen. Realisierungen durch Bäume

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:

Informatik II, SS 2014

Sortierte Folgen 250

14. Rot-Schwarz-Bäume

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

Informatik II Fibonacci-Heaps & Amortisierte Komplexität

8. Übung zu Algorithmen I 15. Juni 2016

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

Algorithmen II Vorlesung am

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

4 Greedy-Algorithmen (gierige Algorithmen)

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

Abschnitt 18: Effizientes Suchen in Mengen

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Übung zur Vorlesung Algorithmische Geometrie

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Programmiertechnik II

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

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

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

Algorithmen und Datenstrukturen Balancierte Suchbäume

Kap. 4.2: Binäre Suchbäume

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Kapitel 9 Suchalgorithmen

Datenstrukturen & Algorithmen

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

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Geordnete Binärbäume

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Erinnerung VL

9. Übung Algorithmen I

Vorlesung Datenstrukturen

Programmiertechnik II

Programmierung und Modellierung

Balancierte Suchbäume

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps

Datenstrukturen. einfach verkettete Liste

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Copyright, Page 1 of 8 AVL-Baum

3 Klassifikation wichtiger Optimierungsprobleme

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.

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

Polygontriangulierung

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

8 Diskrete Optimierung

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen

Algorithmen und Datenstrukturen

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

Binary Decision Diagrams (Einführung)

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

9. Übung Algorithmen I

Suchen und Sortieren

Tutorium Algorithmen & Datenstrukturen

Kapitel 9 Suchalgorithmen

4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Verkettete Datenstrukturen: Bäume

Grundlagen der Programmierung 2. Bäume

Fully dynamic algorithms for the single source shortest path problem.

Studientag zur Algorithmischen Mathematik

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

3. Übung Algorithmen I

Höhe eines B + -Baums

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Tutoraufgabe 1 (2 3 4 Bäume):

Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16

Algorithmen & Datenstrukturen 1. Klausur

Teil II: Prioritätslisten (Priority Queues)

Algorithmische Intelligenz. Amortisierung. Stefan Edelkamp

Algorithmen und Datenstrukturen

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

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

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Programmierung 1 - Repetitorium

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Transkript:

C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117 Mergeable Heaps Erweiterung von Standardheaps, die die folgenden fünf Operationen unterstützen. Make-Heappq liefert neuen, leeren Heap. InsertpH, xq fügt Element x in Heap ein. MinimumpHq findet das Element in H mit kleinstem Schlüssel. Extract-MinpHq findet das Element in H mit kleinstem Schlüssel und entfernt es. UnionpH 1, H 2 q vereinigt Heaps H 1 und H 2 zu neuem Heap H, H 1 und H 2 werden dabei gelöscht.

C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 118 Fibonacci-Heaps vs. Binärheaps Fibonacci-Heaps sind Mergeable Heaps und unterstützen 2 weitere Operationen: Decrease-KeypH, x, kq DeletepH, x q Diese Operationen werden auch von Binärheaps unterstützt. Vergleich der Laufzeiten: Operation Binärheap Fibonacci-Heap Make-Heap Insert Minimum Extract-Min Union Decrease-Key Delete

C. Komusiewicz 7.2 Fibonacci-Heaps: Definition 119 Fibonacci-Heaps: Struktur Definition Ein Fibonacci-Heap ist eine Menge von gewurzelten Bäumen, die die Min-Heap-Eigenschaft erfüllen. Min-Heap-Eigenschaft: Fibonacci-Heaps sind keine Suchbäume: es besteht keine Beziehung zwischen den Teilbäumen die an den Kindern gewurzelt sind. Jeder Knoten hat zwei zusätzliche Attribute:

C. Komusiewicz 7.2 Fibonacci-Heaps: Definition 120 Fibonacci-Heaps: Zeigerstruktur Ein Fibonacci-Heap wird wie folgt dargestellt: Die Wurzelliste ist eine doppelt verkettete Liste, die alle Wurzeln enthält. Für jeden Knoten gibt es eine doppelt verkettete Liste, die seine Kinder enthält. Jeder Knoten hat Zeiger auf seinen Vater und auf ein Kind. H. min : Zeiger auf Wurzel eines Baums in H, der den minimalen Schlüssel enthält. H. size : Anzahl der aktuell gespeicherten Knoten

C. Komusiewicz 7.2 Fibonacci-Heaps: Definition 121 Potentialfunktion Für die amortisierte Analyse der Kosten der einzelnen Operationen benutzen wir die Potentialfunktion wobei Beispiel

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 122 Make-Heap und Minimum Make-Fib-Heappq 1 H. size 0 2 H. min NIL 3 return H Es gilt: Amortisierte Kosten: MinimumpHq 1 return H.min Tatsächliche Kosten: Veränderung des Potentials: Amortisierte Kosten:

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 123 Einfügen Fib-Heap-InsertpH, x q 1 x. deg : 0 2 prxs : NIL 3 childrxs : NIL 4 leftrxs : x 5 rightrxs : x 6 x. label : False

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 123 Einfügen Fib-Heap-InsertpH, x q 1 x. deg : 0 2 prxs : NIL 3 childrxs : NIL 4 leftrxs : x 5 rightrxs : x 6 x. label : False 7 verkette Wurzelliste von x mit Wurzelliste von H 8 if H. min NIL oder x. key ă H. min. key then 9 H. min : x 10 H. size : H. size `1 Amortisierte Kosten:

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 124 Vereinigung Fib-Heap-UnionpH 1, H 2 q 1 H : Make-Fib-Heappq 2 H. min : H 1. min

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 124 Vereinigung Fib-Heap-UnionpH 1, H 2 q 1 H : Make-Fib-Heappq 2 H. min : H 1. min 3 verkette Wurzelliste von H mit Wurzelliste von H 2

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 124 Vereinigung Fib-Heap-UnionpH 1, H 2 q 1 H : Make-Fib-Heappq 2 H. min : H 1. min 3 verkette Wurzelliste von H mit Wurzelliste von H 2 4 if H. min NIL oder H 2. min NIL und H 2. min. key ă H 1. min. key then 5 H. min : H 2. min

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 124 Vereinigung Fib-Heap-UnionpH 1, H 2 q 1 H : Make-Fib-Heappq 2 H. min : H 1. min 3 verkette Wurzelliste von H mit Wurzelliste von H 2 4 if H. min NIL oder H 2. min NIL und H 2. min. key ă H 1. min. key then 5 H. min : H 2. min 6 H. size : H 1. size `H 2. size 7 return H Amortisierte Kosten:

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 125 Extract-Min Nach Entfernen des Minimums muss neues Minimum bestimmt werden. Problem: Idee: Fib-Heap-Extract-MinpHq 1 z : H. min 2 if z NIL then 3 foreach Kind x von z do 4 füge x zur Wurzelliste von H hinzu 5 prxs : NIL

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 125 Extract-Min Nach Entfernen des Minimums muss neues Minimum bestimmt werden. Problem: Idee: Fib-Heap-Extract-MinpHq 1 z : H. min 2 if z NIL then 3 foreach Kind x von z do 4 füge x zur Wurzelliste von H hinzu 5 prxs : NIL 6 Entferne z aus Wurzelliste von H 7 if z rightrzs then 8 H. min : NIL

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 125 Extract-Min Nach Entfernen des Minimums muss neues Minimum bestimmt werden. Problem: Idee: Fib-Heap-Extract-MinpHq 1 z : H. min 2 if z NIL then 3 foreach Kind x von z do 4 füge x zur Wurzelliste von H hinzu 5 prxs : NIL 6 Entferne z aus Wurzelliste von H 7 if z rightrzs then 8 H. min : NIL 9 else 10 H. min : rightrzs 11 ConsolidatepHq 12 H. size : H. size 1 13 return z

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 126 Konsolidierung Ziel: Reduziere Anzahl der Bäume im Heap Strategie: Suche nach Bäumen mit Wurzeln x und y, sodass x. deg y. deg und x. key ď y. key Mache y zu Kind von x mittels Fib-Heap-Link.

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 126 Konsolidierung Ziel: Reduziere Anzahl der Bäume im Heap Strategie: Suche nach Bäumen mit Wurzeln x und y, sodass x. deg y. deg und x. key ď y. key Mache y zu Kind von x mittels Fib-Heap-Link. Fib-Heap-LinkpH, y, xq 1 Entferne y aus Wurzelliste von H 2 Mache y zu Kind von x 3 x. deg x. deg `1 4 y. label : False

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 126 Konsolidierung Ziel: Reduziere Anzahl der Bäume im Heap Strategie: Suche nach Bäumen mit Wurzeln x und y, sodass x. deg y. deg und x. key ď y. key Mache y zu Kind von x mittels Fib-Heap-Link. Fib-Heap-LinkpH, y, xq 1 Entferne y aus Wurzelliste von H 2 Mache y zu Kind von x 3 x. deg x. deg `1 4 y. label : False Wie findet man schnell Paare von Wurzeln mit gleichem Grad? Verwenden Hilfsarray Ar0... DpnpHqqs wobei DpnpHqq Aris y :ô

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 127 Konsolidierung: Pseudocode ConsolidatepHq 1 for i : 0 to DpnpHqq do 2 Aris : NIL

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 127 Konsolidierung: Pseudocode ConsolidatepHq 1 for i : 0 to DpnpHqq do 2 Aris : NIL 3 foreach Knoten w in Wurzelliste von H do 4 x : w; x. deg d 5 while Ards NIL do 6 y : Ards 7 if x. key ą y. key then 8 vertausche x und y 9 Fib-Heap-LinkpH, y, x q 10 Ards : NIL; d : d ` 1 11 Ards : x

Konsolidierung: Pseudocode ConsolidatepHq 1 for i : 0 to DpnpHqq do 2 Aris : NIL 3 foreach Knoten w in Wurzelliste von H do 4 x : w; x. deg d 5 while Ards NIL do 6 y : Ards 7 if x. key ą y. key then 8 vertausche x und y 9 Fib-Heap-LinkpH, y, x q 10 Ards : NIL; d : d ` 1 11 Ards : x 12 H. min NIL 13 for i : 0 to DpnpHqq do 14 if Aris NIL then 15 Füge Aris zur Wurzelliste von H hinzu 16 if H. min NIL oder Aris. key ă H. min. key then 17 H. min : Aris C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 127

C. Komusiewicz 7.3 Fibonacci-Heaps: Operationen 128 Konsolidierung: Analyse Es gilt: nach Beendung von Consolidate haben alle Knoten in der Wurzelliste verschiedene Knotengrade Lemma Consolidate hat amortisierte Kosten OpDpnqq wobei Dpnq der maximale Knotengrad in H ist. Beweis Ñ Tafel Satz Sei H ein Fibonacci-Heap mit n Knoten und Dpnq sein maximaler Knotengrad. Auf H kosten Insert, Minimum und Union amortisiert Op1q Zeit und Extract-Min amortisiert OpDpnqq Zeit.