23.06.2013 Aufrufe

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle 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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!