Übung 5 Algorithmen II

Ähnliche Dokumente
Flüsse und Schnitte von Graphen

Laufzeit. Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V 1, V 2 }) mit der Ford Fulkerson Methode.

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

4.7 Der Algorithmus von Dinic für maximalen Fluss

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Flüsse in Netzwerken

Maximale s t-flüsse in Planaren Graphen

KAPITEL 4 FLÜSSE IN NETZWERKEN

Flüsse, Schnitte, bipartite Graphen

Algorithmen und Datenstrukturen Klausur WS 2006/07 Software-Engineering und Technische Informatik Bachelor

Wiederholung zu Flüssen

Maximale s t-flüsse in Planaren Graphen

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

Kapitel 1: Flussalgorithmen

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

1.Aufgabe: Minimal aufspannender Baum

Algorithmen II Vorlesung am

6. Flüsse und Zuordnungen

10. Übung Algorithmen I

Flüsse, Schnitte, bipartite Graphen

Flüsse, Schnitte, Bipartite Graphen

Kombinatorische Optimierung

Algorithmische Graphentheorie

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin

6 Flüsse und Matchings

Datenstrukturen & Algorithmen

Breitensuche BFS (Breadth First Search)

Effiziente Algorithmen (SS2014)

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

Maximale s t-flüsse in Planaren Graphen

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

Kombinatorische Optimierung

Algorithmen und Datenstrukturen 2-1. Seminar -

Klausur zum Modul Einführung in die Diskrete Mathematik

Kombinatorische Optimierung

Kombinatorische Optimierung

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Bipartite Graphen. Beispiele

3. Musterlösung. Problem 1: Boruvka MST

Vorlesung Datenstrukturen

\ 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.

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

Vorlesung 4 BETWEENNESS CENTRALITY

9. Übung Algorithmen I

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen zur Berechnung von Matchings

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

Übungsblatt 2 - Lösung

Algorithmen und Datenstrukturen Kapitel 10

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

Graphentheorie. Maximale Flüsse. Maximale Flüsse. Maximale Flüsse. Rainer Schrader. 31. Oktober Gliederung. sei G = (V, A) ein gerichteter Graph

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

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

Vorlesung. Graphenalgorithmen. Sommersemester Angelika Steger. ETH Zürich

FLÜSSE, SCHNITTE UND - TEIL 2 - BIPARTITE GRAPHEN. Vortrag im Seminar Hallo Welt Für Fortgeschrittene Dozenten: Werth, T. & Brinkers, D.

Fortgeschrittene Netzwerk- und Graph-Algorithmen

durch Einfügen von Knoten konstruiert werden kann.

Kapitel 1: Flussalgorithmen

Effiziente Algorithmen Übung 2 Lösungen

VU Algorithmen auf Graphen Übungsblatt 2 - Aufgabe 2 Transformation einer MaxFlow- in eine MinCost Circulation Instanz

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

6. Flüsse und Zuordnungen

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

15. Elementare Graphalgorithmen

Algorithmen und Datenstrukturen 2

Wie wird ein Graph dargestellt?

Algorithmen & Komplexität

ij. , d (k 1) + d (k 1)

5. Musterlösung. Problem 1: Vitale Kanten * ω(f) > ω(f ). (a) Untersuchen Sie, ob es in jedem Netzwerk vitale Kanten gibt.

8. Übung Algorithmen I

3. Übungsblatt zu Algorithmen II im WS 2011/2012

Algorithmen zur Berechnung von Matchings

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Grundlagen: Algorithmen und Datenstrukturen

Algorithmische Methoden zur Netzwerkanalyse

Kürzeste-Wege-Algorithmen und Datenstrukturen

Netzwerkfluß. Gegeben ist ein System von Wasserrohren: Die Kapazität jedes Rohres ist 3, 5 oder 8 l/s.

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Lösungsvorschlag Hausübung 8

2.6.1 Definition und Darstellung Ausspähen von Graphen Minimal spannende Bäume Kürzeste Pfade 2.6.

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Grundbegriffe der Informatik Tutorium 8

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Optimierung. Optimierung. Vorlesung 9 Lineare Programmierung & Kombinatorische Optimierung Fabian Kuhn

Das Briefträgerproblem

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

Bäume und Wälder. Definition 1

Transkript:

Michael Axtmann michael.axtmann@kit.edu http://algo.iti.kit.edu/algorithmenii_ws6.php - 0 Axtmann: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Themenübersicht Ford Fulkerson Erhöhende Pfade Residualgraph Max-Flow und Min-Cut Dinitz Algorithmus Distanz Label Layergraph Blocking Flow Axtmann:

Nachklausur Dienstag,.09.07 :00 bis 3:00 Uhr Axtmann:

Ford Fulkerson 3 Axtmann:

Flüsse und Ford Fulkerson 0 0 4 Axtmann:

Flüsse und Ford Fulkerson 0 0 4 Axtmann:

Flüsse und Ford Fulkerson 5 0 4 Axtmann:

Flüsse und Ford Fulkerson 5 0 4 Axtmann:

Flüsse und Ford Fulkerson 0 0 4 Axtmann:

Flüsse und Ford Fulkerson 0 0 4 Axtmann:

Flüsse und Ford Fulkerson 5 5 5 5 5 5 4 Axtmann:

Flüsse und Ford Fulkerson 5 5 5 5 4 Axtmann:

Flüsse und Ford Fulkerson 0 0 4 Axtmann:

Residualgraph Verwalten von Restkapazitäten Modellierung und Erkennung von Gegenflüssen c f (e) = c(e) f (e): Restkapazität Hier: Fluss f (e) und Gesamtkapazität c(e) c f (e rev ) = f (e): Fluss über Kante e Hier: Restkapazität und Gesamtkapazität von e Keine 0-Gewicht Kanten Flüsse über Kanten e und e rev erlaubt Fluss über Kante Update beider Kanten 5 Axtmann:

Flüsse und Ford Fulkerson 0 0 0 0 6 Axtmann:

Flüsse und Ford Fulkerson 0 0 0 0 0 0 0 0 6 Axtmann:

Flüsse und Ford Fulkerson 0 0 0 0 0 0 0 0 0 0 0 0 6 Axtmann:

Flüsse und Ford Fulkerson 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 Axtmann:

Max Flow - Min Cut 7 Axtmann:

Max Flow - Min Cut 00 00 00 00 00 00 00 00 00 00 00 00 8 Axtmann:

Max Flow - Min Cut S-T -Schnitte betrachten nur Kanten S T Kanten T S werden nicht berücksichtigt s und t werden durch alle möglichen S-T -Schnitte getrennt Flow muss von s nach t, auch durch alle möglichen S-T -Schnitte Max Flow = Min S-T -Cut 00 00 00 00 00 00 00 00 00 00 00 00 9 Axtmann:

Max Flow - Min Cut S-T -Schnitte betrachten nur Kanten S T Kanten T S werden nicht berücksichtigt s und t werden durch alle möglichen S-T -Schnitte getrennt Flow muss von s nach t, auch durch alle möglichen S-T -Schnitte Max Flow = Min S-T -Cut 9 Axtmann:

Algorithmus 0 Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche 4 Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label s 4 3 t Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph 4 4 3 0 Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph 4 4 3 0 Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph 4 4 3 0 Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph 4 4 3 0 Axtmann:

Distanz Label Geben Distanz im Residualgraphen (hop-based) zur Senke t an Rückwärtsgerichtete Breitensuche 4 Start bei Knoten t Layer: Knoten mit gleicher Distanz zu s im BFS-Baum Knoten in einem Layer: gleiches Label 4 3 0 Layered graph auch: kürzeste Wege Netzwerk, Schichtgraph Axtmann:

Schichtgraph für Graph G = (V, E) Knotenmenge V S = V E = {e = (u, v) E f (e) < c(e), d(u) = d(v) + } E rev = {e rev = (v, u) rev f (v, u) > 0, d(u) = d(v) + } Kantenmenge E S = E E rev betrachte Analogie zu Edmonds-Karp (kürzeste erhöhende Wege) 4 4 3 0 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss Kein weiterer Fluss möglich Auf jedem Weg durch den Graphen mindestens eine Kante bis zur maximalen Kapazität 0 0 ausgelastet ist Blocking flow als atomare Operation Berechnung auf Schichtgraph Kein Residualgraph Kein Rückfluss möglich i.a. nicht maximal auf Schichtgraph und Redisualgraph 3 0 0 0 0 3 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 t 0 0 3 d d- d- 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 t 0 0 3 d d- d- 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 t 0 0 3 d d- d- 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 t 0 0 3 d d- d- 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 t 0 0 3 d d- d- 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 d 0 3 0 d- t 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 d 0 3 0 d- t 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 5 d 0 3 0 d- t 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 3 5 d 3 d- t 4 Axtmann:

Blockierender Fluss: Operationen Blocking flow: Berechnung basiert auf Tiefensuche von Knoten s Drei Operationen extend - gehe einen Knoten näher ans Ziel (Schichtgraph) retreat - Sackgasse gefunden, gehe zurück, lösche Kante breakthrough - Tiefensuche hat Senke erreicht, lösche saturierte Kanten 3 5 d 3 d- t 4 Axtmann:

Kosten pro Blockierender Fluss #breakthrough m Jedes breakthrough saturiert mindestens eine Kante Kein breakthrough über saturierte Kante mehr möglich Laufzeit O(n) #retreat m Jedes retreat löscht eine Kante Laufzeit O() #extends #retreats + n #breakthrough Retreat: Vorher ein extend Ohne breakthrough nur retreats Breakthrough: Vorher n erfolgreiche extends Schichtgraph schließt Kreise aus Laufzeit O() Blockierender Fluss in O(nm) 5 Axtmann:

Laufzeit Pro Phase Rückwärtsgerichtete Breitensuche: Laufzeit O(n + m) Blockierender Fluss: Laufzeit O(nm) Phase in O(nm) #Phasen n (Lemma : Jede Phase erhöht Label von s um mindestens ) Gesamtlaufzeit O(n m) 6 Axtmann:

Laufzeit Pro Phase Rückwärtsgerichtete Breitensuche: Laufzeit O(n + m) Blockierender Fluss: Laufzeit O(nm) Phase in O(nm) #Phasen n (Beweis, wie in Vorlesung, nicht hier) (Lemma : Jede Phase erhöht Label von s um mindestens ) Gesamtlaufzeit O(n m) 6 Axtmann:

Kosten pro Phase - Unit Capacity Network Amortisierte Kosten Retreat/breakthrough Löscht alle beteiligten Kanten Jede Kante nur an einem Retreat/breakthrough beteiligt Extend Pro Kante ein extend Bezahlt für Breakthrough und Retreat #extends = O(m) Kosten O() Phase in O(m + n) 7 Axtmann:

Anzahl Phasen - Unit Capacity Network Nach m Phasen Graph hat mindestens m Layer (Lemma : Jede Phase erhöht Label von s um mindestens ) Erwartet m/ m Kanten pro Layer es gibt Layer i mit höchstens m Kanten zu Layer i Induziert Schnitt (im Residualgraphen) zwischen S = {v d(v) i} und T = V \ S, Kapazität m m m 0 Jede Phase erhöht Fluss um Zusätzlich m Phasen 8 Axtmann:

Anzahl Phasen - Unit Capacity Network Nach m Phasen Graph hat mindestens m Layer (Lemma : Jede Phase erhöht Label von s um mindestens ) Erwartet m/ m Kanten pro Layer es gibt Layer i mit höchstens m Kanten zu Layer i Induziert Schnitt (im Residualgraphen) zwischen S = {v d(v) i} und T = V \ S, Kapazität m Jede Phase erhöht Fluss um Zusätzlich m Phasen m m m m m m #Kanten m m 0 8 Axtmann:

Anzahl Phasen - Unit Capacity Network Nach m Phasen Graph hat mindestens m Layer (Lemma : Jede Phase erhöht Label von s um mindestens ) Erwartet m/ m Kanten pro Layer es gibt Layer i mit höchstens m Kanten zu Layer i Induziert Schnitt (im Residualgraphen) zwischen S = {v d(v) i} und T = V \ S, Kapazität m Jede Phase erhöht Fluss um Zusätzlich m Phasen m m m m m m m m #Kanten m m 0 8 Axtmann:

Ende! Feierabend! 9 Axtmann: