Die Intuition, die dem Residuendiagramm im Maximum-Flow-Problem entspricht liegt, wird in dieser Vorlesung sehr gut dargestellt . Die Erklärung lautet wie folgt.
Nehmen wir an , wir versuchen , die maximale Strömungsproblem für das folgende Netzwerk zu lösen (wobei jedes Etikett f e / c e bezeichnet sowohl die Strömungs f e durch eine Kante geschoben e und die Kapazität C e dieser Kante):Gfe/cefeece
Ein möglicher gieriger Ansatz ist der folgende:
- Wähle einen beliebigen augmentierenden Pfad , der von der Quelle Eckpunkt geht s an den Senkenscheitelpunkt T , so dass ∀ ePst ); das heißt, alle Kanten in∀e(e∈P→fe<ce haben eine verfügbare Kapazität.P
- Schieben Sie den maximal möglichen Durchfluss durch diesen Pfad. Der Wert von Δ wird durch den Engpass von P bestimmt ; das heißt, die Kante mit der minimalen verfügbaren Kapazität. Formal ist Δ = min e ∈ P ( c e - f e )ΔΔPΔ=mine∈P(ce−fe) .
- Fahren Sie mit Schritt 1 fort, bis keine Erweiterungspfade mehr vorhanden sind.
Suchen Sie also einen Pfad mit verfügbarer Kapazität, senden Sie den Datenfluss entlang dieses Pfads und wiederholen Sie den Vorgang.
In findet eine mögliche Ausführung der obigen Heuristik drei Erweiterungspfade P 1 , P 2 und P 3 in dieser Reihenfolge. Diese Pfade drücken jeweils 2, 2 und 1 Durchflusseinheiten für einen Gesamtdurchfluss von 5:GP1P2P3
Die Auswahl der Pfade in dieser Reihenfolge führt zu einer optimalen Lösung. Was passiert jedoch, wenn wir zuerst auswählen (dh vor P 1 und P 2 )?P3P1P2
Wir erhalten einen sogenannten blockierenden Fluss : Es gibt keine zusätzlichen Pfade mehr. In diesem Fall beträgt der Gesamtdurchfluss 3, was nicht optimal ist. Dieses Problem kann behoben werden, indem Rückgängig- Vorgänge zugelassen werden (dh der Fluss kann in umgekehrter Reihenfolge gesendet werden, wodurch die Arbeit früherer Iterationen rückgängig gemacht wird): Schieben Sie einfach 2 Fluss-Einheiten wie folgt von Scheitelpunkt nach Scheitelpunkt v zurück :wv
Das Kodieren dieser zulässigen Rückgängig-Operationen ist das Hauptziel des Restgraphen .
Ein Restgraph eines Netzwerks G hat die gleiche Menge von Eckpunkten wie G und enthält für jede Kante e = ( u , v ) ∈ G :RGGe=(u,v)∈G
Eine Vorwärtskante mit der Kapazität c e - f e , wenn c e - f e > 0 iste′=(u,v)ce−fece−fe>0 .
Eine Rückwärtskante mit einer Kapazität f e , wenn f e > 0 .e′′=(v,u)fefe>0
Betrachten Sie zum Beispiel den Restgraphen , der nach der ersten Iteration der gierigen Heuristik erhalten wird, wenn die Heuristik zuerst P 3 auswählt (dh, wenn sie den blockierenden Fluss erhält):RP3
Es ist zu beachten, dass die Rückgängig- Operation, die 2 Durchflusseinheiten von nach v verschiebt , als Vorwärtspfad (Aufstockungspfad) von s nach t in R codiert wird :wvstR
Allgemein:
Wenn ein Erweiterungspfad in dem Restgraphen R ausgewählt wird :P′R
- Jede Kante in , die einer Vorwärtskante in G entspricht, erhöht den Fluss, indem eine Kante mit verfügbarer Kapazität verwendet wird.P′G
- Jede Kante in , die einer Kante entspricht, die in G rückwärts verläuft, macht den Fluss rückgängig, der in der Vergangenheit in Vorwärtsrichtung gedrückt wurde.P′G
Dies ist die Grundidee der Ford-Fulkerson-Methode .
Die Ford-Fulkerson-Methode geht genauso vor wie der oben beschriebene gierige Ansatz, stoppt jedoch nur, wenn der Restgraph keine zusätzlichen Pfade mehr enthält (nicht im ursprünglichen Netzwerk). Die Methode ist korrekt (dh sie berechnet immer einen maximalen Durchfluss), da der Restgraph die folgende Optimalitätsbedingung festlegt :
Bei gegebenem Netzwerk ist ein Fluss f in G maximal, wenn der Restgraph keinen s - t - Pfad enthält.GfGs−t