Anwendungen von Netzwerkfluss Wojciech Polcwiartek Institut für Informatik FU Berlin 13. 01. 2009 Gliederung • Einführung • Netzwerk, Fluss und Schnitt • Max-Flow-Min-Cut Theorem • Algorithmen zum Bestimmen vom maximalen Fluss • Ford – Fulkerson Algorithmus • Edmonds – Karp Algorithmus • Anwendungen • • • • • Bipartites Matching Zirkulation mit Anforderungen (mit unteren Schranken) Umfrageentwurf Bildsegmentierung Projektauswahl Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Einführung: Netzwerk • Ein Netzwerk N=(V, E, s, t, c) ist ... • ein gerichteter Graph ohne Mehrfachkanten s • mit zwei ausgezeichneten Knoten • Quelle s aus V • Senke t aus V c=1 c=3 c=1 c=2 t c=4 c=3 c=0 c=2 • mit einer Kapazitätsfunktion c, die jeder Kante e aus E eine nicht-negative, reellwertige Kapazität c(e) zuweist • Ein Restnetzwerk (Residualnetzwerk) vom N ist ein Netzwerk N'=(V, E, s, t, c'), in dem die Kapazitäten jeder Kante um den Fluss durch diese Kante vermindert wurden Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Einführung: s-t-Fluss • Ein s-t-Fluss ist eine Funktion f, die jeder Kante e im Netzwerk einen nicht-negativen, reellen s Flusswert f(e) zuweist • Bedingungen vom Fluss: • Kapazitätsbeschränkung c=1 f=0 c=3 f=1 c=1 f=0 c=2 f=0 t c=4 f=1 c=1 f=1 c=3 f=2 c=2 f=1 0 f ec e , ∀ e∈ E • Flusserhaltung ∑ f e− ∑ f e=0 einc v e ausv • Wert vom Fluss im Netzwerk • Verbesserungspfad ist ein Pfad (v[1], ..., v[k]), wobei • v[1] = s, v[k]=t • c(v[i],v[i+1]) – f(v[i], v[i+1]) > 0 Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Einführung: Schnitt • Ein Schnitt ist eine Menge von Kanten eines Graphen G = (V,E), die zwischen zwei Knotenmengen S und T liegt, wobei • • S ∪T =V S ∩T =∅ • Kapazität c(S, T) vom Schnitt (S,T) S c=1 c=3 s c=1 c=2 t c=4 c=3 c=0 c=2 Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss T Einführung: Max-Flow-Min-Cut • Der maximale Fluss im Netzwerk hat genau den Wert dessen minimalen Schnitts. • Die folgenden Aussagen sind äquivalent: • f ist der maximale Fluss in G • das Restnetzwerk G' enthält keinen Verbesserungspfad • |f| = c(S,T) gilt für irgendeinen Schnitt (S,T) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Gliederung • Einführung • Netzwerk, Fluss und Schnitt • Max-Flow-Min-Cut Theorem • Algorithmen zum Bestimmen vom maximalen Fluss • Ford – Fulkerson Algorithmus • Edmonds – Karp Algorithmus • Anwendungen • • • • • Bipartites Matching Zirkulation mit Anforderungen (mit unteren Schranken) Umfrageentwurf Bildsegmentierung Projektauswahl Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson • Erfinder • Lester Randolph Ford, Jr • beteiligt auch an Bellman-Ford Algorithmus • Delbert Ray Fulkerson • Idee: Solange es im Netzwerk einen Verbesserungspfad gibt, richte den Fluss durch diesen Pfad • Laufzeit: O( |E| * f' ) • f' ist der maximale Fluss im Graphen • Vorsicht: Algorithmus muss nicht terminieren • Uri Zwick: „The smallest networks on which the Ford-Fulkerson maximum flow procedure may fail to terminate“ Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (1/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (2/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (3/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (4/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (5/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (6/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (7/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (8/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Ford-Fulkerson (9/9) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Algorithmen: Edmonds-Karp • Erfinder • Yefim Dinitz (1970) (University of the Negev) • Jack Edmonds und Richard Karp (1972) (Univ. of California) • R. Karp bekannt auch wegen „Karp's 21 NP-C problems“ • Idee Funktioniert ähnlich zum Ford-Fulkerson Algorithmus. Der Verbesserungspfad wird aber mit Hilfe von Breitensuche ausgewählt, so dass die Länge der Verbesserungspfade steigt. • Laufzeit: O( |V| * |E|² ) • Beweis: siehe Cormen, Leierson, Rivest und Stein • O( |E| ) - Verbesserungspfad finden • Jedes Mal wird mind. eine Kante gesättigt • Laenge vom Pfad ist max. |V| Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Gliederung • Einführung • Netzwerk, Fluss und Schnitt • Max-Flow-Min-Cut Theorem • Algorithmen zum Bestimmen vom maximalen Fluss • Ford – Fulkerson Algorithmus • Edmonds – Karp Algorithmus • Anwendungen • • • • • Bipartites Matching Zirkulation mit Anforderungen (mit unteren Schranken) Umfrageentwurf Bildsegmentierung Projektauswahl Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bipartites Matching • Reales Problem: Paarung der Menschen • Bipartites Matching / Paarung / Unabhängige Kantenmenge • Eingabe: ungerichteter, bipatrtiter Graph G= L∪R , E • M ⊂E ist ein Matching, wenn zwei beliebige Kanten aus M mit verschiedenen Knoten inzident sind • Ziel: finde Paarung mit der höchsten Kardinalität Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bipartites Matching • Formulierung als Netzwerkflussproblem • Erstelle Graph G ' = L∪R∪{s , t} , E ' • Richte alle Kanten von L nach R und weise den unendliche Kapazität zu Füge Quelle s und Senke t hinzu • Füge Kanten mit einer Kapazität von 1 von der Quelle zu jedem der Knoten aus L • Füge Kanten mit einer Kapazität von 1 von jedem der Knoten aus R zu der Senke • Rechne den maximalen Fluss in G' aus G Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss G' Anwendungen: Bipartites Matching Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bipartites Matching Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Zirkulation mit Anforderungen • Reales Problem: Mehrere Datenquellen und Datensenken in einem Netzwerk • Eingabe • Gerichteter Graph G=(V,E) • Kantenkapazität c(e), für alle e aus E • Angebot/Anforderung d(v), für alle v aus V • Anforderung d(v) > 0 • Angebot d(v) < 0 • Gültige Zirkulation ist eine Funktion, die erfüllt auf solchen Graphen • Kapazitätbeschränkung 0 f ec e , ∀ e∈ E • Flusserhaltung ∑ f e− ∑ f e=d v einc v e ausv Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Zirkulation mit Anforderungen • Nötige Bedingung für eine gültige Zirkulation • d v =− ∑ d v =D ∑ v :d v0 v: d v0 • Formulierung als Netzwerkflussproblem • Erstelle Graph G ' =G∪{s , t }, E ' • Füge eine Quelle s und Senke t hinzu • Verbinde die Quelle mit jedem Knoten mit Angebot mit Hilfe von einer gerichteter Kante mit der Kapazität -d(v) • Verbinde jeden Knoten mit Anforderung mit der Senke mit Hilfe von einer gerichteter Kante mit der Kapazität d(v) G Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss G' Anwendungen: Zirkulation mit Anforderungen • G hat eine gültige Zirkulation, wenn der maximale Fluss in G' den Wert D hat Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Zirkulation mit Anforderungen und unteren Schranken • Reales Problem: Netz der Abwasserkanäle • Minimaler Fluss nötig • Eingabe • Gerichteter Graph G=(V,E) • Kantenkapazität c(e) und untere Schranke l(e),für alle e aus E • Angebot/Anforderung d(v), für alle v aus V • Anforderung d(v) > 0 • Angebot d(v) < 0 • Gültige Zirkulation ist eine Funktion, die erfüllt auf solchen Graphen • Kapazitätbeschränkung l e f ec e , ∀ e∈E • Flusserhaltung ∑ f e− ∑ f e=d v einc v e ausv Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Zirkulation mit Anforderungen und unteren Schranken • Formulierung als Netzwerkflussproblem • Erstelle Graph wie in „Zirkulation mit Anforderungen“ • Modelliere untere Schranke mit Anforderungen im G' • Lasse l(e) Fluss durch die Kante durch • Aktualisiere Anforderungen an beiden Enden • Weiter wie „Zirkulation mit Anforderungen“ G Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss G' Anwendungen: Umfagenentwurf • Reales Problem Marktanalysen, Kundenumfragen • Problem • Frage n Kunden nach m Produkten • Man darf den Kunden i nur dann nach Produkt j fragen, wenn i j besitzt • Stelle dem Kunden i zwischen c(i) und c'(i) Fragen • Befrage zwischen p(j) und p'(j) Kunden nach Produkt j • Ziel: Finde eine passende Umfrage, wenn möglich Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Umfagenentwurf • Formulierung als Netzwerkflussproblem • Modelliere Problem als Zirkulation mit unteren Schranken • Kunden und Produkte als Knoten • Füge zwei Knoten s und t hinzu • Verbinde mit Kunden i und Produkt j, wenn i j besitzt; Kantenschranken [0,1] • Verbinde s mit allen Kunden; Kantenschranken [c(i),c'(i)] • Verbinde alle Produkte mit t; Kantenschranken [p(j),p'(j)] • Verbinde t mit s; Kantenschranken [0, unendl.] Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Umfagenentwurf • Eine Umfrage existiert wenn es im aufgebauten Graphen eine gültige Zirkulation gibt Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bildsegmentierung • Reales Problem Erkennung von Objekten auf einem Bild • Problem • Jedes Pixel i hat ein Maß a(i)>=0, das seine Ähnlichkeit mit dem Vordergrund A ausdrückt • Jedes Pixel i hat ein Maß b(i)>=0, das seine Ähnlichkeit mit dem Hintergrund B ausdrückt • Die Entfernungsstrafe p(i,j)>=0 zwischen zwei Pixeln i und j, von den ein zum Vorder- und ein zum Hintergrund gehört • Ziel: finde eine Partition p i , j • Mit maximalem q A , B=∑ a i ∑ b j − ∑ i∈A j∈ B i , j ∈ E ;∣A ∩ {i , j }∣=1 oder q ' A , B =∑ b i ∑ a j p i , j ∑ • Mit minimalem i∈A j∈B i , j ∈ E ;∣A∩ {i , j }∣=1 Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bildsegmentierung • Formulierung als Netzwerkflussproblem • Erstelle einen Graph G=(V,E) • • • • • Pixel als Knoten Füge zwei Knoten s und t hinzu Verbinde s mit allen Pixeln i; Kantenkapazität a(i) Verbinde alle Pixeln j mit t; Kantenkapazität b(j) Verbinde Benachbarte Pixel i und j mit zwei gerichteten Kanten (entgegen gesetzte Richtung) mit Kapazität p(i,j) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Bildsegmentierung • Die gesuchte Partition q'(A,B) hat die Größe des Kapazität vom Schnitt c(A,B) c A , B=∑ bi ∑ a j i∈ A j ∈B ∑ i , j∈ E ;∣A ∩ {i , j }∣=1 Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss p i , j =q ' A , B Anwendungen: Projektauswahl • Reales Problem Projektverwaltung, strategische Planung • Problem • Es gibt eine Menge der potenziellen Projekte • Mit Projekt v ist erwarteter Gewinn p(v) verbunden • Gewinn kann auch negativ sein (Verlust) • Manche Projekte hängen von anderen ab • Eine Menge der Projekte ist gültig, wenn alle voneinander abhängige Projekte zu dieser Menge gehören • Ziel: Finde eine gültige Menge der Projekte, so dass der erwartete Gewinn maximal ist • Eine Partition q(A,B), so dass Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss p i ∑ i∈A maximal ist Anwendungen: Projektauswahl • Formulierung als Netzwerkflussproblem • Erstelle einen Graph G=(V,E) • Projekte als Knoten • Füge zwei Knoten s und t hinzu • Verbinde jedes Projekt mit allen seinen Vorbedingungen; Kantenkapazität = unendl. • Verbinde s mit allen profitablen Projekten; Kantenkapazität p(i) • Verbinde alle verlustbehaftete Projekte mit t; Kantenkapazität -p(i) Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Anwendungen: Projektauswahl p i • Minimaler Schnitt ist die Partition q(A,B), für die ∑ i∈A maximal ist • Die gesuchte Projektmenge ist die Untermenge A \ {s} Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Quellen • Jon Kleinberg, Éva Tardos, „Algorithm Design“ • Folien von K. Wayne, www.cs.princeton.edu/~wayne • www.wikipedia.org Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss Vielen Dank! Aktuelle Themen in der Algorithmik: Anwendungen von Netzwerkfluss