23.06.2013 Aufrufe

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

7 Flüsse mit minimalen Kosten<br />

Ein Ende ist nicht abzusehen. Es gibt (zurzeit) kein global bestes Verfahren, weder bezüglich<br />

der beweisbaren Laufzeit, noch in Bezug auf Effizienz im praktischen Einsatz.<br />

Die Literatur ist allerdings voll mit Tabellen mit derzeitigen „Weltrekorden“ bezüglich<br />

der worst-case-Laufzeit unter speziellen Annahmen an die Daten. Alle derzeit gängigen<br />

Verfahren können — gut implementiert — Probleme <strong>des</strong> Typs (7.1) mit Zigtausenden<br />

von Knoten und Hunderttausenden oder gar Millionen von Bögen mühelos lösen.<br />

Wir haben in dieser Vorlesung nicht genügend Zeit, um auf diese Details und Feinheiten<br />

einzugehen. Wir werden zunächst ein kombinatorisches Verfahren und die zugrundeliegende<br />

Theorie vorstellen. Um den Algorithmus und den Satz, auf dem seine Korrektheit<br />

beruht, darstellen zu können, führen wir einige neue Begriffe ein.<br />

Sei x ein zulässiger (s, t)-Fluss in D und sei C ein (nicht notwendigerweise gerichteter)<br />

Kreis in D. Diesem Kreis C können wir offenbar zwei Orientierungen geben. Ist eine<br />

Orientierung von C gewählt, so nennen wir einen Bogen auf C, der in Richtung der<br />

Orientierung verläuft, Vorwärtsbogen, andernfalls nennen wir ihn Rückwärtsbogen. Ein<br />

Kreis C heißt augmentierend bezüglich x, wenn es eine Orientierung von C gibt, so dass<br />

xa < ca für alle Vorwärtsbögen a ∈ C und dass 0 < xa für alle Rückwärtsbögen a ∈ C<br />

gilt (vergleiche Definition (6.8)). Ein Kreis kann offenbar bezüglich beider, einer oder<br />

keiner Richtung augmentierend sein. Sprechen wir von einem augmentierenden Kreis C,<br />

so unterstellen wir fortan, dass eine Orientierung von C fest gewählt ist, bezüglich der C<br />

augmentierend ist.<br />

Die Summe der Kostenkoeffizienten der Vorwärtsbögen minus der Summe der Kostenkoeffizienten<br />

der Rückwärtsbögen definieren wir als die Kosten eines augmentierenden<br />

Kreises. (Wenn ein Kreis in Bezug auf beide Orientierungen augmentierend ist, können<br />

die beiden Kosten verschieden sein!) Das zentrale Resultat dieses Abschnitts ist das<br />

Folgende.<br />

(7.2) Satz. Ein zulässiger (s, t)-Fluss x in D mit Wert f hat genau dann minimale<br />

Kosten, wenn es bezüglich x keinen augmentierenden Kreis mit negativen Kosten gibt.△<br />

Beweis. Wir beweisen zunächst nur die triviale Richtung. (Satz (7.6) liefert die Rückrichtung.)<br />

Gibt es einen augmentierenden Kreis C bezüglich x, so setzen wir:<br />

<br />

cij − xij (i, j) ∈ C Vorwärtsbogen,<br />

ε := min<br />

(7.3)<br />

(i, j) ∈ C Rückwärtsbogen.<br />

Definieren wir<br />

x ′ ij :=<br />

xij<br />

⎧<br />

⎪⎨ xij + ε falls (i, j) ∈ C Vorwärtsbogen,<br />

xij − ε<br />

⎪⎩<br />

falls (i, j) ∈ C Rückwärtsbogen,<br />

falls (i, j) ∈ A \ C,<br />

xij<br />

(7.4)<br />

dann ist x ′ ∈ R A trivialerweise ein zulässiger (s, t)-Fluss mit Wert val(x ′ ) = f. Hat der<br />

augmentierende Kreis C negative Kosten γ < 0, dann gilt offenbar <br />

(i,j)∈A wijx ′ ij =<br />

<br />

(i,j)∈A wijxij +εγ. Gibt es also einen augmentierenden Kreis bezüglich x mit negativen<br />

Kosten, dann kann x nicht kostenminimal sein. ✷<br />

130

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!