Informatik II, SS 2014

Ähnliche Dokumente
Informatik II, SS 2016

Informatik II, SS 2018

Informatik II, SS 2014

Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Kap. 6.5: Minimale Spannbäume ff

Berechnung minimaler Spannbäume. Beispiel

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

3.2 Generischer minimaler Spannbaum-Algorithmus

Grundlagen: Algorithmen und Datenstrukturen

25. Minimale Spannbäume

9 Minimum Spanning Trees

24. Minimale Spannbäume

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Informatik II, SS 2014

Algorithmen I - Tutorium 28 Nr. 11

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Informatik II, SS 2014

Informatik II, SS 2014

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen

Wie wird ein Graph dargestellt?

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität.

Informatik II, SS 2018

Informatik II, SS 2016

Sortieren II / HeapSort Heaps

Algorithmen und Datenstrukturen Kapitel 9. und

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

Kap. 6.5: Minimale Spannbäume

Informatik II, SS 2016

ADS: Algorithmen und Datenstrukturen 2

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

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Algorithmen & Komplexität

Informatik II, SS 2016

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen und Datenstrukturen

Kürzeste (billigste) Wege

Teil 2: Graphenalgorithmen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

ADS: Algorithmen und Datenstrukturen 2

Laufzeitanalyse (1) demogr.

Informatik II, SS 2018

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Algorithmen und Datenstrukturen 2

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Algorithmen und Datenstrukturen

Erinnerung VL

Informatik II, SS 2016

ADS: Algorithmen und Datenstrukturen 2

Informatik II, SS 2016

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Algorithmen und Datenstrukturen Kapitel 9. und

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Graphalgorithmen Minimale Spannbäume. Kruskal: Minimaler Spannbaum

Funktioniert der Greedy-Algorithmus auch für Briefmarken aus Manchukuo?

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

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

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Informatik II, SS 2018

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

markiert, 0: unmarkiert.)

Tutoraufgabe 1 (Implementierung eines ADTs):

Algorithmische Graphentheorie

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

18. Natürliche Suchbäume

Informatik II Prüfungsvorbereitungskurs

Minimal spannende Bäume

Algorithmen II. Peter Sanders, Thomas Worsch, Simon Gog. Übungen: Demian Hespe, Yaroslav Akhremtsev

Übung Algorithmen und Datenstrukturen

Kapitel IV Minimale Spannbäume

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Karlsruher Institut für Technologie. Klausur Algorithmen I

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

ADS: Algorithmen und Datenstrukturen 2

Fragenkatalog 1. Kurseinheit

Fibonacci-Heaps und deren Anwendung

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

Datenstrukturen. einfach verkettete Liste

Vorlesung Datenstrukturen

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

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

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

ADS: Algorithmen und Datenstrukturen 2

Anwendungsbeispiel MinHeap

Quicksort ist ein Divide-and-Conquer-Verfahren.

Graphdurchmusterung, Breiten- und Tiefensuche

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt

Transkript:

Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität

Minimaler Spannbaum Gegeben: Zus. hängender, ungerichteter Graph,, mit Kantengewichten Minimaler Spannbaum, : Spannbaum mitkleinstemgesamtgewicht 1 1 2 3 3 9 7 3 4 2 15 8 6 6 1 5 8 6 9 7 2

Basis MST Algorithmus Invariante: Algorithmus hat zu jeder Zeit eine Kantenmenge, so dass Teilmenge eines minimalen Spannbaums ist. Basis MST Algorithmus: = while ist kein Spannbaum do Finde sichere Kante, für =, return Invariante ist eine gültige Schleifeninvariante Invariante + Abbruchbedingung ist ein MST! 3

Wie findet man sichere Kanten? Invariante es gibt immer mindestens eine sicher Kante ist Teilmenge eines MST und kann daher zu einem MST erweitert werden Zuerst benötigen wir ein paar Begriffe Schnitt, : Kante, ist eine Schnittkante bezüglich,, falls ein Ende in und ein Ende in ist. Wir nennen Kante, eine leichte Schnittkante bez.,, falls sie das kleinste Gewicht von allen Schnittkanten hat 4

Sichere Kanten Annahmen:,, ist zus. h., unger. Graph mit Kantengewichten ist Teilmenge (Teilgraph) eines MST Theorem: Sei, ein Schnitt, so dass keine Schnittkanten enthält und sei,,, eine leichte Schnittkante bezüglich,. Dann ist, eine sichere Kante für. 1 1 2 3 3 4 2 6 5 9 7 8 6 3 9 6 15 7 8 1 5

Kruskal s MST Algorithmus = while ist kein Spannbaum do, ist Kante mit kleinstem Gewicht, so dass, keinen Zyklus enthält =, Wir müssen zeigen, dass eine sichere Kante für ist 6

Kruskal s MST Algorithmus: Beispiel 1 13 16 3 6 4 14 7 2 28 10 21 31 23 17 9 19 12 20 25 8 18 11 7

Kruskal s MST Algorithmus: Bemerkungen Kruskal s Algorithmus berechnet minimalen Spannbaum Die hinzugefügte Kante ist in jedem Schritt sicher Wir haben gesehen, dass der Basis Algorithmus korrekt ist Kruskal s Algorithmus ist ein typisches Beispiel eines sogenannten Greedy Algorithmus Wir beginnen mit einer leeren Kantenmenge In jedem Schritt wird die im Moment beste Kante hinzugenommen Eine gewählte Kante wird nie wieder verworfen Wir werden noch kurz besprechen, wie man den Algorithmus effizient implementieren kann... 8

Implementierung Kruskal s Algorithmus Kruskal s Algorithmus (Pseudo Code) 1. = 2. Sortiere Kanten aufsteigend nach Kantengewicht 3. for =, (in sorted order) do 4. if and are in different components then 5. = 9

Implementierung Kruskal s Algorithmus Kruskal s Algorithmus (Pseudo Code) 1. = 2. Sortiere Kanten aufsteigend nach Kantengewicht 3. for =, (in sorted order) do 4. if and are in different components then 5. = Müssen Komponenten des durch bestimmten Graphen effizient verwalten können Laufzeit: log für s Sortieren, sowie die Gesamtzeit, um die Komponenten zu verwalten 10

Union Find / Disjoint Sets Datentyp Verwaltet eine Partition von Elementen Operationen: create : erzeugt eine leere Union Find DS U.makeSet(x) : fügt Menge zur Partition hinzu U.find(x) : gibt Menge mit Element zurück U.union(S1, S2) : vereinigt die Mengen 1 und 2 Details dazu werden in der Algorithmentheorie besprochen 11

Kruskal mit Union Find Kruskal s Algorithmus 1. = 2. U = create new 3. for all do 4. U.makeSet( ) 5. Sortiere Kanten aufsteigend nach Kantengewicht 6. for all =, (in sorted order) do 7. = U.find( ); = U.find( ) 8. if then 9. = 10. U.union(, ) 12

Kruskal: Laufzeitanalyse Beste Union Find Datenstruktur Laufzeit für Union Find Operationen auf Elementen ( makeset Operationen):,, ist die Inverse der Ackermannfunktion und wächst extrem langsam (für alle halbwegs vernünftigen,,, 5) Laufzeit Kruskal Kanten sortieren: log Union Find Operationen:, Insgesamt: log besser, falls Kantengewichte schneller sortiert werden können 13

MST Eindeutigkeit Im Allgemeinen ist der MST nicht eindeutig Satz: Bei paarweise verschiedenen Kantengewichten ist der MST eindeutig. 14

Prim s MST Algorithmus Sollte man wohl eigentlich Jarvík s Algorithmus nennen wurde 1957 von Prim und bereits 1930 von Jarvík publiziert Eine zweite Implementierung des Basis Algorithmus = while ist kein Spannbaum do Finde sichere Kante, für =, return Idee: ist immer ein zusammenhängender Teilbaum Starte bei einem beliebigen Knoten Baum wächst von aus, indem immer eine leichte Schnittkante des durch induzierten Schnitts hinzugefügt wird. 15

Sichere Kanten Annahmen:,, ist zus. h., unger. Graph mit Kantengewichten ist Teilmenge (Teilgraph) eines MST Theorem: Sei, ein Schnitt, so dass keine Schnittkanten enthält und sei,,, eine leichte Schnittkante bezüglich,. Dann ist, eine sichere Kante für. 1 1 2 3 3 4 2 6 5 9 7 8 6 3 9 6 15 7 8 1 16

Prim s MST Algorithmus = while ist kein Spannbaum do, ist Kante mit kleinstem Gewicht, so dass und =, Wir müssen zeigen, dass eine sichere Kante für ist 17

Prim s MST Algorithmus: Beispiel 1 13 16 3 6 4 14 7 2 28 10 21 31 23 17 9 19 12 20 25 8 18 11 18

Implementierung von Prim s Algorithmus Knoten, welche im Teilbaum sind, heissen markiert Knoten : ist der nächste Nachbar von im durch bestimmten Teilbaum dist, (oder falls NULL) for all do.marked = false; = ; = NULL = 0; = // Wir starten bei Knoten while there are unmarked nodes do = unmarked node with minimal for all neighbors of do if, then = ; =,.marked = true if then =, 19

Prioritätswarteschlange Heap / Priority Queue: Verwaltet eine Menge von (key,value) Paaren Operationen: create : erzeugt einen leeren Heap H.insert(x, key) : fügt Element x mit Schlüssel key ein H.getMin() : gibt Element mit kleinstem Schlüssel zurück H.deleteMin() : löscht Element mit kleinstem Schlüssel (gibt Element mit kleinstem Schlüssel zurück) H.decreaseKey(x, newkey) : Falls newkey kleiner als der aktuelle Schlüssel von x ist, wird der Schlüssel von x auf newkey gesetzt 20

Implementierung von Prim s Algorithmus for all do.marked = false; = ; = NULL = 0; = // Wir starten bei Knoten while there are unmarked nodes do = unmarked node with minimal for all neighbors of do if, then = ; =,.marked = true if then =, 21

Implementierung von Prim s Algorithmus = new priority queue; = for all do.insert(, ); = NULL.insert(, 0) while is not empty do = H.deleteMin() for all neighbors of do if, then.decreasekey(,, ) = if then =, 22

Analyse von Prim s MST Algorithmus Anzahl Priority Queue Operationen create insert getmin / deletemin decreasekey Gesamt Laufzeit 23

Prioritätswarteschlangen Implementierung als Binärbaum mit Min Heap Eigenschaft Die Datenstruktur heisst deshalb oft auch Heap Ein Baum hat die Min Heap Eigenschaft, falls in jedem Teilbaum, die Wurzel den kleinsten Schlüssel hat getmin Operation: trivial! Baum wird immer so balanciert, wie möglich gehalten 24

Prioritätswarteschlangen: Einfügen 3 10 7 12 13 23 9 17 14 25

Prioritätswarteschlangen: Delete Min 3 10 7 11 13 23 9 17 14 16 26

Prioritätswarteschlangen: Decrease Key 3 10 7 11 13 23 9 17 14 16 17 24 27