Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung 1. 2. 3. 4. 5. 6. 7. 8. 7/3, 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/3, 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 Pfadbasierte Algorithmen Anmerkungen • • die Grundidee für solche pfadbasierten Algorithmen haben wir bereits kennen gelernt interessanterweise kann man diese Grundidee „gut“ und „schlecht“ realisieren (/* und auf den ersten Blick unterscheiden sich diese Realisierungen „kaum“ */) ... „gut“ bedeutet, dass der entsprechende Algorithmus ein „effizienter“ Algorithmus ist ... „schlecht“ bedeutet, dass der entsprechende Algorithmus nachweislich kein „effizienter Algorithmus“ ist 7/3, Folie 3 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Algorithmische Fragestellung • gegeben: • • gesucht: • 7/3, Folie 4 ein Flussnetzwerk, d.h. ein gerichteter Graph mit zwei ausgezeichneten Knoten s und t (/* die Quelle bzw. die Senke */) und einer Funktion c(.), die jeder Kante eine ganze Zahl > 0 als Kapazität zuordnet © 2011 Prof. Steffen Lange der maximale Wert eines Flusses in G von s nach t - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen „generischer“ Ansatz 1) 2) 3) 4) setze f([u,v]) = 0 für alle Kanten [u,v] in G bestimme das zu f(.) gehörende Restflussnetzwerk Gf mit der Kapazitätsfunktion c‘(.) überprüfe, ob es in Gf einen Erweiterungspfad P gibt • falls nein, stoppe • falls ja, wähle das zuerst gefundene P und gehe zu 3) bestimme c‘P, bestimme den aktualisierten Fluss f‘(.) und gehe zu 2) ... diesen Ansatz nennt man Ford-Fulkerson-Methode ... wir wissen schon, dass diese Methode das leistet, was sie soll 7/3, Folie 5 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 1 2 s 3 2 3 1 (0,2) t 2 s (0,3) (0,2) (0,3) (0,2) t 3 t 2 2 1 s 2 2 2 3 2 7/3, Folie 6 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 1 s 2 3 3 2 ... Erweiterungspfad: P = (s,1,2,t) mit c‘P = 2 t 2 1 (0,2) 2 s (0,3) (0,2) (0,3) (0,2) t 2 (2,2) s (0,3) 1 (2,2) 2 7/3, Folie 7 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung (0,3) (2,2) t Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 1 (2,2) s (0,3) (2,2) (0,3) 2 t (2,2) 2 s © 2011 Prof. Steffen Lange 3 t 3 2 7/3, Folie 8 1 2 - HDa/FbI - Graphen und Optimierung 2 Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 2 1 2 s 3 ... Erweiterungspfad: P = (s,2,1,t) mit c‘P = 2 t 3 2 1 (2,2) 2 s (0,3) (2,2) (0,3) (2,2) t 2 (2,2) s (2,3) 1 (0,2) 2 7/3, Folie 9 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung (2,3) (2,2) t Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 1 (2,2) s (2,3) (0,2) (2,3) 2 t (2,2) s 1 2 2 1 2 1 2 2 t 2 ... offenbar gibt es keinen Erweiterungspfad mehr ... also hat der maximale Fluss den Wert 4 7/3, Folie 10 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Anmerkungen (/* Laufzeit */) • es sei G ein Flussnetzwerk mit n Knoten und m Kanten • 1), 2) und 4) kann man offenbar in Zeit O(n+m) realisieren • da das jeweils betrachtete Restflussnetzwerk n Knoten und maximal 2m Kanten besitzt, ist es zulässig, dass die Laufzeit für 3) auch in Abhängigkeit von n und m abgeschätzt wird • 3) kann man mit Hilfe der Tiefen- bzw. Breitensuche in der Zeit O(n+m) realisieren ... um die Gesamtlaufzeit abzuschätzen, muss man nur noch wissen, wie viele Iterationen benötigt werden 7/3, Folie 11 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Anmerkungen (/* Laufzeit */) • es sei z die Größe des maximalen Flusses f*(.), d.h. z = val(f*) • • wir wissen, dass z eine ganze Zahl ist wir wissen, dass der aktuelle Fluss in 4) jeweils um eine ganze Zahl ≥ 1 erhöht wird ... also wird der aktuelle Fluss f(.) höchstens z mal verändert und folglich genügen z Iterationen ... demzufolge benötigt die Ford-Fulkerson-Methode insgesamt höchstens die Zeit O(z*(n+m)) 7/3, Folie 12 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Anmerkungen (/* Laufzeit */) • falls z eine Zahl ist, die nicht viel größer als n und m ist, haben wir mit der Ford-Fuklerson-Methode einen „effizienten“ Algorithmus, um einen maximalen Fluss zu bestimmen ... falls z viel größer als n und m sind, ist das nicht mehr der Fall ... für n = 10, m = 90 und z = 1050, liefert unsere Abschätzung, dass die Ford-Fulkerson-Methode 1052 viele Rechenschritte benötigt (/* das ist garantiert nicht „effizient“ */) ... das nächste Beispiel zeigt, dass diese Bedenken nicht ganz „unbegründet“ sind 7/3, Folie 13 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel • • wir gehen davon aus, dass in der Ford-Fulkerson-Methode 3) mit Hilfe der Tiefensuche realisiert wird wir gehen davon aus, dass die Kanten - wie üblich - in lexikographischer Ordnung besucht werden 6 100 1 100 2 1 1 5 1 3 1 4 ... offenbar hat der maximale Fluss f*(.) den Wert 100 7/3, Folie 14 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 6 6 100 1 100 99 1 2 1 5 1 1 2 1 1 3 99 1 5 1 P = (1,2,3,4,5,2,6) 4 1 1 3 4 1 P = (1,2,5,4,3,2,6) 6 6 97 3 1 97 98 2 3 5 1 1 3 1 1 P = (1,2,3,4,5,2,6) 4 © 2011 Prof. Steffen Lange - 2 2 HDa/FbI - Graphen und Optimierung 1 1 5 1 3 1 7/3, Folie 15 98 2 1 4 Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Anmerkungen • wenn man die Ford-Fulkerson-Methode so implementiert, dass 3) mit Hilfe der Tiefensuche realisiert wird, kann es passieren, dass die Anzahl der Iterationen gleich der Größe z des maximalen Flusses f*(.) ist ... in unserem Beispiel mussten wir die Kapazität von zwei Kanten so wählen, dass sie gleich der z sind ... dass ist nicht weiter „schlimm“, da man nur log(z) Platz benötigt wird, um z zu speichern ... ein Algorithmus, der O(z*(n+m)) viele Rechenschritte benötigt, ist immer noch expontentiell in der Größe der Beschreibung des gegebenen Flussnetzwerks G (/* es gilt |G| ≤ n+m+m*log(z) */) 7/3, Folie 16 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Eine einfache Verbesserungsmöglichkeit • wenn man die Ford-Fulkerson-Methode so implementiert, dass 3) mit Hilfe der Breitensuche realisiert wird, kann man garantieren, dass deutlich weniger Iterationen benötigt werden • man kann zeigen, dass dann O(n*m) viele Iterationen genügen ... das entsprechende Verfahren heißt Algorithmus von Edmonds und Karp und hat eine Laufzeit in der Größe O((n*m)(n+m)) ... offenbar ist der Algorithmus von Edmonds und Karp ein „effizientes“ Verfahren zum Bestimmen von maximalen Flüssen in Flussnetzwerken 7/3, Folie 17 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Algorithmus von Edmonds und Karp 1) 2) 3) 4) setze f([u,v]) = 0 für alle Kanten [u,v] in G bestimme das zu f(.) gehörende Restflussnetzwerk Gf mit der Kapazitätsfunktion c‘(.) überprüfe mit Hilfe der Breitensuche, ob es in Gf einen Erweiterungspfad P gibt • falls nein, stoppe • falls ja, wähle das zu erst gefundene P und gehe zu 3) bestimme c‘P, bestimme den aktualisierten Fluss f‘(.) und gehe zu 2) ... offenbar leistet dieser Algorithmus auch das, was er soll 7/3, Folie 18 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beispiel 6 6 100 1 100 2 (100,100) 1 1 5 1 1 3 1 P = (1,2,6) 4 (100,100) 2 (0,1) (0,1) (0,1) 3 (0,1) ... für dieses „kritische“ Beispiel benötigt der Algorithmus von Edmonds und Karp genau eine Iteration 7/3, Folie 19 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung 5 4 Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Eigenschaften des Algorithmus von Edmonds und Karp • es sei Gf das aktuelle Restflussnetzwerk und P der zu erst gefundene Erweiterungspfad • Dann gilt: • • • P ist ein „kürzester“ Erweiterungspfad von der Quelle s zur Senke t P „besucht“ jeden Knoten aus V höchstens einmal für jeden besuchten Knoten v ist der Teilpfad von der Quelle s zum Knoten v ein „kürzester“ Pfad von s nach v ... der Begriff „kürzester“ Pfad bezieht sich hier auf die Anzahl der Knoten, auf dem betrachten Pfad !!! 7/3, Folie 20 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Anmerkungen • es sei G ein Flussnetzwerk mit n Knoten und m Kanten um zu zeigen, dass die Anzahl der Iteration des Algorithmus von Edmonds und Karp in der Größe O(n*m) liegt benötigen wir folgenden Hilfsbegriff • • • 7/3, Folie 21 es seien f(.) zulässiger Fluss in G und Gf das zugehörige Restflussnetzwerk es sei v ein Knoten aus V \ { s,t } dann bezeichnet df(v) die Entfernung zwischen der Quelle s und dem Knoten v in Gf, d.h. die Anzahl der Kanten auf einem „kürzesten“ Pfad von s nach t in Gf (/* falls es keinen Pfad von s nach v gibt, so ist df(v) = +∞ */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beobachtung 1 • • es sei G ein Flussnetzwerk mit n Knoten und m Kanten es seien Gf1,..., Gfz die Restflussnetzwerke, die der Algorithmus von Edmonds und Karp sukzessive erzeugt • es sei v ein Knoten V \ { s,t } • Dann gilt: df1(v) ≤ df2(v) ≤ .... ≤ dfz(v) ... die Entfernungen eines Knotens v von der Quelle s werden nicht kleiner 7/3, Folie 22 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung • es seien Gf und Gf‘ nacheinander erzeugte Restflussnetzwerke • Annahme: es sei v ein Knoten, für den df(v) > df‘(v) gilt • wir wählen v so, dass auf dem „kürzesten“ Pfad P* von s nach v in Gf‘ für alle Zwischenknoten u‘ gilt: df(u‘) ≤ df‘(u‘) ... das geht offenbar (/* falls man einen Zwischenknoten u findet, der diese Eigenschaft nicht hat, so setzt man u = v */) ... man kann sich leicht überlegen, dass es auf dem „kürzesten“ Pfad P* von s nach v in Gf‘ wenigstens einen Zwischenknoten u‘ gibt • • • 7/3, Folie 23 © 2011 Prof. Steffen Lange falls nicht, so muss es in Gf‘ die Kante [s,v] geben [s,v] darf dann nicht in Gf vorkommen dann müsste aber die Kante [v,s] in einem „kürzesten“ Erweiterungspfad in Gf von s nach t benutzt worden sein (/* das geht nicht, da dann s zweimal besucht würde */) - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung ... in Gf‘ s 7/3, Folie 24 ... in Gf u v s u • • es gilt df(u) ≤ df‘(u) < + ∞ und df‘(v) = df‘(u) + 1 wegen df‘(v) < df(v), darf die Kante [u,v] in Gf nicht vorkommen (/* sonst gilt sofort df(v) = df(u) + 1 ≤ df‘(u) + 1 = df‘(v) */) • also muss die Kante [v,u] in Gf auf dem zu erst gefundenen, kürzesten Erweiterungspfad P von s nach t liegen © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung ... in Gf‘ s ... in Gf u s v u v t • da [v,u] in Gf auf dem zu erst gefundenen „kürzesten“ Erweiterungspfad P von s nach t liegt, wissen wir: • der Teilpfad P‘ von s über v nach u in Gf kann nicht mehr Kanten enthalten als der Pfad P in Gf von s nach u (/* da P ein „kürzester“ Pfad von s nach t ist, muss dessen Teilpfad P‘ auch ein „kürzester“ Pfad von s nach u sein */) also gilt: df(v) = df(u) - 1 7/3, Folie 25 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung ... in Gf‘ s ... in Gf u s v u • • wir wissen, dass gilt: df(v) = df(u) - 1 wir wissen, dass gilt: df‘(v) = df‘(u) + 1 • wenn df‘(v) < df(v) gilt, müsste auch df‘(u) + 1 < df(u) - 1 gelten • also müsste auch df‘(u) < df(u) - 2 gelten v t ... wir haben jedoch vorausgesetzt, dass df‘(u) ≥ df(u) gilt, und haben damit einen Widerspruch abgeleitet 7/3, Folie 26 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Beobachtung 2 • es sei G ein Flussnetzwerk mit n Knoten und m Kanten • Dann gilt: Der Algorithmus von Edmonds und Karp benötigt höchstens O(n*m) viele Iterationen 7/3, Folie 27 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Hilfsbegriff zur Begründung • • es sei Gf ein Restflussnetzwerk mit der Kapazitätsfunktion es sei [u,v] eine Kante in Gf • die Kante [u,v] heißt kritisch für Gf, falls gilt: • • der zu erst gefundene „kürzeste“ Erweiterungspfad P in Gf, der die Kante [u,v] benutzt es gilt c‘([u,v]) = c‘P > 0 ... c‘P ist die minimale Kapazität einer Kante auf dem Erweiterungspfad P 7/3, Folie 28 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Einige hilfreiche Beobachtungen • • es sei G ein Flussnetzwerk mit n Knoten und m Kanten es seien Gf1,..., Gfz die Restflussnetzwerke, die der Algorithmus von Edmonds und Karp sukzessive erzeugt • Dann gilt: • • • 7/3, Folie 29 Wenn die Kante [u,v] in einem Restflusswerk Gfi kritisch ist, so kommt die Kante [u,v] oder die Kante [v,u] in G vor. Wenn die Kante [u,v] in einem Restflusswerk Gfi kritisch ist, so kommt die Kante [u,v] im Restflusswerk Gfi+1 nicht vor. In jedem Restflusswerk Gfi mit i < z kommt wenigstens eine kritische Kante [u,v] vor. © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Qualitative Idee • • es sei G ein Flussnetzwerk mit n Knoten und m Kanten es seien Gf1,..., Gfz die Restflussnetzwerke, die der Algorithmus von Edmonds und Karp sukzessive erzeugt • wir werden zeigen: ... jede überhaupt als kritische Kante infrage kommende Kante [u,v] kann nur O(n) mal benutzt werden, um ein „neues“ Restflussnetzwerk zu definieren ... da höchstens 2m viele Kanten überhaupt als kritische Kanten infrage kommen, kann es nur O(n*m) viele Restflussnetzwerke geben, die der Algorithmus von Edmonds und Karp sukzessive erzeugt 7/3, Folie 30 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung (/* einfacher Fall */) • es sei die betrachtete Kante eine vom Typ [s,u] oder [u,t] ... dann kann diese Kante nur einmal kritisch sein • • 7/3, Folie 31 falls eine Kante vom Typ [s,u] oder [u,t] in im Restflussnetzwerk Gfi kritisch ist, so enthält das Restflussnetzwerk Gfi+1 die Kante [s,u] oder [u,t] nicht mehr und dafür die Kante [u,s] oder [t,u] diese Kanten können im Restflussnetzwerk Gfi+1 nicht auf einem „kürzesten“ Erweiterungspfad P von der Quelle s zur Senke t benutzt werden (/* sonst würden s oder t mehr als einmal besucht werden */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung (/* der schwierigere Fall */) • es sei die betrachtete Kante eine vom Typ [u,v] mit u ≠ s und v ≠ t • es sei Gfi das Restflussnetzwerk, in dem die Kante [u,v] eine kritische Kante ist ... in Gfi s u • 7/3, Folie 32 ... in Gfi+1 v s s offenbar gilt dfi(v) = dfi(u) + 1 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung u v s Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung (/* der schwierigere Fall */) • damit die Kante [u,v] in einem Restflussnetzwerk Gfj mit j > i+1 wieder eine kritische Kante werden kann, muß es ein k mit i+1 ≤ k < j geben, so dass die umgedrehte Kante [v,u] eine kritische Kante im Restflussnetzwerk Gfk ist ... in Gfk s u • 7/3, Folie 33 ... in Gfk+1 v s s offenbar gilt dfk(u) = dfk(v) + 1 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung u v s Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Begründung (/* der schwierigere Fall */) • wir wissen, dass dfi(v) = dfi(u) + 1 gilt • wir wissen, dass dfk(u) = dfk(v) + 1 gilt • wir wissen auch, dass i < k gilt, und damit gilt auch dfi(v) ≤ dfk(v) ... also gilt dfk(u) = dfk(v) + 1 ≥ dfi(u) + 1 + 1 = dfi(v) + 2 ... folglich hat sich die Entfernung des Knotens u von der Quelle s im Restflussnetwerk Gfk im Vergleich zur Entfernung des Knotens u von der Quelle s im Restflussnetzwerk Gfj „echt“ vergrößert 7/3, Folie 34 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Konsequenzen • • es sei G ein Flussnetzwerk mit n Knoten und m Kanten es seien Gf1,..., Gfz die Restflussnetzwerke, die der Algorithmus von Edmonds und Karp sukzessive erzeugt • dann gibt es mit Blick auf eine Kante [u,v] im schlimmsten Fall ... spätestens wenn die Kante n-mal kritisch geworden ist, gilt df(u) ≥ n in jedem noch zu untersuchenden Restflussnetzwerke Gf ... folglich kann die Kante [u,v] in in keinem der zu untersuchenden Restflussnetzwerke Gf auf einem „kürzesten“ Erweiterungspfad von der Quelle s zur Senke t benutzt werden (/* auf dem Teilpfad bis zum Knoten u würde schon jeder Knoten einmal vorkommen */) 7/3, Folie 35 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 7: Flüsse in Netzwerken und Anwendungen Pfadbasierte Algorithmen Zusammenfassung • • 7/3, Folie 36 wenn man die Ford-Fulkerson-Methode zur Bestimmung von maximalen Flüssen verwendet, sollte man stets nach „kürzesten“ Erweiterungspfaden suchen wenn man eine Bereitensuche benutzt (/* siehe Algorithmus von Edmonds und Karp */), erhält man einen „effizienten“ pfadbasierten Algorithmus © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung