finale Version des Vorlesungsskripts - ZIB
finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB
6.2 Der Ford-Fulkerson-Algorithmus Beweis. Ist P ein bezüglich x augmentierender [s, t]-Weg, dann sei cij − xij falls (i, j) ∈ P Vorwärtsbogen, ε := min falls (i, j) ∈ P Rückwärtsbogen. Setzen wir x ′ ij := xij ⎧ ⎪⎨ xij + ε falls (i, j) ∈ P Vorwärtsbogen, xij − ε ⎪⎩ falls (i, j) ∈ P Rückwärtsbogen, falls (i, j) ∈ A \ P , xij (6.10) (6.11) dann ist offenbar x ′ ij ein zulässiger (s, t)-Fluss mit val(x′ ) = val(x) + ε. Also kann x nicht maximal sein. Angenommen x besitzt keinen augmentierenden Weg. Dann sei W die Knotenmenge, die aus s und denjenigen Knoten v ∈ V besteht, die von s aus auf einem bezüglich x augmentierenden [s, v]-Weg erreicht werden können. Definition (6.8) impliziert xa = ca für alle a ∈ δ + (W ) und xa = 0 für alle a ∈ δ − (W ). Daraus ergibt sich val(x) = x(δ + (W )) − x(δ − (W )) = x(δ + (W )) = c(δ + (W )). Aufgrund von Lemma (6.4)(b) ist somit x maximal. ✷ Der Beweis von Satz (6.9) liefert einen Schnitt δ + (W ) mit val(x) = c(δ + (W )). Zusammen mit Lemma (6.4)(b) ergibt dies einen kombinatorischen Beweis des Max-Flow- Min-Cut-Theorems. Aus dem Beweis von Satz (6.9) folgt ebenfalls, dass das lineare Programm (6.5) ganzzahlige Optimallösungen hat, falls alle Kapazitäten ganzzahlig sind. (6.12) Satz. Sei D = (V, A) ein Digraph mit ganzzahligen Bogenkapazitäten ca ≥ 0, und seien s, t ∈ V , s = t. Dann gibt es einen maximalen zulässigen (s, t)-Fluss, der ganzzahlig ist. △ Beweis. Wir führen einen Induktionsbeweis über die Anzahl der „Additionen“ augmentierender Wege. Wir starten mit dem Nullfluss. Haben wir einen ganzzahligen Flussvektor und ist dieser nicht maximal, so bestimmen wir den Wert ε durch (6.10). Nach Voraussetzung ist ε ganzzahlig, und folglich ist der neue durch (6.11) festgelegte Flussvektor ebenfalls ganzzahlig. Bei jeder Augmentierung erhöhen wir den Flusswert um mindestens eins. Da der maximale Flusswert endlich ist, folgt die Behauptung aus Satz (6.9). ✷ Wir können nun den Ford-Fulkerson-Algorithmus angeben: (6.13) Ford-Fulkerson-Algorithmus. Eingabe: Digraph D = (V, A) mit Bogenkapazitäten ca ∈ R, ca ≥ 0 für alle Bögen a ∈ A und zwei Knoten s, t ∈ V , s = t. Ausgabe: Ein zulässiger (s, t)-Fluss x mit maximalem Wert val(x) und ein kapazitätsminimaler (s, t)-Schnitt δ + (W ). 1. (Initialisierung) Sei x = (xij) ∈ R A ein zulässiger (s, t)-Fluss. Hier verwendet man am besten eine schnelle Heuristik zur Auffindung eines „guten“ Flusses. Wenn einem nichts einfällt, setzt man z. B. xij = 0 für alle (i, j) ∈ A. Lege folgende Datenstrukturen an: 121
6 Maximale Flüsse in Netzwerken W Menge der markierten Knoten U Menge der markierten, aber noch nicht überprüften Knoten VOR (n − 1)-Vektor, in dem der Vorgänger eines Knoten v auf einem augmentierenden [s, v]-Weg gespeichert wird EPS (n − 1)-Vektor, zur sukzessiven Berechnung von (6.10) Markieren und Überprüfen 2. Setze W := {s}, U := {s}, EPS(s) := +∞. 3. Ist U = ∅, dann gehe zu 9. 4. Wähle einen Knoten i ∈ U aus und setze U := U \ {i}. 5. Führe für alle Bögen (i, j) ∈ A mit j ∈ W Folgendes aus: Ist xij < cij, dann setze EPS(j) := min{cij − xij, EPS(i)}, VOR(j) := +i, W := W ∪ {j}, U := U ∪ {j}. 6. Führe für alle Bögen (j, i) ∈ A mit j ∈ W Folgendes aus: Ist xji > 0, dann setze EPS(j) := min{xji, EPS(i)}, 7. Gilt t ∈ W , gehe zu 8, andernfalls zu 3. Augmentierung VOR(j) := −i, W := W ∪ {j}, U := U ∪ {j}. 8. Konstruiere einen augmentierenden Weg und erhöhe den gegenwärtigen Fluss um EPS(t), d. h. bestimme j1 = |VOR(t)|, falls VOR(t) > 0, setze xj1t := xj1t+EPS(t), andernfalls setze xtj1 := xtj1 − EPS(t). Dann bestimme j2 := |VOR(j1)|, falls VOR(j1) > 0, setze xj2j1 := xj2j1 + EPS(t), andernfalls xj1j2 := xj1j2 − EPS(t) usw. bis der Knoten s erreicht ist. Gehe zu 2. Bestimmung eines minimalen Schnittes 9. Der gegenwärtige (s, t)-Fluss x ist maximal und δ + (W ) ist ein (s, t)-Schnitt minimaler Kapazität. STOP. △ Aus den Sätzen (6.9) und (6.12) folgt, dass Algorithmus (6.13) für ganzzahlige Kapazitäten korrekt arbeitet und nach endlicher Zeit abbricht. Sind die Daten rational, so kann man (wie üblich) alle Kapazitäten mit dem kleinsten gemeinsamen Vielfachen ihrer Nenner multiplizieren. Man erhält so ein äquivalentes ganzzahliges Maximalflussproblem. 122
- Seite 76 und 77: 4.3 Datenstrukturen zur Speicherung
- Seite 78 und 79: 4.3 Datenstrukturen zur Speicherung
- Seite 80: R. E. Tarjan. Data structures and n
- Seite 83 und 84: 5 Bäume und Wege Der Beweis ist et
- Seite 85 und 86: 5 Bäume und Wege (2) =⇒ (3) Ist
- Seite 87 und 88: 5 Bäume und Wege Haben wir einen A
- Seite 89 und 90: 5 Bäume und Wege Falls T \ {ei} zu
- Seite 91 und 92: 5 Bäume und Wege /****************
- Seite 93 und 94: 5 Bäume und Wege THEN w[dope[i]+j]
- Seite 95 und 96: 5 Bäume und Wege Wie Beispiel (5.1
- Seite 97 und 98: 5 Bäume und Wege (a) F. Schiller.
- Seite 99 und 100: 5 Bäume und Wege DISTk(u) die Län
- Seite 101 und 102: 5 Bäume und Wege VOR(3) = 2. Wir s
- Seite 103 und 104: 5 Bäume und Wege 4. DO u = 1 TO v
- Seite 105 und 106: 5 Bäume und Wege Sei nun P ein kü
- Seite 107 und 108: 5 Bäume und Wege (b) D enthält ge
- Seite 109 und 110: 5 Bäume und Wege C2 C1 s 4 C3 C4 2
- Seite 111 und 112: 5 Bäume und Wege ders vorgehen: z.
- Seite 113 und 114: 5 Bäume und Wege ist ein System vo
- Seite 115 und 116: 5 Bäume und Wege heißt (allgemein
- Seite 117 und 118: 5 Bäume und Wege Um lästige Trivi
- Seite 119 und 120: Literaturverzeichnis A. Goldberg. P
- Seite 121 und 122: 6 Maximale Flüsse in Netzwerken Al
- Seite 123 und 124: 6 Maximale Flüsse in Netzwerken de
- Seite 125: 6 Maximale Flüsse in Netzwerken s
- Seite 129 und 130: 6 Maximale Flüsse in Netzwerken Da
- Seite 131 und 132: 6 Maximale Flüsse in Netzwerken s
- Seite 133 und 134: Literaturverzeichnis L. R. Ford, Jr
- Seite 135 und 136: 7 Flüsse mit minimalen Kosten Ein
- Seite 137 und 138: 7 Flüsse mit minimalen Kosten Dami
- Seite 139 und 140: 7 Flüsse mit minimalen Kosten Dami
- Seite 141 und 142: 7 Flüsse mit minimalen Kosten 2. K
- Seite 143 und 144: 7 Flüsse mit minimalen Kosten schr
- Seite 145 und 146: 7 Flüsse mit minimalen Kosten Erf
- Seite 147 und 148: 7 Flüsse mit minimalen Kosten Die
- Seite 149 und 150: 7 Flüsse mit minimalen Kosten (7.2
- Seite 151 und 152: 7 Flüsse mit minimalen Kosten W f
- Seite 153 und 154: 7 Flüsse mit minimalen Kosten r s
- Seite 156 und 157: 8 Grundlagen der Polyedertheorie In
- Seite 158 und 159: (c) Ist F = {x ∈ P | c T x = γ}
- Seite 160 und 161: (a) =⇒ (d): Nach Definition ist {
- Seite 162 und 163: (8.12) Folgerung. Sei P = P = (A, b
- Seite 164 und 165: 9 Die Grundversion des Simplex-Algo
- Seite 166 und 167: 9.1 Basen, Basislösungen, Entartun
- Seite 168 und 169: 9.1 Basen, Basislösungen, Entartun
- Seite 170 und 171: 9.2 Basisaustausch (Pivoting), Simp
- Seite 172 und 173: gilt daher ⎛ ⎜ F · E = ⎜ ⎝
- Seite 174 und 175: 9.2 Basisaustausch (Pivoting), Simp
6.2 Der Ford-Fulkerson-Algorithmus<br />
Beweis. Ist P ein bezüglich x augmentierender [s, t]-Weg, dann sei<br />
<br />
cij − xij falls (i, j) ∈ P Vorwärtsbogen,<br />
ε := min<br />
falls (i, j) ∈ P Rückwärtsbogen.<br />
Setzen wir<br />
x ′ ij :=<br />
xij<br />
⎧<br />
⎪⎨ xij + ε falls (i, j) ∈ P Vorwärtsbogen,<br />
xij − ε<br />
⎪⎩<br />
falls (i, j) ∈ P Rückwärtsbogen,<br />
falls (i, j) ∈ A \ P ,<br />
xij<br />
(6.10)<br />
(6.11)<br />
dann ist offenbar x ′ ij ein zulässiger (s, t)-Fluss mit val(x′ ) = val(x) + ε. Also kann x nicht<br />
maximal sein.<br />
Angenommen x besitzt keinen augmentierenden Weg. Dann sei W die Knotenmenge,<br />
die aus s und denjenigen Knoten v ∈ V besteht, die von s aus auf einem bezüglich<br />
x augmentierenden [s, v]-Weg erreicht werden können. Definition (6.8) impliziert xa =<br />
ca für alle a ∈ δ + (W ) und xa = 0 für alle a ∈ δ − (W ). Daraus ergibt sich val(x) =<br />
x(δ + (W )) − x(δ − (W )) = x(δ + (W )) = c(δ + (W )). Aufgrund von Lemma (6.4)(b) ist<br />
somit x maximal. ✷<br />
Der Beweis von Satz (6.9) liefert einen Schnitt δ + (W ) mit val(x) = c(δ + (W )). Zusammen<br />
mit Lemma (6.4)(b) ergibt dies einen kombinatorischen Beweis <strong>des</strong> Max-Flow-<br />
Min-Cut-Theorems. Aus dem Beweis von Satz (6.9) folgt ebenfalls, dass das lineare Programm<br />
(6.5) ganzzahlige Optimallösungen hat, falls alle Kapazitäten ganzzahlig sind.<br />
(6.12) Satz. Sei D = (V, A) ein Digraph mit ganzzahligen Bogenkapazitäten ca ≥ 0,<br />
und seien s, t ∈ V , s = t. Dann gibt es einen maximalen zulässigen (s, t)-Fluss, der<br />
ganzzahlig ist. △<br />
Beweis. Wir führen einen Induktionsbeweis über die Anzahl der „Additionen“ augmentierender<br />
Wege. Wir starten mit dem Nullfluss. Haben wir einen ganzzahligen Flussvektor<br />
und ist dieser nicht maximal, so bestimmen wir den Wert ε durch (6.10). Nach Voraussetzung<br />
ist ε ganzzahlig, und folglich ist der neue durch (6.11) festgelegte Flussvektor<br />
ebenfalls ganzzahlig. Bei jeder Augmentierung erhöhen wir den Flusswert um min<strong>des</strong>tens<br />
eins. Da der maximale Flusswert endlich ist, folgt die Behauptung aus Satz (6.9). ✷<br />
Wir können nun den Ford-Fulkerson-Algorithmus angeben:<br />
(6.13) Ford-Fulkerson-Algorithmus.<br />
Eingabe: Digraph D = (V, A) mit Bogenkapazitäten ca ∈ R, ca ≥ 0 für alle Bögen<br />
a ∈ A und zwei Knoten s, t ∈ V , s = t.<br />
Ausgabe: Ein zulässiger (s, t)-Fluss x mit maximalem Wert val(x) und ein kapazitätsminimaler<br />
(s, t)-Schnitt δ + (W ).<br />
1. (Initialisierung) Sei x = (xij) ∈ R A ein zulässiger (s, t)-Fluss. Hier verwendet<br />
man am besten eine schnelle Heuristik zur Auffindung eines „guten“ Flusses. Wenn<br />
einem nichts einfällt, setzt man z. B. xij = 0 für alle (i, j) ∈ A. Lege folgende<br />
Datenstrukturen an:<br />
121