Effiziente Algorithmen (SS2014) Kapitel 2 Flüsse Walter Unger Lehrstuhl für Informatik 1 26.06.2014 09:11 Dinitz mit Propagation Spezielle Flüsse Mit Kostenfunktion (2:2) <> Walter Unger 17.1.2015 17:56 Inhalt I 1 2 Dinitz mit Propagation Einleitung Algorithmus und Beispiel Weiteres Beispiel Laufzeit Spezielle Flüsse Mit Mindestfluss Mit Alternativen 3 Mit Kostenfunktion Einleitung Idee Algorithmus Verbesserung der Laufzeit SS2014 Z x Dinitz mit Propagation Einleitung Spezielle Flüsse Mit Kostenfunktion (2:1) <> Walter Unger 17.1.2015 17:56 SS2014 Situation Die Berechnung des Sperrflusses auf einem Niveaunetzwerk Ziel: Suche besseren Algorithmus zur Sperrflussberechnung. Idee: Fülle einen Knoten mit Fluss aus. D.h. suche den Knoten v , der am wenigsten Fluss fv weiterleiten kann. Propagiere dann diesen Fluss fv von v nach s und nach t. D.h. mache: Forward-Backward-Propagation. Im folgenden wird nur diese neue Sperrflussberechnung angegeben. Z g Dinitz mit Propagation Einleitung Spezielle Flüsse Mit Kostenfunktion (2:2) <> Walter Unger 17.1.2015 17:56 Definitionen SS2014 Z Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk. Nin (v ) = {(w , v ) | (w , v ) ∈ Ef0 }. Nout (v ) = {(v , w ) | (v , w ) ∈ Ef0 }. pot(e) = restf (e) ist das Potential einer Kante e. pot(v ) = min{ Knoten v . P e∈Nin (v ) pot(e), P e∈Nout (v ) pot(e)} ist das Potential eines g Dinitz mit Propagation Algorithmus und Beispiel Spezielle Flüsse (2:3) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Idee (Forward Propagation) 1 Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk. 2 Bestimme v ∈ V mit: pot(v ) > 0 und ∀w ∈ V : pot(v ) 6 pot(w ). 3 Lege auf v einen Überschuss von pot(v ), d.h. Setze U(v ) = pot(v ). 4 Setze U(w ) = 0 für alle Knoten w ∈ V \ {v }. 5 6 Z Solange es einen Knoten v 0 gibt mit U(v 0 ) > 0, verschiebe den Überfluss auf die Nachfolger aus Nout (v 0 ). Verwende, um gute Laufzeit zu erreichen, dazu eine Schlange. g Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel (2:4) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus (Forward Propagation) 1 Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk. 2 Bestimme v ∈ V mit: pot(v ) > 0 und ∀w ∈ V : pot(v ) 6 pot(w ). 3 Setze U(v ) = pot(v ) und ∀w ∈ V \ {v } setze U(w ) = 0. 4 Enqueue(v , Q). 5 Solange Q nicht leer ist, mache: 1 2 v = Dequeue(Q). Solange U(v ) > 0 mache: 1 Für jedes e = (v , w ) ∈ Vout (v ): 00 2 f (e) = min{pot(e), U(v )} 00 3 U(v ) = U(v ) − f (e) 00 4 U(w ) = U(w ) + f (e) 00 5 Falls w 6= t und U(w ) = f (e), mache Enqueue(w , Q). Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:5) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Dinitz) g 6 1 63 63 1 64 e h 64 6 1 65 6 c 1 65 6 i 5 65 f 62 5 63 6 d b 63 65 6 6 s 65 62 63 5 a 6 5 t Z g Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:6) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1a) 65 3 3 b 64 6 6 5 6 s 65 1 a 6 d 5 64 6 g e 363 3 h 6 1 65 6 1 c 365 3 65 f 1 3 i 5 6 5 3 t Z g Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel (2:7) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Iterierte Propagation 1 Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk. 2 Solange kein Sperrfluss berechnet ist, wiederhole: 1 2 Führe eine Propagationsphase aus. Solange es saturierte Kanten und Knoten gibt, entferne diese. Lemma (Anzahl der Iterationen) Nach spätestens n − 1 Propagationsphasen ist in dem Niveaunetzwerk ein Sperrfluss bestimmt. Beweis: In jeder Iteration wird mindestens ein Knoten saturiert. Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:8) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1b) b 64 6 6 5 6 s 65 1 a 165 1 3 6 d 5 164 1 6 g e 1 363 1 h 6 1 65 1 c 6 65 f 1 365 4 i 5 6 5 1 t Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:9) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1c) 165 4 1 b 64 6 6 5 6 s 65 1 a 6 d 5 164 1 g 6 e 1 363 h 6 1 165 1 1 1 c 6 f 1 365 165 1 4 i 5 6 5 t Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:10) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1d) b 64 6 6 5 6 s 65 1 a 465 3 4 6 d 5 464 3 1 g 6 e 363 h 6 1 465 3 1 1 c 6 f 1 365 465 3 4 i 5 6 5 t Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:11) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1e) 65 b 6 5 c 1 1 1 s 565 1 4 6 d 5 464 1 g 6 e 1 1 363 465 h 6 f 1 365 6 1 1 6 164 1 6 1 a 465 4 i 5 6 5 t Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:12) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1f) 165 1 b 1 6 5 1 6 565 4 6 d 5 464 1 g 6 6 1 1 1 s 164 1 a e 363 h 1 1 465 1 1 6 c f 1 365 5 565 1 4 i 6 6 5 t Z s Dinitz mit Propagation Spezielle Flüsse Algorithmus und Beispiel Mit Kostenfunktion (2:13) <> Walter Unger 17.1.2015 17:56 SS2014 kleines Beispiel (Niveaunetzwerk 1g) 465 3 b 6 c 4 1 s 565 4 6 d 5 464 1 g 6 e 1 1 363 465 h 6 f 1 365 6 3 3 4 1 6 6 5 464 3 1 1 a 565 4 i 5 6 5 t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:14) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Dinitz) 6 66 64 64 5 64 63 g 65 64 h i l 64 m 6 4 68 63 8 6 64 6 2 64 1 7 d f k 6 6 c 64 6 61 61 67 s 4 66 63 66 65 b e 64 6 64 6 a n t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:15) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1a) 64 e 66 1 g 64 1 63 64 65 6 c 64 m 7 16 d l 1 64 h 5 i 6 16 66 6 s f 1 65 2 1 6 64 b k 6 8 6 168 1 n 1 a t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:16) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1b) 164 1 e 64 f 166 1 6 2 k g 64 1 64 65 64 m 7 16 64 6 6 c d l h 1 16 63 5 i 6 1 1 s 66 168 n 1 65 1 b 6 6 1 8 a t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:17) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1c) 364 2 e 66 g 64 1 63 26 2 65 64 m 64 6 7 16 h 1 6 c d l 5 i 6 6 3 2 16 f 1 s 2 6 65 k 1 2 64 b 166 26 8 a 168 n 4 t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:18) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1d) 364 e 166 6 3 f 6 2 g 64 1 64 26 2 6 3 26 2 65 2 64 m 7 16 d 46 64 6 6 c l h 1 s 5 26 2 16 1 b k 1 8 26 5 i 6 a 168 n 4 t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:19) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1e) 364 e 166 26 6 3 g 64 7 64 l 5 m h 5 i 46 168 n 4 4 36 3 6 6 d 36 3 c 16 3 1 6 3 f 1 64 56 2 6 s 5 56 3 16 1 b k 1 8 26 6 a t Z s Dinitz mit Propagation Weiteres Beispiel Spezielle Flüsse Mit Kostenfunktion (2:20) <> Walter Unger 17.1.2015 17:56 SS2014 schönes Beispiel (Niveaunetzwerk 1f) 364 e 166 g 64 1 26 6 3 36 46 36 5 m 7 4 h 5 464 4 i 568 4 n 4 4 6 6 16 5 4 c d l 6 6 3 16 f 1 s 5 64 56 2 6 56 b k 1 8 26 4 a t Z s Dinitz mit Propagation Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:21) <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel zur Laufzeit Die gelben Kanten haben Kapazität 100. 6 e 15 6 12 15 15 a 56 5 666 466 4 4 d c 567 5 6 26 2 464 4 5 6 1 1 363 3 i h g 18 26 2 262 326 3 3 568 5 3 6 1 1 262 2 n m 26 2 96 l k 18 s 14 6 17 2 3 6 j 18 27 9 19 9 6 18 26 6 16 6 f 2 6 17 26 b t Z s Dinitz mit Propagation Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:22) <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel zur Laufzeit (2.Runde) Die gelben Kanten haben Kapazität 100. 15 6 15 a 56 12 666 46 567 26 d c i h 5 363 16 6 17 16 18 26 262 36 6 464 16 4 j g m 26 3 568 16 n 96 l 3 262 k 18 27 19 3 e 6 s 16 6 18 16 14 6 26 f 16 16 16 6 17 16 6 9 18 6 18 6 1 6 16 b t Z s Dinitz mit Propagation Laufzeit Spezielle Flüsse (2:23) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Forward-Propagation Z Lemma (Laufzeit einer Propagation) Eine Forward-Propagation kann in Zeit O(n + l) durchgeführt werden. Dabei ist l die Anzahl der neu saturierten Kanten. Beweis: Wegen der FIFO-Schlange Q werden die Niveaus nacheinander bearbeitet. Jeder Knoten wird höchstens einmal aus Q entnommen. Bei jedem Knoten werden von den betrachteten Kanten alle bis auf höchstens eine saturiert. Pro Knoten gibt es maximal eine Kante, die betrachtet, aber nicht saturiert wird. Damit: maximal n Knoten werden betrachtet. maximal l Kanten werden saturiert und nicht mehr betrachtet. maximal n Kanten werden betrachtet, aber nicht saturiert. s Dinitz mit Propagation Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:24) <> Walter Unger 17.1.2015 17:56 SS2014 Sperrflussberechnung Z Lemma (Laufzeit der Sperrflussberechnung) Ein Sperrfluss kann in Zeit O(m + n2 ) berechnet werden. Beweis: Nach spätestens n − 1 Propagationsphasen ist in dem Niveaunetzwerk ein Sperrfluss bestimmt. Sei li die Anzahl der saturierten Kanten in der i-ten Propagationsphase (1 6 i 6 n − 1). Laufzeit damit: n−1 X O(n + li ) = O(n2 + i=1 n−1 X i=1 Theorem (Laufzeit von Dinitz Algorithmus) Der Algorithmus von Dinitz hat Laufzeit O(n3 ). li ) = O(n2 + m) s Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse (2:25) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Das Flussproblem mit Mindestfluss Definition (Flussproblem mit Mindestfluss) Eingabe: G = (V , E , s, t, c, c 0 ) mit: (V , E ) ist ein gerichteter Graph (n = |V |, m = |E |) s, t ∈ V mit s 6= t c : E 7→ N+ c 0 : E 7→ N+ Ausgabe: f : E 7→ R+ 0 mit: ∀e : c 0 (e) 6 f (e) P 6 c(e) P ∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a)) Ziel: Bestimme, P ob es so einen Fluss gibt. Falls ja, dann maximiere w (f ) = (s,v )∈E f ((s, v )). Z i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse Mit Kostenfunktion (2:26) <> Walter Unger 17.1.2015 17:56 Lösbarkeit Es muss nicht immer eine Lösung geben. Hier ein einfaches Beispiel: s 4 6∈ [2, 3] 1 a 4 ∈ [4, 6] 1 t SS2014 Z i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse Mit Kostenfunktion (2:27) <> Walter Unger 17.1.2015 17:56 b b SS2014 6o Idee 6u s0 [u, o] x 6o s a t a 6∞ 6∞ s y 6o−u t 6u t0 Z i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse Mit Kostenfunktion (2:28) <> Walter Unger 17.1.2015 17:56 SS2014 Verfahren b Setze c 00 (t, t 0 ) = c 00 (s 0 , s) = P e∈E c(e). 6o−u x 6o s y a t 6∞ für jede Kante (v , w ) erzeuge zwei neue Knoten x , y und setze: c 00 (v , x ) = c(v , w ) und c 00 (y , w ) = c(v , w ). c 00 (x , y ) = c(v , w ) − c 0 (v , w ). c 00 (s 0 , y ) = c 0 (v , w ) und c 00 (x , t 0 ) = c 0 (v , w ). 6u s0 6∞ Ersetze jede Kante (v , w ) durch einen Weg der Länge 3: 6o Erzeuge aus G = (V , E , s, t, c, c 0 ) einen neuen Graphen G 0 = (V 0 , E 0 , s 0 , t 0 , c 00 ). Füge neue Quelle s 0 und neue Senke t 0 hinzu. Z 6u t0 i Dinitz mit Propagation Mit Mindestfluss (2:29) Spezielle Flüsse Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Aussage Z b Beachte: x und y sind neu eingefügte Knoten, also nicht s oder t. Beweis: Zeige: =⇒ Zeige: ⇐= 6o−u x a t 6∞ s y 6o 6u s0 6∞ Es gibt in G einen korrekten Fluss, der die Mindestflussbedingung erfüllt genau dann, wenn es in G 0 einen maximalen Fluss gibt, der alle Kanten der Form (s 0 , y ) und (x , t 0 ) saturiert. 6o Lemma 6u t0 i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse Mit Kostenfunktion 0 0 (2:30) <> Walter Unger 17.1.2015 17:56 Beispiel (warum (s , y ) und (x , t )) 6∈ [2, 3] a 6∈ [4, 6] c b s0 26 2 2 4 363 1 x 161 363 y 1 2 2 6 1 b 366 1 36 4 1 a 6 4 2 t0 x0 4 62 y0 466 4 c SS2014 Z i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse Mit Kostenfunktion (2:31) <> Walter Unger 17.1.2015 17:56 Zeige: =⇒ b 6o b 6u s0 [u, o] x 6u t0 6o s t 6∞ 6∞ s y 6o−u t a u 6 f (a, b) 6 o a 0 f (s , y ) = f (x , t 0 ) = u f (a, x ) = f (y , b) = f (a, b) f (x , y ) = f (a, b) − u SS2014 Z i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse (2:32) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Zeige: ⇐= 6o s 6o−u y x 6o Dann definiert f (a, b) = f (a, x ) einen korrekten Fluss auf G. 6u s0 a t 6∞ Dann gilt: f (a, x ) = f (y , b) für jede ursprüngliche Kante (a, b). b 6∞ Zeige: Wenn es in G 0 einen maximalen Fluss gibt, der alle Kanten der Form (s 0 , y ) und (x , t 0 ) saturiert, dann gibt es in G einen korrekten Fluss, der die Mindestflussbedingung erfüllt. Z 6u t0 i Dinitz mit Propagation Mit Mindestfluss Spezielle Flüsse (2:33) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus Sei f (resp. f 0 ) der Fluss auf G (resp. G 0 ). Sei weiter f 00 der Fluss auf G ohne die untere Schranke c 0 . Dann gilt, wenn es eine Lösung für G 0 gibt: f = f 00 , denn untere Schranken verringern den Fluss auf G nicht mehr. P f 0 = f + e∈E (G) c 0 (e) Damit haben wir folgendes Verfahren: 1 2 3 4 Bestimme aus G: G 0 , G 00 , f , f 0 , f 00 . Bevorzuge auf P G 0 die Kanten der Form (s 0 , y ) und (x , t 0 ). 0 Falls f < f + e∈E (G) c 0 (e) gilt, so gibt es keine Lösung. Ansonsten bestimme f aus f 0 , d.h. f (a, b) = f (a, x ). Z i Dinitz mit Propagation Mit Alternativen Spezielle Flüsse (2:34) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Das Flussproblem mit Alternativen Definition (Flussproblem) Eingabe: G = (V , E , s, t, c, c 0 ) mit: (V , E ) ist ein gerichteter Graph (n = |V |, m = |E |) s, t ∈ V mit s 6= t c : E 7→ N+ c 0 : E 7→ N+ Ausgabe: f : E 7→ R+ 0 mit: ∀e : c 0 (e) 6 f (e) P 6 c(e) oder f (e) = 0. P ∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a)) Ziel: Bestimme, ob es so einenP nicht trivialen Fluss gibt. Falls ja, dann maximiere w (f ) = (s,v )∈E f ((s, v )). Z n Dinitz mit Propagation Mit Alternativen (2:35) Spezielle Flüsse Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Reduktion Theorem Zu einem gegeben Flussproblem G = (V , E , s, t, c, c 0 ) ist es NP-vollständig zu bestimmen, ob es so einen nicht trivialen Fluss gibt. Beweis: Übung, b.z.w. Reduktion auf Exact-3-SAT. Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse (2:36) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Exact-3-SAT Definition Eine Boolesche Formel F ist in Exact-3-KNF: F(x1 , x2 , ..., xr ) = Vk (Klauseln) = (li1 ∨ li2 ∨ li3 ) (Literale) ci lij i=1 = ci ¬xl xl oder für ein l : 1 6 l 6 r ∀16i 6k ∀ 1 6 i 6 k und ∀16j63 Eine Belegung ist eine Funktion W : {x1 , x2 , ..., xr } 7→ {0, 1}. Theorem (Exakt-3-SAT) Es ist NP-vollständig, festzustellen, ob es für F aus Exact-3-KNF eine erfüllende Belegung gibt, bei der in jeder Klausel genau ein Literal “true” ist. Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse Mit Kostenfunktion (2:37) <> Walter Unger 17.1.2015 17:56 Erste Variable x0 [2, 2] a1 [2, 2] a2 a3l b2 b3l [2 ,2 ] a0 s [2, 2] x0 ] ,2 [2 b0 [2, 2] b1 [2, 2] SS2014 Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse Mit Kostenfunktion (2:38) <> Walter Unger 17.1.2015 17:56 SS2014 Zweite Variable x1 [2, 2] a1 [2, 2] a2 al [2, [2 ,2 ] a0 s [2, 2] x0 [2 ,2 2 [2, ] b0 [2, 2] b1 [2, 2] b2 bl 2 [2, 2] ] x1 ] [ 2, c0 [2, 2] c1 2] d0 [2, 2] d1 Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse Mit Kostenfunktion (2:39) <> Walter Unger 17.1.2015 17:56 Erste zwei Klauseln k0 und k1 a1 ,2 ,2 a3 ] [2 ,2 [2 [2, 2] [2 ] ,2 [ 2, 2] 2] [2, yl [2 xl a2 ] [2, 2] ] a0 k0 [2, 2] [2 ,2 b0 [2, 2] b1 [2, 2] ] ,2 [2 ] c0 [2, 2] c1 k1 [2, 2] b2 [2, 2] b3 [2 ,2 ] [2, 2] ] ,2 [2 c2 [2, 2] c3 k2 SS2014 Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse Mit Kostenfunktion (2:40) <> Walter Unger 17.1.2015 17:56 SS2014 Anpassung: Variable xl in Klausel ki b0 1 1 ∈ [1, 1] xn ki [ 1 2 ∈ [2, 2] b1 1 2] 1 ∈ [1, 1] 1 −2 [2 ,2 ] 2 ∈ [2, 2] 2 2 ∈ [2 2 d0 e0 [2, 2] −2 [2, 2] a2 al b2 bl 2 [2, 2] −2 ] 2 ∈ [2, xl+1 2 c1 2 [2, 2] −2 y 1 2 ∈ 1 ∈ [1, 1] [2, 2] a1 1 c0 2, −2 1 ∈ [1, 1] 1 ∈ [1, 1] x [2, 2] 1 xl a0 1 ∈ [1, 1] s [2, 2] 2 ∈−2 [2, 2] 2 d1 e1 ,2 [2, 2] −2 ] ,2 [2 ] ki+1 t Z n Dinitz mit Propagation Mit Alternativen Spezielle Flüsse (2:41) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Konstruktion 1 Für jede Variable konstruiere einen Baustein, wie oben. Der obere Zweig entspricht der Variablen selber. Der untere Zweig entspricht der negierten Variablen. 2 Für jede Klausel konstruiere einen Baustein, wie oben. Der erste Zweig entspricht dem ersten Literal in der Klausel. Die weiteren Zweige dem zweiten und dem dritten Literal in der Klausel. 3 Hänge alle Bausteine für die Variablen und Klauseln hintereinander. 4 Für jedes Auftreten eines Literals in einer Klausel mache die obige Anpassung. 5 Falls es eine Belegung der Variablen gibt, die die Formel erfüllt, dann: geht ein Fluss von 2 durch jeweils den Zweig, der der Belegung der Variablen entspricht. Z n Dinitz mit Propagation Einleitung Spezielle Flüsse (2:42) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Motivation Benutzung der Kanten (Transportwege) im allgemeinen nicht umsonst. Daher sollten wir die Kosten minimieren. Kosten sind minimal, wenn der Fluss Null ist. Daher suchen wir: Kostenminimalen Fluss mit Wert W . Wichtig: G sollte keine Kreise mit negativen Kosten (Gewichtssumme) enthalten. Z g Dinitz mit Propagation Einleitung Spezielle Flüsse Mit Kostenfunktion (2:43) <> Walter Unger 17.1.2015 17:56 SS2014 Das Flussproblem mit Kosten Definition (Min-Cost-Flow-Problem) Eingabe: G = (V , E , s, t, c, l), W mit: (V , E ) ist ein gerichteter Graph (n = |V |, m = |E |) s, t ∈ V mit s 6= t c : E 7→ N+ l : E 7→ Z und W ∈ N Ausgabe: f : E 7→ R+ 0 mit: ∀e : f (e) 6 c(e). P P ∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a)) Ziel: Bestimme Fluss f P w (f ) = W und minimalen l(f ) = e∈E f (e) · l(e). D.h. l(f ) = min{l(g) | g ist Fluss mit w (g) = W }. Z g Dinitz mit Propagation Einleitung Spezielle Flüsse (2:44) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Beobachtungen Falls W = 1, so entspricht das dem kürzesten Wege Problem. Falls l(e) = 0 für alle e ∈ E , dann können die obigen Algorithmen leicht zur Lösung des Problems adaptiert werden: 1 2 3 Falls erstmalig w (f ) > W gilt, dann breche ab. Sei p der Wert der letzten Erweiterung. Ersetze den letzten Fluss durch eine Fluss mit dem Wert p − (w (f ) − W ). Alternativ kann auch wie folgt vorgegangen werden: 1 2 3 Erzeuge neue Quelle s 0 . Füge Kante e 0 = (s 0 , s) mit c(e 0 ) = W hinzu. Damit wird der maximale Fluss durche W begrenzt. Z g Dinitz mit Propagation Einleitung Spezielle Flüsse (2:46) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 Idee (am Beispiel) Kantenbeschriftung: Fluss6MaxFluss:Kosten→Aktuelle Kosten Bestimme erst einen Fluss (mit Wert W = 6). Der Fluss muss nicht kostenoptimal sein. Verbessere die Kosten. →2 5; 2 16 s 6 6 6; 3 → 18 a c 56 6; 2 →1 0 16 6; 1 →1 5 →4 5; 9 56 t b s 6 6 6; 3 → 18 →2 5; 2 16 8 ; 4 a c 56 6; 2 →1 0 −4 16 6; 1 →1 4; 4 5 →4 5; 9 56 4 − b t SS2014 Z g Dinitz mit Propagation Einleitung Spezielle Flüsse Mit Kostenfunktion (2:47) <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel (W = 5) 4 6 5; 3 → 12 2; 6 1 1 1 2; 1→ 9 6 5; −2 1; → 5; 4 2; 8 1; b 46 8 6 3; −2 16 6 5; 4 −2 a 6 s 16 c 6 5; 4 −2 d 5 6 5; 3 → 15 2; 6 t Z g Dinitz mit Propagation Idee Spezielle Flüsse Mit Kostenfunktion (2:48) <> Walter Unger 17.1.2015 17:56 Idee SS2014 Z Bestimme einen beliebigen Fluss f mit w (f ) = W . Verbessere schrittweise die Kosten des Flusses: Annahme: es gibt Fluss f 0 mit l(f 0 ) < l(f ) und w (f 0 ) = w (f ). Dann gibt es einen Unterschied zwischen f und f 0 . Betrachte diesen Unterschied. Das muss ein zyklischer Fluss sein, d.h. ein Fluss ohne Quelle und Senke. Für f 0 und f gilt die Flusserhaltung. 0 Und fout (s) = fout (s) = fin (t) = fin0 (t). Damit gilt: Falls f (a, b) 6= f 0 (a, b), dann gibt es c ∈ V \ {a, b} mit: f (a, c) 6= f 0 (a, c). Damit gibt es mindestens einen Kreis mit Fluss g über Kanten e mit f (e) 6= f 0 (e). Dieser zyklische Fluss besteht aus einer Summe von Kreisen. Einer dieser Kreise muss die Kosten für f 0 verbessern. Idee: suche diese verbessernden Kreise. g Dinitz mit Propagation Idee Spezielle Flüsse Mit Kostenfunktion (2:49) <> Walter Unger 17.1.2015 17:56 Beispiel mit Kreisen (W = 5) 6 5; 4 −2 d 1 9 6 5; −2 c 6 →1 5; 4 2; 8 8 6 3; −2 1; 1; 1 → 1 1 b 46 16 6 5; 4 −2 a 2; 4 6 5; 3 → 12 2; 6 6 s 5 6 5; 3 → 15 2; 6 t SS2014 Z g Dinitz mit Propagation Idee Spezielle Flüsse (2:50) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Frage: Warum eine Suche nach Kreisen? Ein verbessernder Kreis entspricht zwei Wegen: Ein Weg, der gelöscht wird, Ein Weg, der hinzugefügt wird. Die Differenz der Wege ist der Kreis. Man könnte also auch nach Wegen suchen. Vorteil bei Kreisen: Gewinn entspricht direkt den Kosten des Kreises. Einfachere Algorithmen bei sich ändernden Kosten. Optimale Lösung bekannt. “Anbieter” verändert die Kosten einer Kante. Passe bisherige Lösung durch das Suchen von Kreisen an. Die folgenden Beweise werden dadurch einfacher. Z g Dinitz mit Propagation Idee Spezielle Flüsse (2:51) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Definitionen Gegeben G = (V , E , s, t, c, l) und Restnetzwerk Gf = (V 0 , E 0 , s, t, c 0 , l 0 ). c 0 (e) = c(e) für e ∈ E ∩ E 0 c 0 (a, b) = c(b, a) und l 0 (a, b) = −l(b, a) für (a, b) ∈ E 0 \ E 0 f 0 ist eine Zirkulation, gdw.: ∀v ∈ V : fin0 (v ) = fout (v ). Wert einer Zirkulation f 0 über Schnitt (S, T ): f 0 (S, T ) = X f 0 (v , w ) − (v ,w )∈E ,v ∈S,w ∈T 0 X (w ,v )∈E ,v ∈S,w ∈T 0 w (f ) = f ({s}, V \ {s}). Lemma Es gilt: w (f 0 ) = 0 und für jeden Schnitt (S, T ) gilt: f 0 (S, T ) = 0. Beweis: Flusserhaltung und Induktion über Größe von S. f 0 (w , v ). Z g Dinitz mit Propagation Idee Spezielle Flüsse Mit Kostenfunktion (2:52) <> Walter Unger 17.1.2015 17:56 Zirkulation und Kostenminimalität SS2014 Z Lemma Falls f nicht kostenminimal ist, dann gibt es einen Kreis C in Gf und f hat auf C negative Kosten. Beweis: Sei f ∗ Fluss auf G mit l(f ∗ ) < l(f ). Damit unterscheiden sich f ∗ und f . Für alle e ∈ E setze f 0 (e) = f ∗ (e) − f (e). f 0 ist dann zyklischer Fluss. f 0 wird durch höchstens m0 6 2m viele Kreisflüsse fi 0 (1 6 i 6 m0 ) gebildet. Damit gilt: l(f 0 ) = l(f ∗ ) − l(f ) = Damit existiert j mit l(fj0 ) < 0. P 16i6m0 l(fi 0 ) i Dinitz mit Propagation Algorithmus Spezielle Flüsse (2:53) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus (Min-Cost-Flow) Theorem Ein Fluss f ist kostenminimal, wenn Gf keinen Kreis mit negativen Kosten enthält. 2 Eingabe: G = (V , E , s, t, c, l), W . Bestimme Fluss f 0 mit w (f 0 ) = W . 3 Solange es in Gf einen negativen Kreis C gibt: 1 1 f = f + f 0 (C ). Es gilt: w (f + f 0 (C )) = w (f ) + w (f 0 (C )) = w (f ) = W . D.h. der Wert des Flusses bleibt gleich. Es gilt: l(f + f 0 (C )) = l(f ) + l(f 0 (C )) < l(f ). D.h. die Kosten verringern sich. Theorem Der obige Algorithmus bestimmt einen kostenminimalen Fluss. Z i Dinitz mit Propagation Algorithmus Spezielle Flüsse Mit Kostenfunktion (2:55) <> Walter Unger 17.1.2015 17:56 Beispiel zur Laufzeit (W = 100) Bei schlecht gewählten Kreisen kann die Laufzeit sehr lang werden. b s 100 61 00 ; 00; 6 1; 4 6 61 ; 1 100 8→ 00; 1 06 800 10 a 1 8→ 800 t SS2014 Z i Dinitz mit Propagation Algorithmus Spezielle Flüsse Mit Kostenfunktion (2:56) <> Walter Unger 17.1.2015 17:56 Beispiel zur Laufzeit (W = 100) b s 100 61 00; 8→ 16 1 6 1; 4 → 4 1 00; 1 6 800 00; 1 96 9 a 100 ; 1→ 8→ 1 792 t SS2014 Z i Dinitz mit Propagation Algorithmus Spezielle Flüsse Mit Kostenfunktion (2:57) <> Walter Unger 17.1.2015 17:56 Beispiel zur Laufzeit (W = 100) s 99 6 100 ; 8 → 1 b 16 100 ; 6 1; 4 16 ; 100 1→ 00; 1 96 792 9 a 1→ 8→ 1 792 t SS2014 Z i Dinitz mit Propagation Algorithmus Spezielle Flüsse Mit Kostenfunktion (2:59) <> Walter Unger 17.1.2015 17:56 Nochmal Beispiel zur Laufzeit (W = 100) Bei gut gewählten Kreisen kann die Laufzeit ggf. besser sein. b s 61 100 00; ; 8 8 00 6 1; 4 6 61 ; 1 100 a 00; 1 t 8 00; 1 6 00 ; 8 100 SS2014 Z i Dinitz mit Propagation Algorithmus Spezielle Flüsse Mit Kostenfunktion (2:60) <> Walter Unger 17.1.2015 17:56 Nochmal Beispiel zur Laufzeit (W = 100) b 61 00 ; s 100 6 1; 4 1 00; 1 6 61 00; 8→ 6 100 800 a 100 ; 1 8→ 800 t SS2014 Z i Dinitz mit Propagation Spezielle Flüsse Verbesserung der Laufzeit Mit Kostenfunktion (2:61) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit und Verbesserung selbiger Der bisherige Algorithmus hat in obiger Form eine pseudopolynomielle Laufzeit. Dies kann aber verbessert werden: Wähle kostengünstige Kreise. Wähle Kreise über kostengünstige Kanten. Also unabhängig von der Kreislänge. Dazu werden die Kreise gewählt, die die durchschnittlichen Kantenkosten minimieren. Setze: l(C ) l̄(C ) = = |C | P e∈C l(e) |C | Setze weiter: µ(f ) = −l̄(C ). Falls C negative Kosten hat, so ist µ(C ) positiv. Z i Dinitz mit Propagation Spezielle Flüsse Verbesserung der Laufzeit (2:62) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Mean-Algorithmus (Min-Cost-Flow) P l̄(C ) = 1 Eingabe: G = (V , E , s, t, c, l), W . 2 Bestimme Fluss f mit w (f ) = W . 3 Solange es in Gf einen negativen Kreis C gibt, 1 Wähle C mit l̄(C ) minimal. 0 1 Bestimme maximalen zyklischen Fluss f auf C . 0 2 f = f + f (C ). Es gilt: w (f + f 0 (C )) = w (f ) + w (f 0 (C )) = w (f ) = W . Es gilt: l(f + f 0 (C )) = l(f ) + l(f 0 (C )) < l(f ). l(C ) |C | = e∈C |C | i l(e) µ(f ) = −l̄(C ) Dinitz mit Propagation Spezielle Flüsse Verbesserung der Laufzeit (2:63) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Überblick zum Beweis P l̄(C ) = Teile Iterationen in Phasen auf. l(C ) |C | = l(e) µ(f ) = −l̄(C ) 1 − x 6 e −x , x = 1/n Bestimme die Anzahl der Phasen. Bestimme die Anzahl der Iterationen pro Phase. Zeige dies unter Verwendung einer besonderen Annahme. Verändere l so, dass Annahme immer gilt und Algorithmus analog vorgeht. Bestimme dazu Potential der Knoten, und addiere dies zu den Kantenkosten. Bestimme Laufzeit für eine Iteration. Zeige, wie man einfach einen Min-Mean-Kreis C findet (Dynamisches Programmieren). Bestimme dazu vorab den Wert von C . Dann wird Suche nach C einfach (passe Kosten an). e∈C |C | i Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Z Mit Kostenfunktion (2:64) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit (Aufteilung in Phasen) P l̄(C ) = Die Phase i endet, falls ein Fluss g gefunden wird mit: µ(g) 6 (1 − 1/n) · µ(f ) oder µ(g) 6 0. Falls µ(g) 6 0 terminiert der Algorithmus. Sei µ0 der Wert von µ zu Beginn der ersten Phase. Sei µi der Wert von µ am Ende der i-ten Phase (1 6 i 6 T ). µi 6 (1 − 1/n) · µi−1 6 Weiter gilt: µ0 6 L = P e∈E µi−1 . e 1/n |l(e)| Wegen der Ganzzahligkeit gilt: µT −1 > 1/n. Es folgt: T − 1 6 loge 1/n (nL) = Und: T 6 n ln(nL) + 1. = e∈C |C | l(e) µ(f ) = −l̄(C ) 1 − x 6 e −x , x = 1/n Sei f der Fluss zu Beginn der i-ten Phase. Damit gilt: l(C ) |C | i ln(nL) = n ln(nL) ln(e 1/n ) Dinitz mit Propagation Spezielle Flüsse Verbesserung der Laufzeit (2:65) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit (Iterationen pro Phase) P l̄(C ) = Zeige im Folgenden: l(C ) |C | = e∈C |C | i l(e) µ(f ) = −l̄(C ) Die Phase (und der Algorithmus) terminiert nach spätestens m Iterationen, oder Die nächste Phase startet nach spätestens m − 1 Iterationen. D.h. war der initiale Fluss f zu Beginn der Phase, dann ist ein Fluss g nach spätestens m − 1 Iterationen erreicht mit: µ(g) 6 (1 − 1/n) · µ(f ). Vorgehen: Zeige Behauptung unter der Annahme: ∀e ∈ E (Gf ) : l(e) > −µ(f ). Zeige Behauptung: Verändere dann l, so dass die Annahme immer gilt. Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:66) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit (Iterationen pro Phase) P l̄(C ) = l(C ) |C | = e∈C |C | i l(e) µ(f ) = −l̄(C ) Typ 1 Iteration: Kreis C enthält nur Kanten mit negativen ∀e Kosten. ∈ E (Gf ) : l(e) > −µ(f ) Typ 2 Iteration: Kreis C enthält mindestens eine Kante mit positiven Kosten. Bei jeder Typ 1 Iteration wird mindestens eine Kante saturiert und entfernt. Alle dabei neu entstehenden Kanten haben positive Kosten (andere Richtung). Nach spätestens m konsekutiven Typ 1 Iterationen terminiert das Verfahren. Wenn also die Phase mehr als m Iterationen hat, folgt nach spätestens m − 1 Iterationen eine Typ 2 Iteration. Wir zeigen nun, dass dieser Fall unter der Annahme nicht auftritt. Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Z Mit Kostenfunktion (2:67) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit mit Annahmen (Iterationen pro Phase) P l̄(C ) = l(C ) |C | = e∈C |C | i l(e) µ(f ) = −l̄(C ) Sei g der Fluss vor der ersten Typ 2 Iteration. ∀e ∈ E (Gf ) : l(e) > −µ(f ) Die Annahme gilt weiter (keine neuen Kanten mit negativen Kosten): ∀e ∈ E (Gg ) : l(e) > −µ(f ) Sei C der Min-Mean-Kreis in Gg und H die Kanten mit negativen Kosten in C . Damit gilt: µ(g) = X −l(e) e∈C |C | 6 X −l(e) e∈H |C | 6 |H| · µ(f ) |C | Wegen |H| 6 |C | − 1 folgt: |H|/|C | 6 1 − 1/|C | 6 1 − 1/n Damit: µ(g) 6 (1 − 1/n) · µ(f ). Widerspruch: sind schon am Ende der Phase. Also gibt es in der Phase keine Typ 2 Iterationen. Falls die Annahme gilt, so endet die Phase nach m − 1 Typ 1 Iterationen. Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Z Mit Kostenfunktion (2:68) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit (Erzwinge die Annahme) P l̄(C ) = l(C ) |C | = e∈C |C | i l(e) µ(f ) = −l̄(C ) Wir sorgen dafür, dass die Annahme erfüllt werden Annahme: kann: ∀e ∈ E (Gf ) : l(e) > −µ(f ) Wir verändern l geeignet. Verhalten des Algorithmus sollte unverändert sein. Sei p : V 7→ Z ein Potential für die Knoten. Setze für alle e = (v , w ) ∈ E (Gf ) setze: l 0 (e) = l(e) + p(v ) − p(w ). Für e = (w , v ) gilt: l 0 (e) = l(e) + p(w ) − p(v ) −l(e) + p(w ) − p(v ) = −l 0 (e) Potentiale ändern die Kostensumme auf Kreisen C nicht: l(C ) = l 0 (C ). Potentiale ändern damit auch nicht den Ablauf des Verfahrens. Wir zeigen nun, dass es Potentiale gibt, die die Annahme erzwingen. Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:69) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit (Erzwinge die Annahme durch Potential) P l̄(C ) = l(C ) |C | = e∈C |C | , µ(f ) = −l̄(C ), Annahme: ∀e ∈ E (Gf ) : l(e) > −µ(f ) In Gf = (V , Ef ) gelte l̄(C ) > −µ für jeden Kreis C . Dann gibt es p : V 7→ Z mit: l 0 (e) = l(e) + p(w ) − p(v ) > −µ für jede Kante e ∈ Ef . Beweis: Für e ∈ Ef setze: lµ (e) = l(e) + µ Für v ∈ V bestimme Kantenzug P in Gf von beliebigen Knoten w zu v mit minimalen Gewicht. Setze dann p(v ) = lµ (P). Beachte: Das ist wohldefinert, denn aus l̄(C ) > −µ folgt lµ (C ) > 0 für beliebigen Kreis C . Damit gilt für jede Kante e = (v , w ) ∈ Ef : p(w ) 6 p(v ) + lµ (e). Es folgt: = = i l(e) Lemma (Existenz von p) l 0 (e) Z l(e) + p(v ) − p(w ) lµ (e) + p(v ) − p(w ) − µ > −µ Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:70) <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit pro Iteration P l̄(C ) = l(C ) |C | = e∈C |C | , µ(f ) = −l̄(C ), ∀e ∈ E (Gf ) : l(e) > −µ(f ) Ein Min-Mean-Cycle kann in Gf in Zeit O(nm) gefunden werden. Beweis: Setze für v ∈ V und k ∈ {0, . . . , n}: dk (v ) seien die Kosten des günstigsten Kantenzugs nach v mit genau k Kanten. Es gilt d0 (v ) = 0 und min e=(w ,v )∈Ef i l(e) Lemma (Karp, 1978) dk+1 (v ) = Z (dk (w ) + l(e)). Alle dk (v ) Werte können durch dynamische Programmierung in Zeit O(nm) bestimmt werden. Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Mit Kostenfunktion (2:71) <> Walter Unger 17.1.2015 17:56 SS2014 Wert dem Min-Mean-Kreises P l̄(C ) = l(C ) |C | = e∈C |C | , µ(f ) = −l̄(C ) Der Wert l̄(C ) des Min-Mean-Kreises ist: n−1 v ∈V j=0 dn (v ) − dj (v ) n−j Beweis: Sei C ein Min-Mean-Kreis. Wenn alle Kantenkosten um δ erhöht werden, bleibt C Min-Mean-Kreis. Der Wert von C erhöht sich auch um δ. Also können wir alle Kantenkosten um δ verschieben bis l̄(C ) = 0 gilt. Zeige nun: α = 0 gilt damit auch. i l(e) Lemma α = min max Z Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse Z Mit Kostenfunktion (2:72) <> Walter Unger 17.1.2015 17:56 SS2014 Wert dem Min-Mean-Kreises (Zeige α > 0) P l̄(C ) = Sei v beliebig und P Kantenzug, der bei v endet und Kosten dn (v ) hat. l(C ) |C | α = minv ∈V maxn−1 j=0 P muss Kreis C beinhalten. Sei P 0 der verbleibende Kantenzug mit j Kanten ohne C . Dann hat C n − j Kanten. Wegen l(C ) > 0 gilt: dn (v ) = l(P) = l(C ) + l(P 0 ) > l(P 0 ) > dj (v ). Für jeden Knoten v gibt es j ∈ {1, . . . , n − 1} mit dn (v ) > dj (v ). Damit α > 0. Im Folgenden zeigen wir nun noch α 6 0. = e∈C |C | i l(e) µ(f ) = −l̄(C) dn (v )−dj (v ) n−j Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:73) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Wert dem Min-Mean-Kreises (Zeige α 6 0) P l̄(C ) = l(C ) |C | = e∈C |C | i l(e) s µ(f ) = −l̄(C ) Zeige: Es gibt Knoten w mit: dn (w ) 6 dj (w ) für alle j ∈ {0, . . . , n − 1} α = minv ∈V maxn−1 j=0 s0 dn (v )−dj (v ) n−j Sei v Knoten des Min-Mean-Kreises C . w Sei P kürzester Kantenzug, der bei v endet. O.B.d.A. enthält P keinen Kreis. Sei p < n die Anzahl der Kanten in P q2 Sei w der Knoten, der auf C von v aus nach n − p Kanten liegt. Diesen Kantenzug nennen wir Q. q1 r1 r2 v Sei R der Weg von w zu v auf C mit r Kanten. Sei j ∈ {0, . . . , n − 1} und S ein Kantenzug minimaler Länge aus j Kanten, der an w endet. p0 p 00 Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:74) Z Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Wert dem Min-Mean-Kreises (Zeige α 6 0) P l̄(C ) = l(C ) |C | = e∈C |C | i l(e) s µ(f ) = −l̄(C ) Dann gilt: dn (w ) 6 l(P) + l(Q) = dp (v ) + l(Q). α = minv ∈V maxn−1 j=0 s0 und dn (v )−dj (v ) n−j w dp (v ) 6 dj+r (v ) 6 dj (w ) + l(R). q2 r1 es folgt: dn (w ) 6 dj (w ) + l(R) + l(Q). q1 Der Kantenzug Q R hat Kosten 0 (wegen l(C ) = 0). Damit gilt: dn (w ) 6 dj (w ). r2 v p0 p Dinitz mit Propagation Spezielle Flüsse Verbesserung der Laufzeit Mit Kostenfunktion (2:75) <> Walter Unger 17.1.2015 17:56 SS2014 Gesamtverfahren 1 Berechne die dk (v ) Werte und bestimme α. 2 Addiere zu allen Kantenkosten um α. Damit ist der Wert des Min-Mean-Kreises 0. 3 Transformiere die Kantenkosten um den Wert α wie in Lemma “Existenz von p” beschrieben. Die Potentiale ergeben sich aus den Werten dk (v ). Alle Kantenkosten sind nun nicht negativ. Die Kanten des Min-Mean-Cycle haben Wert 0. 4 Lösche alle Kanten mit Wert größer 0. 5 Suche mit Tiefensuche Kreis in den verbleibenden Kanten. Z i Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:76) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 Gesamtlaufzeit Theorem Der Mean-Cycle-Algorithmus hat eine Laufzeit von O(m2 · n2 · log(nL)). Beweis, siehe obige Überlegungen: n log(nL) + 1 Phasen (L Maximum der absoluten Kantenkosten). m Iterationen pro Phase. O(nm) Laufzeit pro Phase. Theorem Der Mean-Cycle-Algorithmus hat eine Laufzeit von O(m3 · n2 · log n). SS2014 Z i Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:77) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Literatur Ahuja, Magnanti, Orlin: Network Flows: Theory, Algorihms, and Applications, Prentice Hall, 1993. Cormen, Leiserson, Rives: Introduction to Algorithms, First Edition, MIT Press, 1990. Cormen, Leiserson, Rives: Introduction to Algorithms, Second Edition, MIT Press, 2001. Ottmann, Widmayer: Algorithmen und Datenstrukturen. BI-Wiss.-Verl. 1990. Z i Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:78) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Fragen(Flüsse) Was ist die Laufzeit der Ford-Fulkerson Methode? Wann hat die Ford-Fulkerson Methode die maximale Laufzeit? Warum liefert die Ford-Fulkerson Methode den maximalen Fluss? Was ist die Laufzeit der Ford-Fulkerson Methode mit Breitensuche? Wie ist die Idee des Min-Cut-Max-Flow Theorems? Wie wird der Schnitt zu dem maximalen Fluss gefunden? Was ist die Idee des Algorithmus von Dinitz? Wie funktioniert die Forward-Propagation? Wie ist die Laufzeit vom Algorithmus von Dinitz? Wie ist die Begründung zur Laufzeit vom Algorithmus von Dinitz? Z x Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:79) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 SS2014 Fragen(Flüsse) Wie bestimmt man Flüsse mit einem Mindestfluss auf den Kanten? Wie bestimmt man Flüsse mit einem Mindestfluss auf den Kanten, wo aber auch ein leerer Fluss erlaubt ist? Wie ist die Idee der Algorithmen zu kostenminimalen Flüssen? Was ist die Laufzeit der Algorithmen zu kostenminimalen Flüssen? Gebe die Idee zum Beweis der Laufzeit der Algorithmen zu kostenminimalen Flüssen? Z x Dinitz mit Propagation Verbesserung der Laufzeit Spezielle Flüsse (2:80) Mit Kostenfunktion <> Walter Unger 17.1.2015 17:56 Legende n : Nicht relevant g : Grundlagen, die implizit genutzt werden i : Idee des Beweises oder des Vorgehens s : Struktur des Beweises oder des Vorgehens w : Vollständiges Wissen SS2014 Z x