Graphentheorie Rainer Schrader Zentrum ür Angewandte Inormatik Köln 31. Oktober 2007 1 / 30 2 / 30 Gliederung maximale Flüsse Schnitte Edmonds-Karp-Variante sei G = (V, A) ein gerichteter Graph sei c eine Abbildung von E R wir interpretieren c(e) als die Kapazität der Kante e alls (u, v ) / A, so sei c(u, v ) := 0 seien wiederum s und t zwei Knoten als Quelle und Senke der Graph repräsentiert ein Netzwerk (Leitungen, Kanäle, usw.) durch das Netzwerk sollen Flüssigkeiten oder Güter gepumpt werden wir wollen so viel wie möglich von s nach t pumpen 3 / 30 4 / 30
ein Fluss ist eine Abbildung x : E R x(e) gibt die Quantität an, die über die Kante e = (u, v ) ließt der Nettozuluss im Knoten v V ist: δ v (x) = x (e) e δ (v ) e δ + (v ) d.h. die Dierenz aus eingehendem und ausgehendem Fluss Zur Modellierung unseres Fluss-Problems: wir ügen eine Rückkante = (t, s) mit unbeschränkter Kapazität hinzu ein Fluss x heißt Zirkulation, wenn gilt: 0 x(e) c(e) x erüllt die Flusserhaltung in allen Knoten v V der Wert der Zirkulation ist gegeben durch x ( ) x erüllt die Flusserhaltungs-Bedingung in einem Knoten v, alls δ v (x) = 0 d.h. alles, was nach v hineinließt, ließt auch wieder heraus 5 / 30 6 / 30 Beispiel: im olgenden Graph sei c e = 1 ür alle e A sei nun x 0 eine zulässiger Fluss wir wollen versuchen, diesen zu verbessern sei dazu G(x) = (V, A(x)) ein Hilsgraph au V eine mögliche Zirkulation x mit x( ) = 1 ist: ür eine Kante e = (v, w ) A enthält G(x) bis zu zwei Kanten: (v, w ), alls x e < c e (Vorwärtskante) (w, v ), alls x e > 0 (Rückwärtskante) sei ε > 0 so, dass x(e) + ε c(e), ε 0, ür alle Vorwärtskanten e ür alle Rückwärtskanten e x ist nicht maximal, kann aber nicht einach erhöht werden. 7 / 30 8 / 30
die aktuelle Zirkulation x: sei P ein Weg von s nach t im Hilsgraphen G(x) dann kann x um mindestens ε > 0 erhöht werden: erhöhe x um ε au Vorwärtskanten von P und au = (t, s) erniedrige x um ε au den Rückwärtskanten von P der zugehörige Hilsgraph G(x): oensichtlich ist der resultierende Fluss nichtnegativ respektiert die Kapazitätsgrenzen und genügt der Flusserhaltung G(x) kann Kanten enthalten, die in G nicht vorkommen P heißt augmentierender Weg 9 / 30 10 / 30 der Hilsgraph G(x) mit einem augmentierendem Weg sei S die Menge aller Knoten, die in G(x) von s aus au einem gerichteten Weg erreicht werden können dann wissen wir also: alls t S, so kann x verbessert werden der verbesserte Fluss x : aus den vorangegangenen Überlegungen ergibt sich der olgende Algorithmus: 11 / 30 12 / 30
Algorithmus von Ford-Fulkerson (1) beginne mit x = 0 als Startlösung (2) konstruiere den Hilsgraphen G(x) (3) suche in G(x) einen augmentierenden Weg P von s nach t (4) alls kein solcher Weg existiert, stop, (5) andernalls erhöhe x entlang P zu einem neuen Fluss x mit = x( ) + ε x (6) setze x = x und gehe zu (2) Gliederung maximale Flüsse Schnitte Edmonds-Karp-Variante wir wollen zeigen, dass der Algorithmus optimale Zirkulationen berechnet dazu betrachten wir wieder ein duales Problem 13 / 30 14 / 30 sei S V eine Knotenmenge mit s S dann bestimmt S einen s-schnitt (S, V S) = {(v, w ) E v S, w / S} der Schnitt S hat die Kapazität c(s, V S) = e (S,V S) c e Lemma 1 (Schnittlemma) Sei x eine Zirkulation und S ein Schnitt. Dann gilt: (i) x( ) = P P x(e) e (ii) x( ) c(s, V S) Beweis: s S t (i) wegen der Flusserhaltung ür alle v S gilt: 0 = v S e δ + (v ) e δ (v ) x(e) jede Kante, die innerhalb von S verläut, wird einmal addiert und einmal subtrahiert somit: 0 = x (e) 15 / 30 16 / 30
0 = = x (e) x (e) (ii) olgt aus (i) mit 0 x (e) c(e): x( ) = e x(e) c(e) = c(s, V S) x (e) x (e) x( ) e x(e) sei wie vorher x 0 ein zulässiger Fluss sei S die Menge aller von s aus in G(x) erreichbaren Knoten angenommen t / S dann gilt ür jede Kante e = (v, w ) A: j c(e), wenn v S und w V S x(e) = 0, wenn v V S und w S. weiter olgt mit Lemma 1 x ( ) = somit ist x optimal e x (e) = c(s, V S) 17 / 30 18 / 30 Daraus ergibt sich der olgende Satz: Satz 2 (Ford-Fulkerson) Eine Zirkulation x ist genau dann optimal, wenn es im Hilsgraphen G(x) keinen augmentierenden Weg von s nach t gibt. Als Aussage über primal-duale Probleme: Korollar 3 (max-low-min-cut-theorem) Der Wert einer maximalen Zirkulation ist gleich der Kapazität eines minimalen Schnitts. Bemerkungen: sind die Kapazitäten c(e) ganzzahlig, so ist klar, dass der FF-Algorithmus nur ganzzahlige Lösungen x generiert in jeder Iteration der Flusswert x ( ) um ein ganzzahliges ε 1 verbessert wird eine leichte Modiikation des einührenden Beispiels zeigt, dass der Algorithmus von Ford-Fulkerson keine polynomielle Lauzeit hat von der olgenden Variante jedoch werden wir zeigen, dass wir die Lauzeit polynomiell beschränken können: 19 / 30 20 / 30
Gliederung maximale Flüsse Schnitte Edmonds-Karp-Variante Edmonds-Karp-Verahren (1) beginne mit x = 0 als Startlösung (2) konstruiere den Hilsgraphen G(x) (3) alls kein augmentierender Weg existiert, stop, (4 ) andernalls sei P ein kürzester (in der Zahl der Kanten) augmentierender Weg (5) erhöhe x entlang P zu einer neuen Zirkulation x mit = x( ) + ε x (6) setze x = x und gehe zu (2) bezeichne d (x, v ) die Distanz in G(x) von s nach v dann gilt: 21 / 30 22 / 30 Lemma 4 Bei der Edmonds Karp Variante wachsen mit jeder Augmentierung die Distanzen d (x, v ) ür alle Knoten v V {s, t} monoton. Beweis: angenommen die Aussage ist alsch dann existiert ein v V {s, t} mit d (x, v ) < d (x, v ) bei einer Augmentierung von x zu x wähle ein solches v, ür das d (x, v ) minimal ist sei P ein kürzester (s, v )-Weg in G(x ) sei u unmittelbarer Vorgänger von v au P (insbesondere ist dann (u, v ) A ) dann gilt: d (x, u) d (x, u) = d (x, v ) 1 (i) (u, v ) A(x): d (x, u) d (x, u) = d (x, v ) 1 dann ist d (x, v ) d (x, u) + 1 d (x, v ), Widerspruch (ii) (u, v ) / A(x): dann ist x(u, v ) = c(u, v ) da (u, v ) A(x ), muss der Fluss zwischen u und v reduziert worden sein also war v der direkte Vorgänger von u au dem kürzesten augmentierenden Weg d.h. d (x, v ) = d (x, u) 1 d (x, u) 1 = d (x, v ) 2 < d (x, v ) Widerspruch wir ühren eine Fallunterscheidung durch: 23 / 30 24 / 30
sei P ein kürzester Weg sei ε der Betrag, um den der Fluss erhöht wird eine Kante (u, v ) eines kürzesten Weges P heißt kritisch, alls j c(e) x(e), alls (u, v ) Vorwärtskante; ε = x(e), alls (u, v ) Rückwärtskante; d.h. (u, v ) bestimmt den Wert, um den der Fluss erhöht wird wir zeigen damit den olgenden: Satz 5 Die Edmonds Karp Variante ührt höchstens O(mn) Augmentierungen durch. Beweis: wir untersuchen, wie ot eine Kante (u, v ) kritisch sein kann wenn (u, v ) zum ersten Mal kritisch ist, gilt d (x, v ) = d (x, u) + 1 die Kante kann erst dann wieder kritisch werden, wenn die Gegenkante (v, u) au einem späteren augmentierenden Weg gelegen hat sei x der Fluss zu diesem Zeitpunkt dann gilt d (x, u) = d (x, v ) + 1 d (x, v ) + 1 = d (x, u) + 2 die Distanz von u hat sich oenbar um mindestens 2 erhöht die maximale Distanz bei n Knoten ist höchstens n somit kann jede Kante höchstens n -mal kritisch werden 2 da wir m Kanten haben, olgt die Behauptung. 25 / 30 26 / 30 Wenn die kürzesten augmentierenden Wege jeweils mittels depth-irst-search gesucht werden, ergibt sich eine Gesamtlauzeit von O(m 2 n) Das Problem lässt sich verallgemeinern: gegeben Kosten au den Kanten gegeben einen Flusswert bestimme eine Zirkulation x mit x = und minimalen Kosten weiter seien zu jedem e A untere Schranken l(e) 0 gegeben wir ordern also l(e) x(e) c(e) ür jede Zirkulation zusätzlich seien zu jedem v V Werte b(v ) gegeben bestimme eine maximale Zirkulation x mit δ x (v ) = b(v ) bestimme eine kostenminimale Zirkulation mit x ( ) = und δ x (v ) = b(v ) 27 / 30 Untere Schranken können einach au das klassische Problem zurückgeührt werden: wir deinieren ein neues Zirkulationsproblem au einem gerichteten Graphen G = (V, A ) V = V {s, t } mit neuen Knoten s, t A = A {(s, v ) : v V } {(v, t ) : v V } neue untere Schranken l (e) = 0 ür alle e A neue obere Schranken 8 < c(e) l(e), c (e) = l(δ (v )), : l(δ + (v )), l 1 l 2 c l 2 2 l 3 c 3 ür e A ür e = (s, v ), v V ür e = (v, t ), v V c l 1 1 l l 1 + l + l 2 3 3 s s t 28 / 30
Durch einaches Nachrechnen lässt sich dann die olgende Aussage beweisen: Satz 6 In G existiert genau dann eine zulässige Zirkulation bezüglich der Schranken l und c, wenn in G eine Zirkulation mit dem Wert x = P e A l(e) existiert. Satz 7 In G existiert genau dann eine zulässige Zirkulation bezüglich b, wenn in G eine Zirkulation existiert. Ähnlich werden Knotenbedingungen b(v ) behandelt: üge einen neuen Knoten r hinzu ür v V mit b(v ) < 0: üge neue Kante (r, v ) mit l(r, v ) = c(r, v ) = b(v ) hinzu ür v V mit b(v ) < 0: üge neue Kante (v, r ) mit l(v, r ) = c(v, r ) = b(v ) hinzu 29 / 30 30 / 30