Offenbar läßt sich längs eines erweiternden Kreises ein Fluß umlenken, ohne seine Mächtigkeit zu verändern.
Daraus ergibt sich der folgende Satz: Fluß f hat minimale Kosten Es gibt bzgl. f keinen kostenmindernden erweitern den Kreis.
Konstruiere also aus f und G einen Graphen Gf = (V,Ef) mit folgenden
Kantenkosten:
Ein kostensenkender Kreis in G entspricht einem Kreis negativer Länge in Gf . Im obigen Beispiel haben wir z.B. in Gf einen Kreis der Länge -1. Ändere nun den Fluß um das Minimum der Möglichkeiten, in unserem Fall also um min {3,2,5} = 2 . Die Ersparnis beträgt dann also: - 2 · 7 + 2 · 5 + 2 · 3 = 2 . Zur Erkennung von negativen Zyklen in Gf kann man z.B. den Algorithmus von Floyd verwenden, denn wenn im Laufe dieses Algorithmus in der Hauptdiagonalen der Entfernungsmatrix ein negativer Wert auftaucht, so liegt ein negativer Zyklus vor.
Gegeben: G = (V,E) gerichtet mit oberen und unteren Schranken:
Gesucht: Ein zulässiger Fluß in G , d.h. ein Fluß, der die Schranken respektiert.
Um dieses Problem zu lösen, betrachten wir einen modifizierten Graphen G' = (V',E') mit V' = V {q',s'} und E' = E {q'} × V V × {s'} {(q,s),(s,q)} .
Den Kanten aus E' ordnen wir dabei Kapazitäten zu, und zwar:
Es ergibt sich in unserem Beispiel folgender Graph G' :
In diesem Graphen G' suchen wir nun den maximalen Fluß von q' nach s' . Ein solcher Fluß ist in dem obigen Schaubild eingezeichnet.
Für diesen Fluß gilt dann der folgende Satz:
Die Idee dieses Verfahrens sei nun noch einmal zusammengefaßt:
Die ausgelasteten Zusatzkanten von q' bzw. nach s' erzwingen in jedem Knoten ein ``Flußgefälle'', welches durch die ursprünglichen Mindestflüsse diktiert wurde und welches durch die Restkapazitäten kompensiert wird.