Algorithmen und Datenstrukturen 2

Ähnliche Dokumente
ADS: Algorithmen und Datenstrukturen 2

Algorithmen & Komplexität

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Klausurvorbereitung. 1 Zentrale Begriffe. 2 Bipartite Graphen. 2.1 Begriffe. Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S.

Algorithmen und Datenstrukturen 2-2. Seminar -

Wie wird ein Graph dargestellt?

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

1.Aufgabe: Minimal aufspannender Baum

ADS: Algorithmen und Datenstrukturen 2

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Algorithmen und Datenstrukturen

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

ADS: Algorithmen und Datenstrukturen 2

Effiziente Algorithmen I

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

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Flüsse, Schnitte, bipartite Graphen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Wiederholung zu Flüssen

15. Elementare Graphalgorithmen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Bipartite Graphen. Beispiele

Flüsse, Schnitte, bipartite Graphen

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2)

Algorithmen für Planare Graphen

9 Minimum Spanning Trees

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme

Algorithmen und Datenstrukturen Kapitel 10

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Algorithmische Graphentheorie

Datenstrukturen und Algorithmen (SS 2013)

Flüsse, Schnitte, Bipartite Graphen

Datenstrukturen und Algorithmen

Vorlesungstermin 2: Graphentheorie II. Markus Püschel David Steurer. Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

Berechnung von Abständen

Algorithmen II Vorlesung am

Kapitel 1: Flussalgorithmen

4. Kreis- und Wegeprobleme Abstände in Graphen

Kürzeste-Wege-Algorithmen und Datenstrukturen

Maximale s t-flüsse in Planaren Graphen

Inhalt. 1. Flußprobleme. 2. Matching. 3. Lineares Programmieren. 4. Ganzzahliges Programmieren. 5. NP-Vollständigkeit. 6. Approximationsalgorithmen

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

Algorithmen und Datenstrukturen 2

Algorithmen II Vorlesung am

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

ADS: Algorithmen und Datenstrukturen 2

Flüsse in Netzwerken

Algorithmen und Datenstrukturen 2-1. Seminar -

Vorlesung Datenstrukturen

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

Algorithmische Graphentheorie

Kombinatorische Optimierung

Kap. 6.6: Kürzeste Wege

Effiziente Algorithmen I

Kap. 6.6: Kürzeste Wege

Diskrete Mathematik Graphentheorie (Übersicht)

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2009

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Teil 2: Graphenalgorithmen

Richtig oder falsch? Richtig oder falsch? Richtig oder falsch? Mit dynamischer Programmierung ist das Knapsack- Problem in Polynomialzeit lösbar.

EDM, Algorithmen und Graphenspeicherung

Aufgaben zur Klausurvorbereitung

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Vorlesung Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

6. Flüsse und Zuordnungen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen und Datenstrukturen Kapitel 9. und

Kapitel 8: Bipartite Graphen Gliederung der Vorlesung

Transkript:

Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de

Wdhlg.: Dijkstra-Algorithmus I Bestimmung der von einem Knoten ausgehenden kürzesten Wege - gegeben: kanten-bewerteter Graph G = (V,E, g) mit g: E -> R+ (Kantengewichte) - Startknoten s; zu jedem Knoten u wird die Distanz zu Startknoten s in D[u] geführt - Q sei Prioritäts-Warteschlange (sortierte Liste); Priorität = Distanzwert - Funktion succ(u) liefert die Menge der direkten Nachfolger von u Verallgemeinerung der Breitensuche (gewichtete Entfernung) funktioniert nur bei nicht-negativen Gewichten Optimierung gemäß Greedy-Prinzip P. Stadler Algorithmen und Datenstrukturen 2 2

Wdhlg.: Dijkstra-Algorithmus II Dijkstra (G,s): P. Stadler Algorithmen und Datenstrukturen 2 3

Dijkstra-Algorithmus: Beispiel P. Stadler Algorithmen und Datenstrukturen 2 4

Dijkstra-Algorithmus: Korrektheit Korrektheitsbeweis - nach i Schleifendurchgängen sind die Längen von i Knoten, die am nächsten an s liegen, korrekt berechnet und diese Knoten sind aus Q entfernt. - Induktionsanfang: s wird gewählt, D(s) = 0 - Induktionsschritt: Nimm an, v wird aus Q genommen. Der kürzeste Pfad zu v gehe über direkten Vorgänger v' von v. Da v' näher an s liegt, ist v' nach Induktionsvoraussetzung mit richtiger Länge D(v') bereits entfernt. Da der kürzeste Weg zu v die Länge D(v') + g((v',v)) hat und dieser Wert bei Entfernen von v' bereits v zugewiesen wurde, wird v mit der richtigen Länge entfernt. - erfordert nichtnegative Kantengewichte (steigende Länge durch hinzugenommene Kanten) P. Stadler Algorithmen und Datenstrukturen 2 5

Dijkstra-Algorithmus: Eigenschaften Komplexität <= O(n 2 ) - n-maliges Durchlaufen der äußeren Schleife liefert Faktor O(n) - innere Schleife: Auffinden des Minimums begrenzt durch O(n), ebenso das Aufsuchen der Nachbarn von v Pfade bilden aufspannenden Baum (der die Wegstrecken von s aus gesehen minimiert) Bestimmung des kürzesten Weges zwischen u und v: Spezialfall für Dijkstra-Algorithmus mit Start-Knoten u (Beendigung sobald v aus Q entfernt wird) P. Stadler Algorithmen und Datenstrukturen 2 6

Kürzeste Wege mit negativen Kantengewichten (ohne negative Zyklen) Bellmann-Ford-Algorithmus BF(G,s): for each Knoten v V - s do { D[v] = ; }; D[s] = 0; for i = 1 to V -1 do for each (u,v) E do { if D[u] + g((u,v)) < D[v] then D[v] = D[u] + g((u,v)); } P. Stadler Algorithmen und Datenstrukturen 2 7

Minimale Spannbäume I Problemstellung: zu zusammenhängendem Graph soll Spannbaum (aufspannender Baum) mit minimalem Kantengewicht (minimale Gesamtlänge) bestimmt werden - relevant z.b. zur Reduzierung von Leitungskosten in Versorgungsnetzen P. Stadler Algorithmen und Datenstrukturen 2 8

Minimale Spannbäume II Kruskal-Algorithmus (1956) - Sei G = (V, E, g) mit g: E -> R (Kantengewichte) gegebener ungerichteter, zusammenhängender Graph. Zu bestimmen minimaler Spannbaum T = (V, E') - E' = {}; sortiere E nach Kantengewicht und bringe die Kanten in PriorityQueue Q; jeder Knoten v bilde eigenen Spannbaum(-Kandidat) - solange Q nicht leer: - entferne erstes Element e = (u,v) - wenn beide Endknoten u und v im selben Spannbaum sind, verwerfe e, ansonsten nehme e in E' auf und fasse die Spannbäume von u und v zusammen P. Stadler Algorithmen und Datenstrukturen 2 9

Minimale Spannbäume II Analog: Bestimmung maximaler Spannbäume (absteigende Sortierung) Anwendung des Kruskal-Algorithmus Komplexität O(m log n) P. Stadler Algorithmen und Datenstrukturen 2 10

Minimale Spannbäume III Alternative Berechnung (Dijkstra) - Startknoten s - Knotenmenge B enthält bereits abgearbeitete Knoten Es wird nur 1 Spannbaum erzeugt Effiziente Implementierbarkeit mit PriorityQueue über Kantengewicht P. Stadler Algorithmen und Datenstrukturen 2 11

Flüsse in Netzwerken I Anwendungsprobleme: - Wieviel Autos können durch ein Straßennetz fahren? - Wieviel Abwasser fasst ein Kanalnetz? - Wieviel Strom kann durch ein Leitungsnetz fließen? q 8 a 6 4 5 c 10 s 4 b 3 d 4 Kantenmarkierung: Kapazität c(e) P. Stadler Algorithmen und Datenstrukturen 2 12

Flüsse in Netzwerken II Ein (Fluß-) Netzwerk ist ein gerichteter Graph G = (V, E, c) mit ausgezeichneten Knoten q (Quelle) und s (Senke), sowie einer Kapazitätsfunktion c: E -> Z +. Ein Fluß für das Netzwerk ist eine Funktion f: E -> Z, so daß gilt: - Kapazitätsbeschränkung: f(e) c(e), für alle e in E. - Flußerhaltung: für alle v in V \ {q,s}: Σ (v',v) E f((v',v)) = Σ (v,v') E f((v,v')) - Der Wert von f, w(f), ist die Summe der Flußwerte der die Quelle q verlassenden Kanten: Σ (q,v) E f((q,v)) q 8/6 4/1 a b 6/6 c 4/0 5/2 3/3 d 10/4 4/3 Kantenmarkierung: Kapazität c(e) / Fluß f(e) s P. Stadler Algorithmen und Datenstrukturen 2 13

Flüsse in Netzwerken III Gesucht: Fluß mit maximalem Wert - begrenzt durch Summe der aus q wegführenden bzw. in s eingehenden Kapazitäten - jeder weitere "Schnitt" durch den Graphen, der q und s trennt, begrenzt max. Fluss Schnitt (A, B) eines Fluß-Netzwerks ist eine Zerlegung von V in disjunkte Teilmengen A und B, so daß q A und s B. - Die Kapazität des Schnitts ist c(a,b) = Σ u A, v B c((u,v)) - minimaler Schnitt (minimal cut): Schnitt mit kleinster Kapazität P. Stadler Algorithmen und Datenstrukturen 2 14

Restgraph Sei f ein zulässiger Fluß für G = (V, E, c). Sei E' = {(v,w) (v,w) E oder (w,v) E} - Wir definieren die Restkapazität einer Kante e = (v,w) wie folgt: rest(e) = c(e) - f(e) f((w,v)) falls e E falls (w,v) E - Der Restgraph von f (bzgl. G) besteht aus den Kanten e E', für die rest(e) > 0 q 8/6 4/1 a b 6/6 c 4/0 5/2 3/3 d 10/4 4/3 Restgraph: a c s q s b d Kantenmarkierung: rest(e) P. Stadler Algorithmen und Datenstrukturen 2 15

Zunehmender Weg Jeder gerichtete Pfad von q nach s im Restgraphen heißt zunehmender Weg. zunehmender Weg: q a c s Optimierung des Flusses für G: - entlang des zunehmenden Weges q - um min(rest(e)) mit e liegt auf q b d Optimiertes Netzwerk: q a c s b d P. Stadler Algorithmen und Datenstrukturen 2 16

Min-Cut-Max-Flow-Theorem Theorem (Min-Cut-Max-Flow-Theorem): Sei f zulässiger Fluß für G. Folgende Aussagen sind äquivalent: 1) f ist maximaler Fluß in G. 2) Der Restgraph von f enthält keinen zunehmenden Weg. 3) w(f) = c(a,b) für einen Schnitt (A,B) von G. P. Stadler Algorithmen und Datenstrukturen 2 17

Ford-Fulkerson-Algorithmus Ford-Fulkerson-Algorithmus - füge solange zunehmende Wege zum Gesamtfluß hinzu wie möglich - Kapazität erhöht sich jeweils um Minimum der verfügbaren Restkapazität der einzelnen Kanten des zunehmenden Weges for each e E { f(e) = 0; } while (es gibt zunehmenden Weg p im Restgraphen von G) { r = min(rest(e) e liegt auf p); for each e = (v,w) auf p { if (e E) f(e) = f(e) + r; else f((w,v)) = f((w,v)) r; } } P. Stadler Algorithmen und Datenstrukturen 2 18

Maximales Matching Beispiel: - Eine Gruppe von Erwachsenen und eine Gruppe von Kindern besuchen Disneyland. - Auf der Achterbahn darf ein Kind jeweils nur in Begleitung eines Erwachsenen fahren. - Nur Erwachsene/Kinder, die sich kennen, sollen zusammen fahren. Wieviele Kinder können maximal eine Fahrt mitmachen? P. Stadler Algorithmen und Datenstrukturen 2 19

Matching Matching (Zuordnung) M für ungerichteten Graphen G = (V, E) ist eine Teilmenge der Kanten, so daß jeder Knoten in V in höchstens einer Kante vorkommt - M = Größe der Zuordnung - Perfektes Matching: kein Knoten bleibt "allein" (unmatched), d.h. jeder Knoten ist in einer Kante von M vertreten Matching M ist maximal, wenn es kein Matching M' gibt mit M < M' Ein bipartiter Graph ist ein Graph, dessen Knotenmenge V in zwei disjunkte Teilmengen V1 und V2 aufgeteilt ist, und dessen Kanten jeweils einen Knoten aus V1 mit einem aus V2 verbinden P. Stadler Algorithmen und Datenstrukturen 2 20

Matching und maximaler Fluß Maximales Matching kann auf maximalen Fluß zurückgeführt werden: - Quelle und Senke hinzufügen. - Kanten von V1 nach V2 richten. - Jeder Knoten in V1 erhält eingehende Kante von der Quelle. - Jeder Knoten in V2 erhält ausgehende Kante zur Senke. - Alle Kanten erhalten Kapazität c(e) = 1. 1 1 1 Anwendung des Ford-Fulkerson-Algorithmus 1 1 1 1 1 1 1 1 1 1 Kantenmarkierung: Kapazität c(e) P. Stadler Algorithmen und Datenstrukturen 2 21

Zusammenfassung I Viele wichtige Informatikprobleme lassen sich mit gerichteten bzw. ungerichteten Graphen behandeln. wesentliche Implementierungsalternativen: Adjazenzmatrix und Adjazenzlisten Algorithmen mit linearem Aufwand: - Traversierung von Graphen: Breitensuche vs. Tiefensuche - Topologisches Sortieren - Test auf Azyklität P. Stadler Algorithmen und Datenstrukturen 2 22

Zusammenfassung II Weitere wichtige Algorithmen: - Warshall-Algorithmus zur Bestimmung der transitiven Hülle - Dijkstra-Algorithmus bzw. Bellmann-Ford für kürzeste Wege - Kruskal-Algorithmus für minimale Spannbäume - Ford-Fulkerson-Algorithmus für maximale Flüsse bzw. maximales Matching viele NP-vollständige Optimierungsprobleme - Traveling Salesman Problem, Cliquenproblem, Färbungsproblem... - Bestimmung eines planaren Graphen (Graph-Darstellung ohne überschneidende Kanten) P. Stadler Algorithmen und Datenstrukturen 2 23