Als Maximaler Fluss wird ein Fluss in einem Netzwerk bezeichent, mit dem die größe Menge an Einheiten von der Quelle zur Senke fließen.
Die Suche nach einem maximalen Fluss ist ein weit verbreitetes Problem, dass z.b. bei der Bestimmung von Lieferkapazitäten, Produktionskapazitäten oder Netzkapazitäten.
Optimalitätskriterium
Das Optimalitätskriterium gibt uns eine Eigenschaft mit der wir feststellen können, ob der gegebene Fluss zu einem Netzwerk maximal ist.
Satz
Sei G=(V,E,c) ein Netzwerk und f ein zulässiger Fluss. Dann gilt: f ist maximal gdw. kein f-augmentierender Weg im Residualgraphen Gf existiert.
Beweis
⇒
Sei G ein Netzwerk mit zulässigem Fluss f und Residualgraph Gf.
Angenommen es existiert ein f-augmentierender Weg P in Gf.
Dann kann f nicht maximal sein, da f an P augmentiert werden kann und der Fluss vergrößert wird.
Anders ausgedrückt: wenn f maximal ist, dann existiert kein f-augmentierender Weg in Gf.
Sei G=(V,E,c) ein netzwerk mit zulässigem Fluss f und Residualgraph Gf.
In Gf existiert kein f-augmentierender Weg.
Zu zeigen: f ist Maximal.
Sei U⊂V die Menge aller Knote, die in Gf von s aus über gerichtete Wege erreichbar sind.
Dann ist σ+(U)=C ein Schnitt, da s∈U und t∈/U ist.
* Für diesen Teil des Beweises ist ein Grundverständnis zu Schnitten erforderlich.
Ford-Fulkerson Methode
Die Ford-Fulkerson Methode findet einen maximalen Fluss zu einem gegebenen Netzwerk. Dabei ist die Grundidee solange f-augmentierende Wege zu suchen, und den Fluss an diesen entsprechend zu augmentieren, bis keine f-augmentierenden Wege mehr im zugehörigen Residualgraphen existieren. Dabei speziefiziert Ford-Fulkerson nicht, nach welchem Prinzip f-augmentierenden Wege gesucht werden, weswegen es verschiedene implementierungen der Methode gibt. Eine Implementierung ist z.b. der Edmonds-Karp-Algorithmus, in dem die suche nach f-augmentierenden Wegen als Breitensuche implementiert ist.
Im folgenden wird die Ford-Fulkerson Methode vorgestellt.
$\text{augmentiere $f$ entlang $(a,b)$ um $c_f(p)$}$
$\text{aktualisiere } G_f$
$\mathbf{return}~f$
In Worten geht die Methode folgendermaßen vor:
Zuerst wird für jede Kante im Netzwerk G der Fluss mit 0 initialisiert (2,3). Anschleißend wird, solange im zu G gehörenden Residualgraphen ein f-augmentierender Weg existiert (4), die Bottleneck-Kapazität des Wegs bestimmt (5) und der Fuss im Netzwerk endlang des Weges um die Bottleneck-Kapazität augmentiert (6,7). Nachdem der Fluss augmentiert wurde, wird der Residualgraph an den neuen Fluss angepasst (8).
Die Methode enden, wenn im Residualgraphen kein f-augmentierender Weg mehr existiert.cor2013
Beispiel
Zum besseren Verständnis wenden wir die Ford-Fulkerson Methode jetzt einmal auf ein Beispiel an. Dabei wird im Pseudocode immer die Zeile hervorgehoben, die aktuel ausgeführt wird. Direkt unter dem Pseudocode ist das Netzwerk G, für dass der maximale Fluss bestimmt werden soll und da drunter wird der zu G gehörende Residualgraph Gf gezeigt. Der f-augmentierende Weg wird in lachs in den Graphen hervorgehoben und die augmentierten Kanten in grün.
$\text{augmentiere $f$ entlang $(a,b)$ um $c_f(p)$}$
$\text{aktualisiere } G_f$
$\mathbf{return}~f$
Netzwerk G:
Residualgraph Gf:
Verbindung zu Matchings
In diesem Abschnitt wollen wir auf die Verbindung zwischen Matchings und Netzwerken eingehen. Genauer werden wir Zeigen, dass wir ein maximales Matching auf einem Graphen G finden können, in dem wir einen Maximalen Fluss in einem aus G konstruierten Netzwerk GN finden.
Konstruktion des Netzwerks
Ein Netzwerk GN kann in drei Schritten aus einem bipartiten GraphenG=(L∪R,E) konstruiert werden:
Alle Kanten aus G werden zu gerichteten Kanten von L nach R im Netzwerk.
Füge G eine Quelle s und eine Senke t hinzu. Dazu füge Kanten von s zu allen Knoten in L und Kanten von allen Knoten in R zu t hinzu.
Gib allen Kanten im Netzwerk eine Kapazität von ein.
Mit diesen Schritten erhalten wir für einen bipartiten GraphenG=(L∪R,E) das Netzwerk:
Da wir jetzt wissen, wie wir aus einem bipartiten Graphen ein Netzwerk konstruieren, müssen wir jetzt noch folgendens Zeigen:
Satz
Ein Graph G hat ein maximales Matching der Grüße k gdw. Das Netzwerk GN hat einen maximalen Fluss mit Flusswert k.
Beweis
⇒
Sei M ein maximales Matching in G mit ∣M∣=k.
Dann definieren wir einen Fluss f im, aus G konstruierten Netzwerk, GN über kanten-disjunkte| kanten_disjunkt Wege von s nach t, die über die Kanten aus M gehen.
Der Fluss f ist zulässig, da nach der Definition von Matchings jeder Knoten nur zu einer Kante e∈Minzident ist und dadurch die Flusserhaltungbedingung für f erfüllt ist.
Da die Kapazität alle Kanten aus GN1 beträgt, ist k der Flusswert von f.
⇐
Sei f ein ganzzahliger Fluss in GN. Das heißt für alle e∈EN gilt f(e)∈{0,1}.
So ein Fluss existiert in GN, da für alle Kanten e∈EN die Kapazität c(e)=1 beträgt.
Die Kanten e∈E mit f(e)=1 bilden ein Matching M, da durch die Flusserhaltungbedingung jeder Knoten in L oder R Ednpunkt von maximal einer Kante in M ist.
Es folgt ∣M∣=k. □
Verständnisfragen
Was ist der maximale Fluss im obigen Netzwerk?
[COR2013]: Corman, T. H., Leiserson, C. E., Rivest, R., Algorithmen - Eine Einführung, De Gruyter Oldenbourg, 2013.↩