Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung 1. 2. 3. 4. 5. 6. 7. 8. 7/2, Folie 1 Fallstudie Bipartite Graphen Grundbegriffe Elementare Graphalgorithmen und Anwendungen Minimal spannende Bäume Kürzeste Pfade Traveling Salesman Problem Flüsse in Netzwerken und Anwendungen Netzplantechnik © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung des Kapitels a) b) c) d) e) 7/2, Folie 2 Einordnung / Motivation Begriffe / Grundlagen Anwendungen Pfadbasierte Algorithmen Kantenbasierte Algorithmen © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Anmerkungen • mit Hilfe des Max-Flow-Min-Cut-Theorems kann man eine ganze Reihe von anderen Sätzen der Graphentheorie „elegant“ und „einfach“ beweisen ... in Büchern zur Graphentheorie kann man nachlesen, wie man bspw. den Heiratssatz oder den Satz von König auf diese Art beweisen kann • wir schauen uns eine „andere Art“ der Anwendung an ... wir werden diskutieren, wie man Algorithmen zum Bestimmen von maximalen Flüssen verwenden kann, um maximale Matchings in bipartiten Graphen zu bestimmen 7/2, Folie 3 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Zur Erinnerung • ein bipartiter Graph G = (V,E) ist ein ungerichteter Graph, dessen Knotenmenge sich in zwei disjunkte Mengen X und Y zerlegen läßt, so dass keine Kante Ecken in beiden Mengen hat ein Matching im Graphen G ist eine Teilmenge M der Kantenmenge V für die gilt, dass die Kanten in M paarweise keine gemeinsamen Ecken haben • X 7/2, Folie 4 1 2 3 4 5 6 7 8 © 2011 Prof. Steffen Lange - HDa/FbI Y - M = { {1,4}, {5,2}, {7,6} } Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Anmerkungen • mit dem ungarischen Algorithmus kennen wir einen effizienten Algorithmus, mit dem man ein maximales Matching in einem gegebenen bipartiten Graphen bestimmen können • wir schauen uns in diesem Abschnitt an, wie man dieses algorithmische Problem unter Verwendung eines Algorithmus zum Bestimmen maximaler Flüsse lösen können ... wir werden sehen, dass dieser Ansatz zu einem anderen effizienten Algorithmus für das Problem, maximale Matchings in bipartiten Graphen zu bestimmen, führt 7/2, Folie 5 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Herangehensweise (/* Problemreduktion */) • es seien G = (V,E) der gegebene bipartite Graph und X,Y die zugehörige Zerlegung der Knotenmenge von G • wir werden ein Flussnetzwerk G‘ = (V‘,E‘) mit einer zugehörigen Kapazitätsfunktion c‘(.) „konstruieren“, so dass gilt: • der Wert val(f) eines maximalen Flusses f(.) in G‘ ist gleich der Größe eines maximalen Matchings M in G ... wenn G‘ nicht viel größer als G ist und man einen effizienten Algorithmus hat, mit dem man f(.) bestimmen kann, hätte man so auch einen effizienten Algorithmus um M zu bestimmen 7/2, Folie 6 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Problemreduktion am Beispiel 1 2 1 2 3 4 3 4 s t 5 6 5 6 7 8 7 8 ... im zugehörigen Flussnetzwerk G‘ = (V‘,E‘) • • • • • 7/2, Folie 7 gibt es zusätzlich eine Quelle s und eine Senke t wird jede Kante { x,y } mit x ∈ X und y ∈ Y zu einer gerichteten Kante [x,y] gibt es von der Quelle s eine Kante [s,x] zu jedem Knoten x ∈ X gibt es von jedem Knoten y ∈ Y eine Kante [y,t] zur Senke t haben alle Kanten [u,v] die Kapazität c‘([u,v]) = 1 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Beobachtungen • • 7/2, Folie 8 G‘ kann man effizient „konstruieren“ (/* man braucht O(n+m) viele Rechenschritte, falls G wie üblich n Knoten und m Kanten hat */) wenn |G| angibt, wie viel Platz man benötigt, um den Graphen G zu „beschreiben“, so genügt O(|G|) viel Platz, um das zugehörige Flussnetzwerk G‘ zu „beschreiben“ • jedem Matching M in G kann man eindeutig einen zulässigen Fluss fM(.) in G‘ zuordnen, wobei val(fM) = |M| gilt • jedem zulässigen Fluss f(.) in G‘ kann man eindeutig ein Matching Mf in G zuordnen, wobei |Mf| = val(f) gilt © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Beispiel 1 2 1 2 3 4 3 4 s t 5 6 5 6 7 8 7 8 ... für die in G‘ markierten Kanten [u,v] gilt jeweils f[u,v]) = c‘([u,v]) = 1 7/2, Folie 9 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Beispiel 1 2 1 2 3 4 3 4 s t 5 6 5 6 7 8 7 8 ... für die in G‘ markierten Kanten [u,v] gilt jeweils f[u,v]) = c‘([u,v]) = 1 7/2, Folie 10 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Einordnung / Motivation Algorithmische Lösung 1) 2) 3) bestimme das zugehörige Flussnetzwerk G‘ bestimme in G‘ einen maximalen Fluss f(.) setze M = ∅ • für alle Kanten [x,y] mit x ∈ X und y ∈ Y und f([x,y]) = c‘([x,y]) = 1 setze M = M ∪ { {x,y} } ... falls 2) für ein Flussnetzwerk mit n‘ Knoten und m‘ Kanten mit g(n‘,m‘) vielen Rechenschritten realisiert werden kann, so kann im bipartiten Graphen G ein maximales Matching M mit insgesamt O(n+m) + O(g(n,m)) + O(m) vielen Rechenschritten bestimmt werden 7/2, Folie 11 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung