Überich aenrukuren und lgorihmen Vorleung 18: (K26) Joo-Pieer Kaoen Lehruhl für Informaik 2 Sofware Modeling and Verificaion Group hp://move.rwh-aachen.de/eaching/-15/dal/ 25. Juni 2015 1 Flunezwerke 2 Renezwerke lgorihmu Schnie 3 nwendungen und Erweierungen Edmond-Karp-lgorihmu lernaive lgorihmen Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ Joo-Pieer Kaoen aenrukuren und lgorihmen 2/ Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe Joo-Pieer Kaoen aenrukuren und lgorihmen 3/ Joo-Pieer Kaoen aenrukuren und lgorihmen /
Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe Joo-Pieer Kaoen aenrukuren und lgorihmen 5/ Joo-Pieer Kaoen aenrukuren und lgorihmen 6/ Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe Joo-Pieer Kaoen aenrukuren und lgorihmen / Joo-Pieer Kaoen aenrukuren und lgorihmen 8/
Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe Joo-Pieer Kaoen aenrukuren und lgorihmen 9/ Joo-Pieer Kaoen aenrukuren und lgorihmen 10/ Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe Joo-Pieer Kaoen aenrukuren und lgorihmen 11/ Joo-Pieer Kaoen aenrukuren und lgorihmen 12/
Graphenproblem: maximale Flüe Graphenproblem: maximale Flüe eipiel (maximale Flüe) Eingabe: 1. Eine Sraßenkare, auf der die Kapaziä der Sraßen eingezeichne i, 2. eine Quelle, und 3. eine Senke. ugabe: ie maximale Rae, mi der Maerial (= Zuchauer) von der Quelle bi zur Senke (= Sadion) ranporier werden kann, ohne die Kapaziäbechränkungen der Sraßen zu verlezen. Joo-Pieer Kaoen aenrukuren und lgorihmen 13/ Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ Flunezwerke Flunezwerke Überich Flunezwerk 1 Flunezwerke 2 Renezwerke lgorihmu Schnie Flunezwerk Ein Flunezwerk G = (V, E, c) i ein digraph (V, E) mi c : V V IR 0 die Kapaziäfunkion odaß: (u, v) E dann c(u, v) 0 (u, v) E dann c(u, v) = 0, V, die Quelle und Senke de Flunezwerke Jeder Knoen v V lieg auf einem Pfad von Quelle zur Senke 3 nwendungen und Erweierungen Edmond-Karp-lgorihmu lernaive lgorihmen n der Quelle wird produzier n der Senke wird verbrauch Kanen ind wie Waerrohre Kapaziä = maximale urchazrae Joo-Pieer Kaoen aenrukuren und lgorihmen 15/ Joo-Pieer Kaoen aenrukuren und lgorihmen 16/
Flu in einem Flunezwerk Flunezwerke Wer eine Flue Flunezwerke efiniion (Flu) Ein Flu i eine Funkion f : V V IR, mi folgenden Eigenchafen: echränkung: Für u, v V gil f (u, v) c(u, v). ymmerie: Für u, v V gil f (u, v) = f (v, u). Fluerhalung: Für u V \ {, } gil: f (u, v) = 0. v V f (u, v) i der Flu vom Knoen u zum Knoen v. efiniion (Wer eine Flue) er Wer f de Flue f i der Geamflu au der Quelle : f = f (, v). v V er Flu zwichen zwei Knoen darf die Kapaziäbechränkung nich überchreien er Flu von u nach v i der negaive Wer de Flue von v nach u Geame poiive Flu in einen Knoen = geame poiive Flu au dem Knoen (wie im Kirchhoffchen Knoenregel für Srom) Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ Joo-Pieer Kaoen aenrukuren und lgorihmen 18/ Flunezwerke Flunezwerke arellung von Flüen 2/12 Maximale Flüe Ein maximaler Flu i einen Flu mi maximalem Wer. 5/16 3/10 9 6/ 8/20 Problem () Finde einen maximalen Flu in einem gegebenen Flunezwerk G. /13 1/ /1 11/16 15/20 /9 1/ 10 / 8/13 / Joo-Pieer Kaoen aenrukuren und lgorihmen 19/ 11/1 eipiel (nwendungen) Wie groß i der maximale aendurchaz zwichen zwei ompuern in einem Nezwerk? Wie kann der Verkehr in einem Sraßennez o geleie werden, da möglich viele uo in einer gegeben Zeipanne ein Ziel erreichen? Wie viele Leiungen müen zerör ein, dami zwei ompuer nich mehr mieinander kommunizieren können? Wie ark ind zwei Gruppen von Facebook-Nuzer mieinander vernez? Joo-Pieer Kaoen aenrukuren und lgorihmen 20/
Ein maximaler Flu Flunezwerke Mehrere Quellen und Senken Flunezwerke 1/16 1/9 2/10 / 20/20 10 5 3 3 3 6 10 5 2 2 10/13 11/1 / 3 6 10 5 1 1 Ein maximaler Flu in dieem eipiel ha den Wer f = 2. E kann mehrere maximale Flüe geben. E kann auch Flunezwerke mi mehrere Quellen oder Senken geben. Sie können durch eine neue Superquelle und Superenke in ein übliche Flunezwerk überführ werden. Joo-Pieer Kaoen aenrukuren und lgorihmen 21/ Joo-Pieer Kaoen aenrukuren und lgorihmen 22/ Flunezwerke Flüe zwichen Knoenmengen Noaionen f (x, Y ) = f (x, y) für Y V y Y f (X, y) = f (x, y) für X V x X f (X, Y ) = f (x, y) für X, Y V x X y Y Eigenchafen von Flüen zwichen Mengen Für jeden Flu f de Flunezwerke G = (V, E, c) gil: 1. f (X, X) = 0 für X V 2. f (X, Y ) = f (Y, X) für X, Y V 3. f (X Y, Z) = f (X, Z) + f (Y, Z) für X, Y, Z V : X Y =. f (Z, X Y ) = f (Z, X) + f (Z, Y ) für X, Y, Z V : X Y = Joo-Pieer Kaoen aenrukuren und lgorihmen 23/ ewei: f (X, X) = 0 f (X, X) = = 1 2 f (x 1, x 2 ) Flunezwerke = 1 ( f (x 1, x 2 ) + 2 = 1 ( f (x 1, x 2 ) + 2 ( ) f (x 1, x 2 ) + f (x 2, x 1 ) = 1 2 = 0. ( ) f (x 1, x 2 ) f (x 1, x 2 ) ) f (x 1, x 2 ) ) f (x 2, x 1 ) Für den ewei benöigen wir lediglich die Eigenchaf der ymmerie. Joo-Pieer Kaoen aenrukuren und lgorihmen 2/
Flunezwerke Eingehender Flu in der Senke Wie groß i der an der Senke eingehende Flu? ufgrund der Fluerhalung in alle Zwichenknoen i zu erwaren, da er dem aureenden Flu an der Quelle enprich: ewei: f = f (, V ) = f (V, ) f (, V ) = f (V, V ) f (V {}, V ) Eigenchaf 3 = f (V {}, V ) Eigenchaf 1 = f (V, V {}) Eigenchaf 2 = f (V, ) + f (V, V {, }) Eigenchaf = f (V, ). Fluerhalung Überich 1 Flunezwerke 2 Renezwerke lgorihmu Schnie 3 nwendungen und Erweierungen Edmond-Karp-lgorihmu lernaive lgorihmen Joo-Pieer Kaoen aenrukuren und lgorihmen 25/ Joo-Pieer Kaoen aenrukuren und lgorihmen 26/ Idee (1962) Renezwerke 12/16 9 12/20 efiniion (Renezwerk G f ) Nezwerk minu Flu = Renezwerk 10 Sei Flunezwerk G = (V, E, c) und Flu f. ann i G f = (V, E f, c f ) da Renezwerk (auch: Reidualnezwerk) zu G und f mi: 13 c f (u, v) = c(u, v) f (u, v), 1 1. Suche einen Pfad p von nach. 2. Seze den Flu der Kanen in p um die kleine Kapaziä in p. 3. Suche einen Pfad p von nach, au Kanen mi freier Kapaziä.. Ergänze den Flu der Kanen in p um die kleine Rekapaziä in p. 5. Wiederhole 3. und. bi e keinen Pfad p mehr gib. Joo-Pieer Kaoen aenrukuren und lgorihmen 2/ und E f = { (u, v) V V c f (u, v) > 0 }, c f (u, v) i die Rekapaziä von (u, v) in G zu Flu f. E f ind die Kanen die noch mehr Flu aufnehmen können. Joo-Pieer Kaoen aenrukuren und lgorihmen 28/
Renezwerk: eipiel Renezwerk: eipiel efiniion (Renezwerk G f ) Sei Flunezwerk G = (V, E, c) und Flu f. ann i G f = (V, E f, c f ) da Renezwerk (auch: Reidualnezwerk) zu G und f mi: c f (u, v) = c(u, v) f (u, v) E f = { (u, v) V V c f (u, v) > 0 }. c f (u, v) i die Rekapaziä von (u, v) in G zu Flu f. efiniion (Renezwerk G f ) Sei Flunezwerk G = (V, E, c) und Flu f. ann i G f = (V, E f, c f ) da Renezwerk (auch: Reidualnezwerk) zu G und f mi: c f (u, v) = c(u, v) f (u, v) E f = { (u, v) V V c f (u, v) > 0 }. c f (u, v) i die Rekapaziä von (u, v) in G zu Flu f. 16/16 13 /10 /9 16/20 16/16 13 /10 /9 16/20 16 13 8 6 12 5 16 1 1 1 Flunezwerk G Renezwerk G f Joo-Pieer Kaoen aenrukuren und lgorihmen 29/ Flunezwerk G Renezwerk G f Joo-Pieer Kaoen aenrukuren und lgorihmen 29/ Renezwerk ugmenierende Pfade efiniion (Renezwerk G f ) Sei Flunezwerk G = (V, E, c) und Flu f. ann i G f = (V, E f, c f ) da Renezwerk (auch: Reidualnezwerk) zu G und f mi: c f (u, v) = c(u, v) f (u, v) E f = { (u, v) V V c f (u, v) > 0 }. c f (u, v) i die Rekapaziä von (u, v) in G zu Flu f. 16/16 13 /10 /9 1 16/20 16 13 8 6 12 5 1 16 Kanen im Renezwerk Flunezwerk G Renezwerk G f Fall f (u, v) < c(u, v), dann folg c f (u, v) > 0 und (u, v) E f Fall f (u, v) > 0, dann f (v, u) < 0, und dami c f (v, u) > 0 und (v, u) E f Fall weder (u, v) E noch (v, u) E, dann c f (u, v) = c f (v, u) = 0 lo E f 2 E. Ein --Pfad p in Renezwerk G f heiß augmenierender Pfad (vergrößernder Pfad). c f (p) = min{ c f (u, v) (u, v) p } heiß Rekapaziä von p. er Pfad im obigen eipiel ha die Rekapaziä. Joo-Pieer Kaoen aenrukuren und lgorihmen 30/ Joo-Pieer Kaoen aenrukuren und lgorihmen 31/
ugmenierende Pfade Ford-Fulkeron-Theorem 12 16/16 16/20 16 / /10 /5 16 8 6 /9 13 /13 1 1 Flunezwerk G Renezwerk G f Sei G ein Flunezwerk, f ein Flu in G, p ein augmenierender Pfad in G f. Sei: c f (p) fall (u, v) auf p f p (u, v) = c f (p) fall (v, u) auf p 0 on ann i f p ein Flu in Renezwerk G f mi dem Wer f p = c f (p) > 0. Joo-Pieer Kaoen aenrukuren und lgorihmen 31/ Idee: ergänze ein Flu f in G um den Flu f im Renezwerk G f. Sei f 1, f 2 : V V R zwei Flüe. ie Fluumme f 1 + f 2 i definier durch: (f 1 +f 2 )(u, v) = f 1 (u, v) + f 2 (u, v). Theorem (Ford-Fulkeron) Sei G = (V, E, c) ein Flunezwerk und f ein Flu in G, owie f ein Flu in G f. ann gil: f + f i ein Flu in G (mi dem Wer f + f ). ewei. Wir zeigen, da f + f bechränk, aymmerich und fluerhalend i (. näche Folie). Joo-Pieer Kaoen aenrukuren und lgorihmen 32/ 1. ymmerie: (f + f )(u, v) = f (u, v) + f (u, v) = f (v, u) f (v, u) = (f (v, u) + f (v, u)) = (f + f )(v, u) 2. Fluerhalung: ie lgorihmu Iniialiiere Flu f zu 0 while e gib einen augmenierenden Pfad p do augmeniere f enlang p // f := f + f p reurn f (f + f )(u, V ) = f (u, V ) + f (u, V ) = 0 u V {, } 3. echränkung: (f + f )(u, v) = f (u, v) + f (u, v) f (u, v) + c f (u, v) = f (u, v) + (c(u, v) f (u, v)) = c(u, v). /16 6+/13 /12 6+/20 10 3/ 6/9 / /1 Flunezwerk G 8 12 10 3 6 9 Renezwerk G f 13 Joo-Pieer Kaoen aenrukuren und lgorihmen 33/ Joo-Pieer Kaoen aenrukuren und lgorihmen 3/
Implemenierung 1 in[n,n] maxflow(li adjl[n], in n, in, in ) { 2 in flow[n,n] = 0, pah[]; 3 in cfp; // Rekapaziä de Pfade 5 while (rue) { 6 // Finde augmenierenden Pfad und deen Rekapaziä (pah, cfp) = augmenpfad(adjl, flow,, ); 8 if (cfp == 0) { // kein Pfad gefunden 9 reurn flow; 10 } 11 12 // addiere Rekapaziä enlang de Pfade zum Flu 13 for (in i = 1; i < pah.lengh; i++) { 1 in u = pah[i-1], v = pah[i]; 15 flow[u,v] = flow[u,v] + cfp; 16 flow[v,u] = -flow[u,v]; 1 } 18 } 19 } Joo-Pieer Kaoen aenrukuren und lgorihmen 35/ Laufzei der Ein Fluproblem i inegral, wenn alle Kapaziäen ganzzahlig ind. Zeikomplexiä Sei f der durch die beimme Flu zu einem inegralen Fluproblem, o benöig die Mehode f Ieraionen und e ergib ich eine Laufzei von O( E f ). ewei. In jeder Ieraion wird der Wer de Flue um c f (p) 1 erhöh. Er i anfang 0 und am Ende f. E gib maximal E Ieraionen. Korollar ei raionalen Kapaziäen erminier die Ford Fulkeron Mehode. rüche können durch Muliplikaion aufgehoben werden. Für ein inegrale Fluproblem beimm die einen Flu f, oda jede f (u, v) ganzzahlig i. Joo-Pieer Kaoen aenrukuren und lgorihmen 36/ Laufzei der Korrekhei Ford-Fulkeron Mehode 1/100 0/1 1/100 ie Ford-Fulkeron Mehode erweier ukzeive den Flu in G um augmenierende Pfade im Renezwerk G f bi e keine olche Pfade mehr gib. 1/100 1/100 I da korrek? Wir werden zeigen, da ein Flu in G genau dann maximal i, wenn ein Renezwerk keine augmenierende Pfade enhäl. ie Wor-ae-Laufzei i abhängig vom Wer eine maximalen Flue, da der Wer de Flue im chlimmen Fall ich jeweil nur um eine Einhei erhöh. azu benuzen wir Schnie. Joo-Pieer Kaoen aenrukuren und lgorihmen 3/ Joo-Pieer Kaoen aenrukuren und lgorihmen 38/
Schnie in Flunezwerken Schnie in Flunezwerken efiniion Ein Schni (S, T ) in einem Flunezwerk G = (V, E, c) i eine Pariion S T = V, S T = mi S und T. Wenn f ein Flu in G i, dann i f (S, T ) der Flu über (S, T ). 11/16 v 1 10 1/ /9 v 3 / 15/20 ie Kapaziä von (S, T ) i c(s, T ). Ein minimaler Schni i ein Schni mi minimaler Kapaziä. 8/13 v 2 11/1 v / 11/16 8/13 v 1 10 1/ /9 v 2 11/1 v 3 v 15/20 / / S : {, v 1, v 2 } {} {, v 1, v 2, v } T : {, v 3, v } {, v 1, v 2, v 3, v } {, v 3 } Flu : 12+11-19 11+8 19 12-++ 19 Kapaziä : 12+1 26 13+16 29 12++ 23 Für den Flu über einen Schni gil: f (S, T ) = f c(s, T ). Joo-Pieer Kaoen aenrukuren und lgorihmen 39/ Joo-Pieer Kaoen aenrukuren und lgorihmen 0/ Max-flow Min-cu Theorem Max-flow Min-cu Theorem Sei f ein Flu im Flunezwerk G = (V, E, c), dann ind äquivalen: 1. f i ein maximaler Flu. 2. In Renezwerk G f gib e keinen augmenierenden Pfad. 3. f = c(s, T ) für einen Schni (S, T ), d. h. (S, T ) i minimal. Folgerungen 1. ie Kapaziä eine minimalen Schnie i gleich dem Wer eine maximalen Flue. 2. Fall die Ford Fulkeron Mehode erminier, berechne ie einen maximalen Flu. Max-flow Min-cu Theorem Max-flow Min-cu Theorem Sei f ein Flu im Flunezwerk G = (V, E, c), dann ind äquivalen: 1. f i ein maximaler Flu. 2. In Renezwerk G f gib e keinen augmenierenden Pfad. 3. f = c(s, T ) für einen Schni (S, T ), d. h. (S, T ) i minimal. 1. 2. (Widerpruchbewei). Sei f ein maximaler Flu in G und p einen augmenierender Pfad in G f. f + f p i ein Flu in G mi f + f p > f. Widerpruch! enn f i ein maximaler Flu. Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ Joo-Pieer Kaoen aenrukuren und lgorihmen 1/
Max-flow Min-cu Theorem Max-flow Min-cu Theorem Sei f ein Flu im Flunezwerk G = (V, E, c), dann ind äquivalen: 1. f i ein maximaler Flu. 2. In Renezwerk G f gib e keinen augmenierenden Pfad. 3. f = c(s, T ) für einen Schni (S, T ), d. h. (S, T ) i minimal. Max-flow Min-cu Theorem Max-flow Min-cu Theorem Sei f ein Flu im Flunezwerk G = (V, E, c), dann ind äquivalen: 1. f i ein maximaler Flu. 2. In Renezwerk G f gib e keinen augmenierenden Pfad. 3. f = c(s, T ) für einen Schni (S, T ), d. h. (S, T ) i minimal. 2. 3. Nehme an, e gib keinen --Pfad (d.h. augmenierden Pfad) in G f. Sei S := { v V -v-pfad in G f } und T := V S, dann gil: 1. u S, v T gil: c f (u, v) = 0 f (u, v) = c(u, v). 2. (S, T ) i ein Schni und omi gil f (S, T ) = f. c(s, T ) = f (S, T ) = f. 3. 1. Sei f ein beliebiger Flu in G dann gil: f = f (S, T ) = f (u, v) c(u, v) = c(s, T ) u S v T u S v T a f = c(s, T ) und f : f c(s, T ), folg f i maximal. Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ Joo-Pieer Kaoen aenrukuren und lgorihmen 1/ nwendungen und Erweierungen nwendungen und Erweierungen Überich Edmond-Karp-lgorihmu Edmond-Karp-lgorihmu 1 Flunezwerke 2 Renezwerke lgorihmu Schnie 3 nwendungen und Erweierungen Edmond-Karp-lgorihmu lernaive lgorihmen Eine Implemenierung der, die zur eimmung augmenierender Pfade eine reienuche nuz. Laufzei: O( V E 2 ). Sie erweier e den Flu enlang kürzeer Pfade. Lemma Im Edmond-Karp-lgorihmu eig für alle Knoen v V {, } der band (d.h. nzahl der Kanen) de kürzeen Pfade von nach v im Renezwerk G f monoon mi jeder Fluerweierung. Theorem ie Geamzahl der Fluerweierungen im Edmond-Karp-lgorihmu für da Flunezwerk G = (V, E, c) i in O( V E ). Joo-Pieer Kaoen aenrukuren und lgorihmen 2/ Joo-Pieer Kaoen aenrukuren und lgorihmen 3/
ndere Max-Flow lgorihmen nwendungen und Erweierungen Joo-Pieer Kaoen aenrukuren und lgorihmen /