Flüsse, Schnitte, bipartite Graphen Michael Eischer 06. Juni 2012 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 1 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 2 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 3 / 48 Denitionen: Netzwerk G = (V , E ) Kapazitätsfunktion c (u , v ) ∈ N gibt an, wie viel Gerichteter Graph durch eine Kante ieÿen kann Jede Kante besitzt Kapazität c (u , v ) > 0, (u , v ) ∈ E c (u , v ) = 0, (u , v ) ∈/ E Besitzt eine Quelle s und eine Senke t Antiparallelität: Wenn es eine Kante von u gibt, darf keine Rückkante von existieren v nach u nach v Jeder Knoten v liegt auf dem Weg von s nach t: s v Michael Eischer t Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 4 / 48 Denitionen: Netzwerk Beispiel: 3 5 t 2 2 s 4 3 2 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 5 / 48 Denitionen: Fluss Flussfunktion f gibt den Fluss über jede Kante an Kapazitätsbeschränkung: 0 ≤ f (u , v ) ≤ c (u , v ) ∀u , v ∈ V Flusserhaltung: P∀u ∈ V \ {s , t } : P f (v , u ) = f (u , v ) v ∈V v ∈V Zuuss = Abuss, für alle Knoten auÿer Quelle und Senke Die Quelle und Senke können somit unendlich Fluss produzieren oder P konsumieren Fluss: |f | = f (s , v ) v ∈V Maximaler Fluss: Fluss, dessen Betrag maximal ist Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 6 / 48 Denitionen: Fluss 2/3 1/2 3/5 t 2/2 s 4/ 4 3 3/ 2/2 Beschriftung der Kanten: Fluss / Kapazität Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 7 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 8 / 48 Maximaler Fluss: Restnetzwerk Gerichteter Graph, dessen Kanten angeben, um wie viel der Fluss maximal geändert werden kann Zu jeder Kante (u , v ) im ursprünglichen Netzwerk folgende Kanten erstellen: c 0 (u , v ) = c (u , v ) − f (u , v ) verbleibende Kapazität c 0 (v , u ) = f (u , v ) möglicher Rückuss Nicht vorhandene Kanten: c 0 (u , v ) = 0 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 9 / 48 Maximaler Fluss: Restnetzwerk Graph: 2/3 1/2 3/5 t 2/2 s 4/ 4 3 3/ 2/2 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 10 / 48 Maximaler Fluss: Restnetzwerk Restnetzwerk: 3 2 t 2 1 1 s 1 2 3 4 2 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 10 / 48 Maximaler Fluss: Erweiternder Pfad 3 2 t 2 1 1 s 1 2 3 4 2 Erweiternder Pfad: Pfad von s nach t Die Kante des Pfad im Restnetzwerk, mit der minimalen Kapazität, begrenzt die Erhöhung des Flusses Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 11 / 48 Maximaler Fluss: Erweiternder Pfad 3 2 t 2 1 1 s 1 2 3 4 2 Erweiternder Pfad: Pfad von s nach t Die Kante des Pfad im Restnetzwerk, mit der minimalen Kapazität, begrenzt die Erhöhung des Flusses Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 11 / 48 Maximaler Fluss Wie bekommen wir einen maximalen Fluss? 3 5 t 2 2 s 4 3 2 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 12 / 48 Maximaler Fluss: Ford-Fulkerson f für alle Kanten =0 1 Setze 2 Solange ein erweiternder Pfad p im Restnetzwerk Gf existiert: erweitere 3 4 gib f f entlang p (mit minimaler Kapazität) zurück Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 13 / 48 Maximaler Fluss: Ford-Fulkerson Restnetzwerk a a Michael Eischer 3 5 b Flüsse, Schnitte, bipartite Graphen t 2 c 4 c s 2 0/2 0/2 t 2 3 0/ b 0/3 3 0/5 0/2 s 0/ 4 Netzwerk 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Restnetzwerk a a Michael Eischer 3 5 b Flüsse, Schnitte, bipartite Graphen t 2 c 4 c s 2 0/2 0/2 t 2 3 0/ b 0/3 3 0/5 0/2 s 0/ 4 Netzwerk 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Restnetzwerk Michael Eischer c s a 2 3 b Flüsse, Schnitte, bipartite Graphen t 2 c 4 0/2 0/2 t 3 2 3 0/ b 3/3 3 3/5 0/2 s 0/ 4 a 2 Netzwerk 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Restnetzwerk Michael Eischer c s a 2 3 b Flüsse, Schnitte, bipartite Graphen t 2 c 4 0/2 0/2 t 3 2 3 0/ b 3/3 3 3/5 0/2 s 0/ 4 a 2 Netzwerk 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Netzwerk Restnetzwerk a Michael Eischer s 1 2 2 3 2 2/2 0/2 c t 2/ 4 3 2/ b 3/3 a b Flüsse, Schnitte, bipartite Graphen 2 3/5 2/2 s 3 2 c 2 t 2 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Netzwerk Restnetzwerk a Michael Eischer s 1 2 2 3 2 2/2 0/2 c t 2/ 4 3 2/ b 3/3 a b Flüsse, Schnitte, bipartite Graphen 2 3/5 2/2 s 3 2 c 2 t 2 06. Juni 2012 14 / 48 Maximaler Fluss: Ford-Fulkerson Netzwerk Restnetzwerk a a 2/2 3 5 1 2 2 s b t 2 c 4 c t 4/ 4 0/2 3 2/ b 3/3 2 5/5 2/2 s Es gibt keine zusätzlichen erweiternden Pfade Damit ist der maximale Fluss: 7 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 14 / 48 Schnitt: Denition Aufteilung der Knoten in zwei Mengen S und T, s ∈ S und t ∈ T PP Kapazität: c (S , T ) = c (u , v ) = Kapazität der wobei u ∈S v ∈T geschnittenen Kanten, die von S nach T verlaufen Fluss: f (S , T ) = Fluss von S nach PP u ∈S v ∈T T f (u , v ) − PP u ∈S v ∈T f (v , u ) = minus Rückuss f (S , T ) = |f |, wobei auch gilt, dass |f | ≤ c (S , T ) Minimaler Schnitt: Schnitt mit minimaler Kapazität Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 15 / 48 Minimaler Schnitt: Beispiel 8/8 4/4 t 2/5 3/ 8 5 1/ 3/3 s 6/8 7 7/ 6/7 Kapazität der Schnitts: 20 (kein minimaler Schnitt!) Fluss über den Schnitt: 12 - 1 = 11 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 16 / 48 Minimaler Schnitt: Beispiel 8/8 4/4 t 2/5 3/ 8 5 1/ 3/3 s 6/8 7 7/ 6/7 Kapazität der Schnitts: 11 Fluss über den Schnitt: 11 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 16 / 48 Min-Cut-Max-Flow-Theorem Äquivalente Aussagen: f ist ein maximaler Fluss Das Restnetzwerk enthält keinen erweiternden Pfad Es gibt minimale Schnitte S, T für die |f | = c (S , T ) gilt. D.h. die Kapazität eines Schnitts wird voll ausgenutzt Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 17 / 48 Minimaler Schnitt: Konstruktion 1 Maximalen Fluss berechnen 2 Aufteilen in der Knoten in zwei Mengen: Menge S = {v | Knoten v von s aus im Restnetzwerk erreichbar} Menge T = V \ S Alle Kanten zwischen S und T sind voll ausgelastet, somit ist die Aufteilung ein minimaler Schnitt Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 18 / 48 Minimaler Schnitt: Konstruktion Netzwerk Restnetzwerk a a b Michael Eischer 6/6 s t 3 5 Flüsse, Schnitte, bipartite Graphen 7 7/7 c 8 1 3/8 1 1/ 3/3 s 4 t 3 4/4 8 8/ b 6 c 06. Juni 2012 19 / 48 Minimaler Schnitt: Konstruktion Netzwerk Restnetzwerk a a b Michael Eischer 6/6 s t 3 5 Flüsse, Schnitte, bipartite Graphen 7 7/7 c 8 1 3/8 1 1/ 3/3 s 4 t 3 4/4 8 8/ b 6 c 06. Juni 2012 19 / 48 Minimaler Schnitt: Konstruktion Netzwerk Restnetzwerk a a b Michael Eischer 6/6 s t 3 5 Flüsse, Schnitte, bipartite Graphen 7 7/7 c 8 1 3/8 1 1/ 3/3 s 4 t 3 4/4 8 8/ b 6 c 06. Juni 2012 19 / 48 Minimaler Schnitt: Konstruktion Netzwerk Restnetzwerk a a b Michael Eischer 6/6 s t 3 5 Flüsse, Schnitte, bipartite Graphen 7 7/7 c 8 1 3/8 1 1/ 3/3 s 4 t 3 4/4 8 8/ b 6 c 06. Juni 2012 19 / 48 Minimaler Schnitt: Konstruktion Netzwerk Restnetzwerk a a b 6/6 s t 3 5 7 7/7 c 8 1 3/8 1 1/ 3/3 s 4 t 3 4/4 8 8/ b 6 c Minimaler Schnitt, mit Fluss und Kapazität 11 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 19 / 48 Maximaler Fluss: Ford-Fulkerson Wieso funktioniert das? Ford-Fulkerson: Der Fluss wird erhöht, solange ein erweiternder Pfad existiert Dabei erhöht jeder gefundene Pfad den Fluss um mindestens 1 Min-Cut-Max-Flow-Theorem: Der Fluss ist maximal, wenn kein erweiternder Pfad existiert Somit gilt, dass der Algorithmus genau dann abbricht, wenn der Fluss maximal ist Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 20 / 48 Maximaler Fluss: Laufzeit Laufzeit wird durch Algorithmus zur Pfadsuche bestimmt Hier für Tiefensuche: Der maximale Aufwand ist O (|f | · |E |) Im schlimmsten Fall wird der Fluss pro Durchlauf nur um 1 erhöht Pro Durchlauf müssen maximal alle Kanten und Knoten betrachtet werden Da jeder Knoten mindestens eine Kante hat, ist die Laufzeit dafür O (|E |) Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 21 / 48 Maximaler Fluss: Worst-Case a 0/1 0 0 Michael Eischer b 0/1 0 t 0 0 0 0/1 s 100 100 Flüsse, Schnitte, bipartite Graphen 1 00 0/1 0/1 s a b 100 t 100 06. Juni 2012 22 / 48 Maximaler Fluss: Worst-Case a 0/1 0 0 Michael Eischer b 0/1 0 t 0 0 0 0/1 s 100 100 Flüsse, Schnitte, bipartite Graphen 1 00 0/1 0/1 s a b 100 t 100 06. Juni 2012 22 / 48 Maximaler Fluss: Worst-Case 00 1/1 1/1 s 0/1 0 0 Michael Eischer b 0/1 0 t 0 0 0 1/1 s 1 99 100 Flüsse, Schnitte, bipartite Graphen a 1 a b 100 1 99 t 06. Juni 2012 22 / 48 Maximaler Fluss: Worst-Case 00 1/1 1/1 s 0/1 0 0 Michael Eischer b 0/1 0 t 0 0 0 1/1 s 1 99 100 Flüsse, Schnitte, bipartite Graphen a 1 a b 100 1 99 t 06. Juni 2012 22 / 48 Maximaler Fluss: Worst-Case a 1/1 0 0 Michael Eischer b 1/1 0 t 0 0 0 1/1 s Flüsse, Schnitte, bipartite Graphen a 1 0/1 s 00 1/1 1 99 1 99 b 1 99 1 99 t 06. Juni 2012 22 / 48 Maximaler Fluss: Edmonds-Karp Verwendet Breitensuche, um einen erweiternden Pfad zu nden Es wird immer mit dem Weg mit der geringsten Kantenanzahl erweitert Damit ergibt sich eine Laufzeit von O (|V | · |E |2 ) Beweis: siehe Cormen Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 23 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 24 / 48 Reduktionen Viele Probleme, die ein Flussproblem sind, liefern einen Graphen, der nicht wirklich passt Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 25 / 48 Mehrere Quellen/Senken s1 s2 s3 Michael Eischer t1 t2 Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 26 / 48 Mehrere Quellen/Senken s1 s2 s3 s1 s ∞ ∞ ∞ s2 s3 t1 t2 t1 t2 ∞ t ∞ Superquelle/-senke einfügen und mit Kanten unendlicher Kapazität anbinden Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 26 / 48 Knotenkapazität c Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 27 / 48 Knotenkapazität c c Knoten mit Kapazität c durch zwei Knoten, die über eine Kante mit Kapazität c verbunden sind, ersetzen Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 27 / 48 Produktion/Konsum beschränken s Michael Eischer t Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 28 / 48 Produktion/Konsum beschränken s s t c c t Knoten einfügen, dessen Kante die Produktion / Konsum der Quelle / Senke beschränkt Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 28 / 48 Antiparallelität c2 c1 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 29 / 48 Antiparallelität c2 c2 c2 c1 c1 Extra Knoten einfügen, mit dem eine Kante aufgebrochen wird Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 29 / 48 Ungerichtete Kanten c Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 30 / 48 Ungerichtete Kanten c c c Ungerichtete Kanten durch zwei gerichtete ersetzen und anschlieÿend die Antiparallelität sicherstellen Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 30 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 31 / 48 Bipartites Matching: Denition Ein ungerichteter Graph heiÿt bipartit, wenn die Knoten so in zwei Mengen aufgeteilt werden können, dass die Kanten nur zwischen diesen verlaufen. Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 32 / 48 Bipartites Matching: Denition Ein ungerichteter Graph heiÿt bipartit, wenn die Knoten so in zwei Mengen aufgeteilt werden können, dass die Kanten nur zwischen diesen verlaufen. Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 32 / 48 Bipartites Matching: Denition Ein Matching ist eine Auswahl an Kanten, sodass jeder Knoten zu maximal einer Kante inzident ist Ein Matching ist maximal, wenn es eine maximale Anzahl an Kanten enthält Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 33 / 48 Bipartites Matching: Denition Ein Matching ist eine Auswahl an Kanten, sodass jeder Knoten zu maximal einer Kante inzident ist Ein Matching ist maximal, wenn es eine maximale Anzahl an Kanten enthält Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 33 / 48 Bipartites Matching: Denition Ein Matching ist eine Auswahl an Kanten, sodass jeder Knoten zu maximal einer Kante inzident ist Ein Matching ist maximal, wenn es eine maximale Anzahl an Kanten enthält Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 33 / 48 Umwandlung zu Flussproblem Quelle einfügen und mit der ersten Menge über gerichtete Kanten verbinden Senke einfügen und zweite Menge über gerichtete Kanten mit Senke verbinden Kanten zwischen den Mengen durch gerichtete Kanten von der ersten zur zweiten Menge ersetzen Alle Kanten haben die Kapazität 1 Der maximale Fluss auf dem Graphen ergibt das maximale bipartite Matching Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 34 / 48 Beispielumwandlung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 35 / 48 Beispielumwandlung s Michael Eischer t Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 35 / 48 Beispielumwandlung s 1 1 Michael Eischer 1 1 1 1 1 1 Flüsse, Schnitte, bipartite Graphen t 1 1 06. Juni 2012 35 / 48 Bipartites Matching: Laufzeit O (|V | · |E |) Maximaler Fluss |f | < |V | Maximale Laufzeit Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 36 / 48 LKWs minimieren Ein Transportunternehmen hat eine Liste von Aufträgen bestehend aus Startort/Abfahrtszeit und Zielort/Ankunftszeit Die Transporter können an beliebigen Orten starten und mehrere Aufträge übernehmen, wenn sie rechtzeitig am jeweiligen Startort sind Die Transporter können ihren Aufenthaltsort nur durch eine Auftragsfahrt ändern Wie viele LKW werden mindestens benötigt, um alle Aufträge zu erfüllen? Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 37 / 48 LKWs minimieren Um das Problem als Flussproblem lösen zu können, muss es in ein Maximierungsproblem transformiert werden Statt wie viele LKWs werden benötigt?, fragt man wie viele lassen sich einsparen? Mit Anzahl Transporter = Anzahl Aufträge, werden garantiert alle Aufträge erfüllt Wenn zwei Aufträge nacheinander von einem Transporter erfüllt werden können, spart man einen LKW Also muss die Anzahl der Auftragspaare, die ein Transporter erledigt, maximiert werden Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 38 / 48 LKWs minimieren Reduktion auf maximales bipartites Matching: Unterteile jeden Auftrag in einen Abfahrts- und Ankunftsknoten unterteilt Die Ankunftsknoten werden mit den möglichen anschlieÿenden Abfahrten verbunden Berechne das maximale bipartite Matching Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 39 / 48 LKWs minimieren Abfahrt Ankunft Erlangen 10:00 Nürnberg 12:00 Nürnberg 12:00 Erlangen 13:00 Fürth 11:00 Nürnberg 15:00 Michael Eischer Nürnberg 13:00 Fürth 17:00 Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 40 / 48 LKWs minimieren Abfahrt Ankunft Erlangen 10:00 Nürnberg 12:00 Nürnberg 12:00 Erlangen 13:00 Fürth 11:00 Nürnberg 15:00 Michael Eischer Nürnberg 13:00 Fürth 17:00 Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 40 / 48 LKWs minimieren Abfahrt Ankunft Erlangen 10:00 Nürnberg 12:00 Nürnberg 12:00 Erlangen 13:00 Fürth 11:00 Nürnberg 15:00 Nürnberg 13:00 Fürth 17:00 Maximales bipartites Matching ergibt, wie viele LKW eingespart werden können Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 40 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 41 / 48 Knoten verbinden Es ist eine Menge von Knoten gegeben, für die bekannt ist, wie viele ein- und ausgehende Kanten existieren Es sollen nun die Kanten gefunden werden (Zwischen zwei Knoten existiert maximal eine Kante) Idee: Knoten in Eingangs- und Ausgangsknoten aufsplitten Kanten mit Kapazität 1 einfügen Eingangs- und Ausgangsknoten mit Quelle/Senke verbinden, wobei die Kapazität dem Eingangs-/Ausgangsgrad entspricht Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 42 / 48 1 1 a a0 b b 0 c c 0 d d 0 a 1 s 2 Knoten verbinden 2 1 1 1 t d b c Ausgangsgrad: (2,1,1,1) (für a-d) Eingangsgrad: (1,2,1,1) Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 43 / 48 1 1 a a0 b b 0 c c 0 d d 0 a 1 s 2 Knoten verbinden 2 t 1 1 1 d b c Ausgangsgrad: (2,1,1,1) (für a-d) Eingangsgrad: (1,2,1,1) Je nach vorgegebenem Graph kann es auch mehrere Lösungen geben Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 43 / 48 Min. Schnitt mit min. Kantenzahl Reduktion: Kapazität der Kanten mit (|E | + 1) multiplizieren und anschlieÿend 1 addieren Der minimale Schnitt im transformierten Graphen ist ein minimaler Schnitt mit minimaler Kantenanzahl Das (|E | + 1) verändert nichts an den möglichen minimalen Flüssen. Da durch die Kapazität eines Schnitts nur um +1en E die maximale erhöht werden kann, entstehen keine neuen minimalen Schnitte. Es bleiben nur die Schnitte mit minimaler Kantenanzahl minimal. Jede Kante mehr erhöht die Kapazität des Flusses, der somit nicht mehr minimal ist. Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 44 / 48 Min. Schnitt mit min. Kantenzahl Netzwerk 0/2 b 2/2 5/5 3 2/ Michael Eischer s 2/2 3/3 t c 4/ 4 a Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 45 / 48 Min. Schnitt mit min. Kantenzahl Transformiertes Netzwerk a t 17 17 c 33 25 Michael Eischer b 25 17 41 s Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 45 / 48 Min. Schnitt mit min. Kantenzahl Transformiertes Netzwerk a 17/17 c t 33 /3 3 0/1 7 5 /2 17 Michael Eischer b 25/ 25 17 16/ 41 41/ s Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 45 / 48 Übersicht 1 Denitionen Netzwerk Fluss 2 Maximaler Fluss Ford-Fulkerson Minimaler Schnitt Edmonds-Karp 3 Reduktionen 4 Bipartites Matching 5 Anwendungen Knoten verbinden Minimaler Schnitt mit minimaler Kantenzahl 6 Zusammenfassung Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 46 / 48 Zusammenfassung Maximaler Fluss in Netzwerken mittels Ford-Fulkerson-Methode mit Edmonds-Karp in O (|V | · |E |2 ) berechenbar Maximaler Fluss = minimaler Schnitt Reduktion komplexer Probleme auf Standardnetzwerke Matchingprobleme lassen sich als Flussproblem lösen Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 47 / 48 Quellen Introduction to Algorithms (Cormen) Flüsse, Schnitte und bipartite Abbildungen 2010, Thomas Fersch Flüsse, Schnitte und bipartite Abbildungen 2011, Christopher Dennl http://www.topcoder.com/tc?module=Static &d1=tutorials&d2=maxFlow2 Michael Eischer Flüsse, Schnitte, bipartite Graphen 06. Juni 2012 48 / 48