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

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

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

Datenstrukturen & Algorithmen

Flüsse in Netzwerken

Flüsse, Schnitte, bipartite Graphen

Flüsse in Netzwerken. Seminar über Algorithmen SoSe Mike Rohland & Julia Schenk

Kapitel 1: Flussalgorithmen

Algorithmen und Datenstrukturen Kapitel 10

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

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 4: Flüsse

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

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt;

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

Wiederholung zu Flüssen

KAPITEL 4 FLÜSSE IN NETZWERKEN

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

Operations Research. Flüsse in Netzwerken. Flüsse in Netzwerken. Unimodularität. Rainer Schrader. 2. Juli Gliederung.

Flüsse, Schnitte, bipartite Graphen

Anwendungen von Netzwerkfluss

Mathematische Modelle in den Naturwissenschaften Proseminar

ADS: Algorithmen und Datenstrukturen 2

6. Flüsse und Zuordnungen

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

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

Flüsse, Schnitte, Bipartite Graphen

Gliederung. Kapitel 4. Lokale Suchverfahren. Meta-Heuristiken. Simulated Annealing. Lokale Suchverfahren. Optimierungsalgorithmen

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

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

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

Der Preow-push-Algorithmus

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

Effiziente Algorithmen und Datenstrukturen II

Flüsse und Zuordnungen. Kapitel 6. Peter Becker (H-BRS) Graphentheorie Wintersemester 2018/ / 296

Kombinatorische Optimierung

Flüsse, Schnitte, bipartite Graphen

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

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

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

6 Flüsse und Matchings

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

Very simple methods for all pairs network flow analysis

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

Maximale s t-flüsse in Planaren Graphen

Algorithmische Graphentheorie

Algorithmen und Datenstrukturen 2

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Algorithmische Graphentheorie

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Trennender Schnitt. Wie groß kann der Fluss in dem folgenden Flussnetzwerk höchstens sein?

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

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

4.7 Der Algorithmus von Dinic für maximalen Fluss

Effiziente Algorithmen I 11. Übungsblatt, Wintersemester 2015/16 Abgabetermin:

Algorithmen II Vorlesung am

Algorithmentheorie Maximale Flüsse

Vorlesung Datenstrukturen

Kürzeste Wegealgorithmen

Very simple methods for all pairs network flow analysis

Algorithmen II Vorlesung am

Überblick. Kap. 1.4: Minimum Weight Perfect Matching. 1.3 Blüten-Schrumpf Algorithmus für Maximum Matching

Strukturelle Modelle in der Bildverarbeitung Binäre MinSum Probleme

Lineare Programmierung (2)

Effiziente Algorithmen I

7. Der Entwurf von Algorithmen (Fortsetzung)

Zählen perfekter Matchings in planaren Graphen

Vorlesung 2 KÜRZESTE WEGE

Beweis: Färbe jede Kante zufällig und unabhängig mit Ws 1 2. Ereignis A i : i-te Clique K (i), i = 1,..., ( n K (i)

Effiziente Algorithmen

Kombinatorische Optimierung

Wiederholung

Kombinatorische Optimierung

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Effiziente Algorithmen (SS2014)

Klausur zum Modul Einführung in die Diskrete Mathematik

Kürzeste-Wege-Algorithmen und Datenstrukturen

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

Flüsse, Schnitte, bipartite Graphen. Martin Oettinger

Graphentheorie. Kardinalitätsmatchings. Kardinalitätsmatchings. Kardinalitätsmatchings. Rainer Schrader. 11. Dezember 2007

SCHNITTERHALTUNG (SPEKTRALE APPROXIMATION)

Systems of Distinct Representatives

Algorithmen zur Berechnung von Matchings

Bipartite Graphen. Beispiele

15. Elementare Graphalgorithmen

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

Algorithmische Graphentheorie

Kombinatorische Optimierung

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Univ.-Prof. Dr. Goulnara ARZHANTSEVA

9 Minimum Spanning Trees

Lösungshinweise 3 Vorlesung Algorithmentechnik im WS 08/09

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Übung 5 Algorithmen II

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

3.4 Maximale Flüsse und der Algorithmus von Ford Fulkerson

6. Übung zur Linearen Optimierung SS08

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Flüsse und Schnitte von Graphen

Theoretische Informatik 1

Transkript:

Effiziente Algorithmen Einführung 1 Inhalt 1. Flußprobleme 2. Matching. Lineares Programmieren 4. Ganzzahliges Programmieren 5. NP-Vollständigkeit 6. Approximationsalgorithmen 7. Backtracking und Branch-and-Bound 8. Randomisierte Algorithmen 9. Online-Algorithmen

Effiziente Algorithmen Einführung 2 Literatur Sehr empfehlenswertes Buch. Es enthält einen Überblick über die wichtigsten Entwurfstechniken für Algorithmen und einen sehr vollständigen Überblick über bekannte Algorithmen mit Verweisen. Steven S. Skiena: The Algorithm Design Manual. Springer Verlag. Preis: US $69.95, Hardcover mit CD-ROM.

Effiziente Algorithmen Einführung Literatur Sehr umfangreiches, modernes Buch. Sehr gut geschrieben. Enthält alle wichtigen Algorithmen. Nur ein Buch dieses! Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest: Introduction To Algorithms. MIT Press. Preis: US $69.95, Hardcover, 1028 Seiten!

Effiziente Algorithmen Flußprobleme 4 Netzwerkfluß (Wiederholung der Grundlagen aus DSAL) Gegeben ist ein System von Wasserrohren: Quelle s t Senke Die Kapazität jedes Rohres ist, 5 oder 8l/s. Frage: Wieviel Wasser kann von der Quelle zur Senke fließen?

Effiziente Algorithmen Flußprobleme 5 Netzwerkfluß Antwort: Maximal 11l/s sind möglich. s t

Effiziente Algorithmen Flußprobleme 6 s-t-netzwerke Ein s-t-netzwerk (flow network) ist ein gerichteter Graph G = (V,E), wobei 1. jede Kante (u,v) E eine Kapazität c(u,v) 0 hat, 2. es eine Quelle s V und eine Senke t V gibt. Es ist bequem, anzunehmen daß jeder Knoten auf einem Pfad von s nach t liegt. Falls (u,v) / E setzen wir c(u,v) = 0. Es kann Kanten (u,v) und (v,u) mit verschiedener Kapazität geben.

Effiziente Algorithmen Flußprobleme 7 Beispiel eines s-t-netzwerks v 1 12 v 16 20 s 10 4 9 7 t 1 4 v 2 14 v 4 Die Kanten sind mit den Kapazitäten c(u,v) beschriftet.

Effiziente Algorithmen Flußprobleme 8 Flüsse Ein Fluß ist eine Funktion f: V V R, die Paare von Knoten auf reelle Zahlen abbildet und diese Bedingungen erfüllt: Zulässigkeit: Für u,v V gilt f(u,v) c(u,v). Symmetrie: Für u,v V gilt f(u,v) = f(v,u). Flußerhaltung: Für u V {s,t} gilt v V f(u,v) = 0. Der Wert f eines Flusses ist definiert als f = u V f(s,u). Dies ist gerade der Gesamtfluß aus der Quelle heraus.

Effiziente Algorithmen Flußprobleme 9 Maximale Flüsse Das Problem des maximalen Flusses: Gegeben: Ein s-t-netzwerk. Gesucht: Ein Fluß mit maximalem Wert.

Effiziente Algorithmen Flußprobleme 10 Was ist der maximale Fluß? v 1 12 v 16 20 s 10 4 9 7 t 1 4 v 2 14 v 4

Effiziente Algorithmen Flußprobleme 11 Der maximale Fluß ist 2 v 1 12/12 v 12/16 19/20 s 10 4 9 7/7 t 11/1 4/4 v 2 11/14 v 4 Die Kanten sind mit c(u,v) beschriftet oder mit f(u,v)/c(u,v), falls f(u,v) > 0.

Effiziente Algorithmen Flußprobleme 12 Andere optimale Lösungen 14/16 v 1 12/12 v 19/20 s 2/10 4 9 7/7 t 9/1 v 2 11/14 10/16 v 4 v 1 4/4 12/12 v 19/20 s 10 2/4 9 7/7 t 1/1 v 2 11/14 v 4 4/4

Effiziente Algorithmen Flußprobleme 1 Mehrfache Quellen oder Senken s 10 5 t 6 s 2 10 5 t 2 6 s 1 10 5 t 1 Mehrfache Quellen oder Senken sind eine Verallgemeinerung des Problem des maximalen Flusses.

Effiziente Algorithmen Flußprobleme 14 Mehrfache Quellen oder Senken s 10 5 t 6 s s 2 10 5 t 2 t 6 s 1 10 5 t 1 Neue Superquelle und Supersenke hinzufügen

Effiziente Algorithmen Flußprobleme 15 Existenz des maximalen Flusses Existiert stets der maximale Fluß max { f f ist ein s-t-fluß in G }? Ja, denn die Menge aller Flüsse ist abgeschlossen im R m und sie ist nicht leer. Die stetige Funktion, die einen Fluß auf ihren Wert abbildet, hat daher ein Maximum: f = u V f(s, u) ist stetig!

Effiziente Algorithmen Flußprobleme 16 Einige Notationen Es ist bequem einige Abkürzungen zu verwenden: f(x,y) = f(x,y) für X,Y V x X y Y f(x,y) = y Y f(x,y) für Y V f(x,y) = x Xf(x,y) für X V X y statt X {y}

Effiziente Algorithmen Flußprobleme 17 Lemma A Falls f ein s-t-fluß für G = (V,E) ist, dann gilt: 1. f(x,x) = 0 für X V 2. f(x,y) = f(y,x) für X,Y V. f(x Y,Z) = f(x,z)+f(y,z) für X,Y,Z V mit X Y = 4. f(z,x Y) = f(z,x)+f(z,y) für X,Y,Z V mit X Y = Dieses Lemma ist sehr nützlich, um wichtige Eigenschaften über Flüsse abzuleiten.

Effiziente Algorithmen Flußprobleme 18 Lemma A Um Lemma A zu beweisen, dürfen wir nur die Eigenschaften eines s-t-flusses verwenden, also Zulässigkeit, Symmetrie und Flußerhaltung. Beweis für f(x,x) = 0: f(x,x) = 1 ( 2 = 1 ( 2 = 1 2 x 1 X x 1 X x 1 X x 2 X x 2 X x 2 X f(x 1,x 2 )+ x 1 X f(x 1,x 2 )+ x 1 X x 2 X x 2 X ( ) f(x 1,x 2 )+f(x 2,x 1 ) ) f(x 1,x 2 ) ) f(x 2,x 1 ) = 0 Hier genügt die Symmetrie allein! (Rest als Übungsaufgabe.)

Effiziente Algorithmen Flußprobleme 19 Anwendung des Lemmas Der Fluß in die Senke sollte intuitiv dem Fluß aus der Quelle entsprechen: Beweis mit Lemma A: f(s,v) = f(v,t) f(s,v) = f(v,v) f(v s,v) = f(v s,v) = f(v,v s) = f(v,t)+f(v,v s t) = f(v, t) wegen Flußerhaltung

Effiziente Algorithmen Flußprobleme 20 Definition: Residualnetzwerke Netzwerk minus Fluß = Residualnetzwerk Gegeben ist ein Netzwerk G = (V,E) und ein Fluß f. Das Residualnetzwerk G f = (V,E f ) zu G und f ist definiert vermöge E f = {(u,v) V V c f (u,v) > 0}, wobei c f (u,v) = c(u,v) f(u,v). c f ist die Restkapazität. Das s-t-netzwerk G f hat die Kapazitäten c f.

Effiziente Algorithmen Flußprobleme 21 Beispiel 11/16 v 1 12/12 v 15/20 s 10 1/4 4/9 7/7 t s-t-netzwerk mit Fluß f 8/1 v 2 11/14 v 4 4/4 v 1 12 v 11 15 Residualnetzwerk G f s 5 5 8 11 v 2 5 11 4 v 4 7 5 4 t

Effiziente Algorithmen Flußprobleme 22 Augmentierende Pfade Ein s-t-pfad p in G f heißt augmentierender Pfad. c f (p) = min{c f (u,v) (u,v) ist auf p} heißt Restkapazität von p. Beispiel: s 11 5 v 1 5 11 8 v 2 12 5 4 11 v v 4 7 5 15 4 t Die Restkapazität dieses Pfades ist 4.

Effiziente Algorithmen Flußprobleme 2 Die Ford Fulkerson Methode Initialisiere Fluß f zu 0 while es gibt einen augmentierenden Pfad p do augmentiere f entlang p return f f p (u,v) = Augmentiere f entlang p: f := f +f p f p ist ein Fluß in G f c f (p) falls (u,v) auf p c f (p) falls (v,u) auf p 0 sonst

Effiziente Algorithmen Flußprobleme 24 Die Ford Fulkerson Methode s t Anfangs ist der Fluß 0. Der augmentierende Pfad ist rot eingezeichnet.

Effiziente Algorithmen Flußprobleme 25 Die Ford Fulkerson Methode s t Der augmentierende Pfad hat Kapazität 5.

Effiziente Algorithmen Flußprobleme 26 Die Ford Fulkerson Methode s t Der augmentierende Pfad hat Kapazität.

Effiziente Algorithmen Flußprobleme 27 Die Ford Fulkerson Methode s t Jetzt gibt es keinen augmentierenden Pfad mehr. Der Fluß ist maximal.

Effiziente Algorithmen Flußprobleme 28 Lemma B Korrektheit Set G = (V,E) ein s-t-netzwerk und f ein Fluß in G. Sei f ein Fluß in G f. Dann ist f +f ein Fluß in G. Konsequenz: Die Ford Fulkerson Methode berechnet einen Fluß. Beweis: Wir müssen zeigen, daß f +f zulässig, symmetrisch und flußerhaltend ist.

Effiziente Algorithmen Flußprobleme 29 Beweis (Symmetrie) (f +f )(u,v) = f(u,v)+f (u,v) = f(v,u) f (v,u) = (f(v,u)+f (v,u)) = (f +f )(v,u)

Effiziente Algorithmen Flußprobleme 0 Beweis (Flußerhaltung) Sei u V {s,t}. (f +f )(u,v) = f(u,v)+f (u,v) = 0+0 = 0

Effiziente Algorithmen Flußprobleme 1 Beweis (Zulässigkeit) (f +f )(u,v) = f(u,v)+f (u,v) f(u,v)+c f (u,v) = f(u,v)+(c(u,v) f(u,v)) = c(u, v) Der Beweis verwendet, daß f ein Fluß in G f ist, aber nicht, daß f ein Fluß in G ist.

Effiziente Algorithmen Flußprobleme 2 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 4 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 5 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 6 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 7 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 8 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 9 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 40 Laufzeit der Ford Fulkerson Methode s t

Effiziente Algorithmen Flußprobleme 41 Laufzeit der Ford Fulkerson Methode Ein Flußproblem ist integral, wenn alle Kapazitäten ganzzahlig sind. Theorem. Die Ford Fulkerson Methode benötigt nur O(f ) Iterationen, um ein integrales Flußproblem zu lösen, falls der Wert eines maximalen Flusses f ist. Beweis. In jeder Iteration wird der Wert des Flusses um c f (p) 1 erhöht. Er ist anfangs 0 und am Ende f. Korollar. Bei rationalen Kapazitäten terminiert die Ford Fulkerson Methode.

Effiziente Algorithmen Flußprobleme 42 Schnitte in Netzwerken Ein Schnitt (S, T) in einem s-t-netzwerk G = (V, E) ist eine Partition S T = V, S T = mit s S und t T. Wenn f ein Fluß in G ist, dann ist f(s,t) der Fluß über (S,T). Die Kapazität von (S, T) ist c(s, T). Ein minimaler Schnitt ist ein Schnitt mit minimaler Kapazität.

Effiziente Algorithmen Flußprobleme 4 Schnitte in Netzwerken s v S 1 v 2 11/16 8/1 12/12 10 1/4 4/9 11/14 v Tt 7/7 t 4/4 v 4 15/20 Der Fluß über (S,T) ist 19. Die Kapazität von (S,T) ist 26.

Effiziente Algorithmen Flußprobleme 44 Schnitte in Netzwerken v 1 S11/16 T s 10 1/4 7/7 4/9 8/1 v 2 12/12 11/14 v v 4 15/20 t 4/4 Der Fluß über (S,T) ist 19. Die Kapazität von (S,T) ist 29.

Effiziente Algorithmen Flußprobleme 45 Schnitte in Netzwerken 11/16 v 1 12/12 v 15/20 s 8/1 10 1/4 STt v 2 4/9 11/14 v 4 7/7 4/4 t Der Fluß über (S,T) ist 19. Die Kapazität von (S,T) ist 2.

Effiziente Algorithmen Flußprobleme 46 Lemma C Fluß über einen Schnitt Der Fluß über einen Schnitt und der Wert des Flusses sind identisch, d.h. f(s,t) = f. Beweis f(s,t) = f(s,v) f(s,v T) = f(s,v) f(s,s) Spezialfälle = f(s,v) = f(s,v)+f(s s,v) = f(s,v) = f f = f(s,v s) = f(v t,t)

Effiziente Algorithmen Flußprobleme 47 Theorem Max-flow Min-cut Theorem Sei f ein Fluß im s-t-netzwerk G = (V,E). Dann sind äquivalent: 1. f ist ein maximaler Fluß 2. In G f gibt es keinen augmentierenden Pfad. f = c(s,t) für einen Schnitt (S,T) Folgerungen Falls die Ford Fulkerson Methode terminiert, berechnet sie einen maximalen Fluß. Die Kapazität eines kleinsten Schnittes gleicht dem Wert eines größten Flusses.

Effiziente Algorithmen Flußprobleme 48 Beweis 1. 2. Sei f ein maximaler Fluß. Nehmen wir an, es gebe einen augmentierenden Pfad p. Dann ist f +f p ein Fluß in G mit f +f p > f. Das ist ein Widerspruch zur Maximalität von f.

Effiziente Algorithmen Flußprobleme 49 Beweis 2.. G f hat keinen s-t-pfad. S := {v V es gibt einen s-v-pfad in G f } T := V S Dann ist (S, T) ein Schnitt und es gilt f(u, v) = c(u, v) für alle u S, v T. Nach Lemma C gilt dann f(s,t) = c(s,t) = f.

Effiziente Algorithmen Flußprobleme 50 Beweis. 1. Sei f ein beliebiger Fluß. f = f(s,t) = u S v T u S v T = c(s,t) f(u,v) c(u, v) Der Wert jedes Flusses ist also höchstens c(s,t). Erreicht er sogar c(s,t) ist er folglich maximal.

Effiziente Algorithmen Flußprobleme 51 Wo ist ein minimaler Schnitt? 6 8 7 8 1 5 2 6 4 2 7 1 8 8 4 1 1 5 4 4 1 6 6 8 1 8 1

Effiziente Algorithmen Flußprobleme 52 Wie findet man einen minimalen Schnitt? 1. Einen maximalen Fluß berechnen. 2. Eine Kante (u, v) ist kritisch, wenn c(u, v) = f(u, v).. S besteht aus Knoten, die von s aus über unkritische Kanten erreicht werden können. 4. T besteht aus allen anderen Knoten. Es gibt aber bessere, direkte Methoden!