aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
7 Flüsse mit minimalen Kosten<br />
2. Konstruiere das augmentierende Netzwerk N = (V, A, c, w) bezüglich D und x.<br />
3. Wende einen Kürzeste-Wege-Algorithmus (z. B. den Floyd-Algorithmus (5.25)) an,<br />
um im Digraphen N = (V, A) mit den “Bogenlängen” w(a), a ∈ A, einen negativen<br />
gerichteten Kreis C zu finden. Gibt es keinen, dann gehe zu 5.<br />
4. (Augmentierung entlang C)<br />
Bestimme ε := min{c(a) | a ∈ C}, setze für a ∈ A<br />
⎧<br />
⎪⎨ x(a) + ε falls a1 ∈ C<br />
x(a) := x(a) − ε<br />
⎪⎩<br />
x(a)<br />
falls a2 ∈ C<br />
andernfalls<br />
und gehe zu 2. (Hier erhalten wir einen Fluss mit gleichem Wert und geringeren<br />
Kosten.)<br />
5. Ist val(x) = f, STOP, gib x aus.<br />
6. Bestimme mit einem Kürzeste-Wege-Algorithmus (z. B. einer der Varianten <strong>des</strong><br />
Moore-Bellman-Verfahrens (5.20), es gibt keine negativen Kreise!) einen (s, t)-Weg<br />
P in N mit minimalen Kosten w(P ).<br />
7. Gibt es in N keinen (s, t)-Weg, dann gibt es in D keinen zulässigen (s, t)-Fluss mit<br />
Wert f, STOP.<br />
8. (Augmentierung entlang P )<br />
Bestimme ε ′ := min{c(a) | a ∈ P }, ε := min{ε ′ , f − val(x)}, setze für a ∈ A<br />
⎧<br />
⎪⎨ x(a) + ε falls a1 ∈ P<br />
x(a) := x(a) − ε<br />
⎪⎩<br />
x(a)<br />
falls a2 ∈ P<br />
andernfalls,<br />
konstruiere das bzgl. x und D augmentierende Netzwerk N = (V, A, c, w) und gehe<br />
zu 5. △<br />
Die Korrektheit <strong>des</strong> Algorithmus folgt unmittelbar aus (7.6) und (7.7). Wir wollen nun<br />
die Laufzeit abschätzen. Hat D nur nichtnegative Kosten w(a) bzw. enthält D keinen<br />
augmentierenden Kreis mit negativen Kosten, so ist der Nullfluss eine kostenoptimaler<br />
Fluss mit Wert Null, und die Schleife über die Schritte 2, 3 und 4 braucht nicht durchlaufen<br />
zu werden. Sind alle Kapazitäten ganzzahlig, so wird der Flusswert in Schritt 8 um<br />
jeweils min<strong>des</strong>tens eine Einheit erhöht. Also sind höchstens f Aufrufe einen Kürzesten-<br />
Wege-Algorithmus erforderlich.<br />
(7.9) Satz. Ist D = (V, A) ein Digraph mit ganzzahligen Kapazitäten c(a) und nichtnegativen<br />
Kosten w(a), und sind s, t zwei verschiedene Knoten und f ∈ Z+ ein vorgegebener<br />
Flußwert, so findet Algorithmus (7.8) in O(f|V | 3 ) Schritten einen kostenminimalen zulässigen<br />
(s, t)-Fluss mit Wert f, falls ein solcher existiert. △<br />
136