finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB

23.06.2013 Aufrufe

7.3 Der Netzwerk-Simplex-Algorithmus Vollkommen überraschend war die Entdeckung eines französischen Mathematikers im Jahre 2006, dass die ungarische Methode bereits um 1850 von Carl Gustav Jacob Jacobi (1804 in Potsdam – 1851 in Berlin) beschrieben wurde. Siehe hierzu Abschnitt 2 in (Grötschel, 2008) sowie Kuhn (2012) und die URLs: http://www.lix.polytechnique.fr/~ollivier/JACOBI/jacobiEngl.htm http://en.wikipedia.org/wiki/Hungarian_method http://www.zib.de/groetschel/pubnew/paper/groetschel2008_pp.pdf 7.3 Der Netzwerk-Simplex-Algorithmus Wie schon in der Einführung erwähnt kann der Simplexalgorithmus zur Lösung allgemeiner linearer Optimierungsprobleme zur Lösung des Minimalkosten-Flussproblems spezialisiert werden. Diese Netzwerk-Simplex-Algorithmen nutzen die spezielle Struktur des Minimalkosten-Flussproblems aus, um die Operationen des Simplexalgorithmus besonders effizient umzusetzen. Die Grundstruktur eines Netzwerk-Simplex-Algorithmus kann jedoch auch ohne Kenntnis des Simplexalgorithmus verstanden werden. Betrachten wir dazu das Minimalkosten-Flussproblem in der allgemeinen Form min c T x x(δ − (i)) − x(δ + (i)) = bi ∀i ∈ V, (7.14) la ≤ xa ≤ ua ∀a ∈ A, (7.15) für einen Digraphen D = (V = {1, . . . , n}, A) mit n Knoten und m Bögen. Die Bogenbewertung c: A → R definiert „Kosten“, während die Bogenbewertungen l, u: A → R+ untere bzw. obere Schranken für den Fluss auf einem Bogen angeben und damit die Kapazität des Bogens definieren. Die Knotenbewertung b: V → R beschreibt die Einspeisung (bi ≥ 0, i ∈ V ) bzw. Ausspeisung (bi ≤ 0, i ∈ V ) an den Knoten; Ein- und Ausspeisung werden zusammen auch als Bedarfe bezeichnet. Wir nehmen in diesem Abschnitt an, dass D zusammenhängend ist und die Beziehung i∈V bi = 0 gilt. In Analogie zur Terminilogie für (s, t)-Flüsse bezeichnen wir einen Vektor x ∈ RA , der (7.14) erfüllt, als Fluss. Erfüllt x zusätzlich (7.15), so sprechen wir von einem zulässigen Fluss. (Optimale) zulässige Flüsse des Minimalkosten-Flussproblems lassen sich kombinatorisch über aufspannende Bäume beschreiben, die den Fluss definieren. (7.16) Definition (Baum-Lösung). Ein Flussvektor x zusammen mit einem aufspannenden Baum T für D = (V, A) und Bogenmengen L, U ⊆ A heißt Baum-Lösung, wenn gilt: • T , L und U sind eine Partition von A, • xa = la für alle a ∈ L, • xa = ua für alle a ∈ U. 139

7 Flüsse mit minimalen Kosten Erfüllt (x, T, L, U) außerdem alle Bedingungen l ≤ x ≤ u (d. h. auch für die Bögen in T ), so heißt (x, T, L, U) zulässige Baum-Lösung. △ Wie wir später sehen werden (Satz (7.24)), genügt es, sich bei der Suche nach kostenminimalen Flüssen auf Baum-Lösungen zu beschränken. Baum-Lösungen haben die Eigenschaft, dass sich die Flusswerte auf den Nicht-Baum-Kanten über die Flusserhaltungsbedingungen aus den Flusswerten der Baum-Kanten eindeutig ergeben. (7.17) Lemma. Seien (T, L, U) eine Partition von A und T ein aufspannender Baum für D = (V, A). Dann existiert ein (nicht unbedingt zulässiger) eindeutiger Fluss x mit xa = la für alle a ∈ L und xa = ua für alle a ∈ U. △ Beweis. Sei i ein Blatt von T und a ∈ T der mit i inzidente Bogen sowie M := L ∪ U die Menge der Bögen mit festem Flusswert. Da i ein Blatt ist, sind alle anderen mit i inzidenten Bögen in M enthalten. Auf der linken Seite der Flusserhaltungsbedingung x(δ − (i)) − x(δ + (i)) = bi sind daher alle Terme außer xa konstant, d. h. der Wert von xa ist durch diese Gleichung eindeutig bestimmt. Wenn wir nun xa auf diesen Wert festsetzen und a aus T entfernen und in die Menge M aufnehmen, können wir dieses Verfahren mit dem übrigen Baum T und der aktualisierten Menge M fortsetzen. Schließlich ergibt sich ein (nicht notwendig zulässiger) Fluss für jeden Bogen des ursprünglichen Baumes T . ✷ Die Grundidee des Netzwerk-Simplex-Algorithmus ist, eine bekannte zulässige Baum- Lösung in eine andere, kostengünstigere Baum-Lösung „umzubauen“. Konkret passiert dies, indem wir einen Bogen e ∈ A\T (engl. „entering arc“) zu T hinzunehmen und einen Bogen f ∈ T (engl. „leaving arc“) aus T entfernen. Damit die Baum-Eigenschaft erhalten bleibt, sollte f natürlich auf dem eindeutigen Kreis C in T +e liegen. Wir wählen die Orientierung von C so, dass e ein Vorwärtsbogen auf C ist; F und B bezeichnen die Mengen der Vorwärts- bzw. Rückwärtsbögen in C. Damit die Aufnahme von e den Zielfunktionswert verbessert, müssen wir den Fluss auf e erhöhen (e ∈ L) oder verringern (e ∈ U). Wenn wir den Fluss auf e um ε verändern, erhalten wir einen neuen Fluss x ′ , indem wir alle Flüsse auf Bögen von C gemäß Gleichung (7.4) anpassen, sodass die Flusserhaltung weiter gewährleistet ist. Damit x ′ auch die Kapazitätsschranken einhält, dürfen wir ε nur so groß wählen, dass x ′ auf C eine Kapazitätsschranke erreicht, d. h. ε ist ε := min min{xa − la | a ∈ B}, min{ua − xa | a ∈ F } . (7.18) Es ist durchaus möglich, dass ε = 0 auftritt. Sei f einer der Bögen in C, der durch die Änderung des Flusses um ε seine Kapazitätsschranke erreicht (Achtung: hier kann auch e = f gelten). Die Baum-Lösung für den neuen Fluss x ′ ergibt sich als 140 T := (T − f) + e, (L − e) + f falls x L := ′ f = la, , (L − e) sonst, (U − e) + f falls x U := ′ f = ua, (U − e) sonst. (7.19)

7 Flüsse mit minimalen Kosten<br />

Erfüllt (x, T, L, U) außerdem alle Bedingungen l ≤ x ≤ u (d. h. auch für die Bögen in T ),<br />

so heißt (x, T, L, U) zulässige Baum-Lösung. △<br />

Wie wir später sehen werden (Satz (7.24)), genügt es, sich bei der Suche nach kostenminimalen<br />

Flüssen auf Baum-Lösungen zu beschränken. Baum-Lösungen haben die<br />

Eigenschaft, dass sich die Flusswerte auf den Nicht-Baum-Kanten über die Flusserhaltungsbedingungen<br />

aus den Flusswerten der Baum-Kanten eindeutig ergeben.<br />

(7.17) Lemma. Seien (T, L, U) eine Partition von A und T ein aufspannender Baum<br />

für D = (V, A). Dann existiert ein (nicht unbedingt zulässiger) eindeutiger Fluss x mit<br />

xa = la für alle a ∈ L und xa = ua für alle a ∈ U. △<br />

Beweis. Sei i ein Blatt von T und a ∈ T der mit i inzidente Bogen sowie M := L ∪ U<br />

die Menge der Bögen mit festem Flusswert. Da i ein Blatt ist, sind alle anderen mit i<br />

inzidenten Bögen in M enthalten. Auf der linken Seite der Flusserhaltungsbedingung<br />

x(δ − (i)) − x(δ + (i)) = bi sind daher alle Terme außer xa konstant, d. h. der Wert von xa<br />

ist durch diese Gleichung eindeutig bestimmt. Wenn wir nun xa auf diesen Wert festsetzen<br />

und a aus T entfernen und in die Menge M aufnehmen, können wir dieses Verfahren mit<br />

dem übrigen Baum T und der aktualisierten Menge M fortsetzen. Schließlich ergibt sich<br />

ein (nicht notwendig zulässiger) Fluss für jeden Bogen <strong>des</strong> ursprünglichen Baumes T . ✷<br />

Die Grundidee <strong>des</strong> Netzwerk-Simplex-Algorithmus ist, eine bekannte zulässige Baum-<br />

Lösung in eine andere, kostengünstigere Baum-Lösung „umzubauen“. Konkret passiert<br />

dies, indem wir einen Bogen e ∈ A\T (engl. „entering arc“) zu T hinzunehmen und einen<br />

Bogen f ∈ T (engl. „leaving arc“) aus T entfernen. Damit die Baum-Eigenschaft erhalten<br />

bleibt, sollte f natürlich auf dem eindeutigen Kreis C in T +e liegen. Wir wählen die Orientierung<br />

von C so, dass e ein Vorwärtsbogen auf C ist; F und B bezeichnen die Mengen<br />

der Vorwärts- bzw. Rückwärtsbögen in C. Damit die Aufnahme von e den Zielfunktionswert<br />

verbessert, müssen wir den Fluss auf e erhöhen (e ∈ L) oder verringern (e ∈ U).<br />

Wenn wir den Fluss auf e um ε verändern, erhalten wir einen neuen Fluss x ′ , indem wir<br />

alle Flüsse auf Bögen von C gemäß Gleichung (7.4) anpassen, sodass die Flusserhaltung<br />

weiter gewährleistet ist. Damit x ′ auch die Kapazitätsschranken einhält, dürfen wir ε nur<br />

so groß wählen, dass x ′ auf C eine Kapazitätsschranke erreicht, d. h. ε ist<br />

ε := min min{xa − la | a ∈ B}, min{ua − xa | a ∈ F } . (7.18)<br />

Es ist durchaus möglich, dass ε = 0 auftritt. Sei f einer der Bögen in C, der durch<br />

die Änderung <strong>des</strong> Flusses um ε seine Kapazitätsschranke erreicht (Achtung: hier kann<br />

auch e = f gelten). Die Baum-Lösung für den neuen Fluss x ′ ergibt sich als<br />

140<br />

T := (T − f) + e,<br />

<br />

(L − e) + f falls x<br />

L :=<br />

′ f = la,<br />

,<br />

(L − e) sonst,<br />

<br />

(U − e) + f falls x<br />

U :=<br />

′ f = ua,<br />

(U − e) sonst.<br />

(7.19)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!