23.06.2013 Aufrufe

finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

s<br />

6/6<br />

4/7<br />

4/7 2/4<br />

1 3 6<br />

2/2<br />

2/3 2/2<br />

0/3<br />

4<br />

4/4<br />

1/1<br />

2 5 8<br />

6/6 2/2<br />

6.2 Der Ford-Fulkerson-Algorithmus<br />

1/1<br />

0/2<br />

6/9<br />

7 t<br />

Abbildung 6.2: Beispiel-Digraph für den Ford-Fulkerson-Algorithmus.<br />

Also funktioniert (6.13) auch bei rationalen Daten. Lässt man (zumin<strong>des</strong>t theoretisch)<br />

auch irrationale Kapazitäten zu, so kann man Beispiele konstruieren, bei denen Algorithmus<br />

(6.13) nicht nach endlicher Zeit abbricht. Aber auch bei ganzzahligen Daten gibt<br />

es Probleme. Ein Durchlauf der Markierungs- und Überprüfungsphase und der Augmentierungsphase<br />

kann offenbar in O(m), m = |A|, Schritten durchgeführt werden. Nach<br />

jedem Durchlauf wird der Flusswert um min<strong>des</strong>tens 1 erhöht. Ist also v der Wert <strong>des</strong><br />

maximalen (s, t)-Flusses, so ist die Laufzeit von (6.13) O(m · v). Diese Laufzeit ist nicht<br />

polynomial in n + m + <br />

a∈A 〈ca〉, und wenn man die im Verfahren (6.13) noch nicht<br />

exakt spezifizierten Schritte ungeschickt ausführt, kann man tatsächlich zu exorbitanten<br />

Laufzeiten kommen. Allerdings haben Edmonds and Karp (1972) gezeigt:<br />

(6.14) Satz. Falls in Algorithmus (6.13) jeder Augmentierungsschritt entlang eines augmentierenden<br />

[s, t]-Weges mit minimaler Bogenzahl durchgeführt wird, dann erhält man<br />

einen Maximalfluss nach höchstens mn<br />

2 Augmentierungen. Also ist die Gesamtlaufzeit<br />

dieser <strong>Version</strong> <strong>des</strong> Verfahrens (6.13) O(m2n). △<br />

Satz (6.14) gilt für beliebige (auch irrationale) Bogenkapazitäten. Es ist in diesem<br />

Zusammenhang interessant zu bemerken, dass praktisch jeder, der Verfahren (6.13) implementiert,<br />

die Edmonds-Karp-Vorschrift einhält. Üblicherweise arbeitet man die Knoten<br />

in Breadth-First-Reihenfolge ab. Dies führt zu augmentierenden Wegen minimaler<br />

Bogenzahl. Das heißt, man implementiert die Menge U der markierten und noch nicht<br />

abgearbeiteten Knoten als Schlange. Wird ein Knoten in Schritt 5 oder 6 zu U hinzugefügt,<br />

so kommt er an das Ende der Schlange. In Schritt 4 wird immer der Knoten i ∈ U<br />

gewählt, der am Anfang der Schlange steht.<br />

(6.15) Beispiel. Wir betrachten den in Abbildung 6.2 dargestellten Digraphen. Die erste<br />

Zahl <strong>des</strong> Zahlenpaares bei einem Bogen gibt den gegenwärtigen Fluss durch den Bogen<br />

an, die zweite die Kapazität <strong>des</strong> Bogens. In Abbildung 6.2 starten wir also mit einem<br />

Fluss <strong>des</strong> Wertes 10.<br />

Wir führen einen Durchlauf der Markierungs- und Überprüfungsphase vor. Im weiteren<br />

sei<br />

VOR = (VOR(1), VOR(2), . . . , VOR(8), VOR(t))<br />

EPS = (EPS(1), EPS(2), . . . , EPS(8), EPS(t)).<br />

1/5<br />

3/3<br />

1/1<br />

123

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!