Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke Institut für Theoretische Informatik – Paralleles Rechnen 1 KIT –Henning Universität desMeyerhenke: Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Kombinatorische Optimierung Institut für Theoretische Informatik www.kit.edu Paralleles Rechnen Vorlesungen 5 und 6 Programm des Tages: Flüsse in Netzwerken Grundlegende Maximaler-Fluss-Algorithmen Maximale Flüsse und minimale Schnitte Generischer Push-Relabel-Algorithmus 2 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Inhalt Flüsse in Netzwerken Elementare Ergebnisse Der P USH -R ELABEL-Algorithmus 3 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Szenario 3 Sie verwalten (und gestalten) das Stromnetz einer großen Firma. Die Firma produziert den Strom selbst an einer (Strom)Quelle. Der Strom wird an einem Ort auf dem Firmengelände konsumiert (Senke). Der Strom muss aus technischen Gründen über eine Zahl von Zwischenstationen geroutet werden. Jede Stromleitung zwischen Quelle und Konsument hat eine gewisse Kapazität. Fragen: Bei gegebenem Netz: Wieviel Strom kann von der Quelle bis zur Senke fließen? Wie modellieren Sie diese Fragestellung? 4 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Flussnetzwerk Definition (Flussnetzwerk) Ein Flussnetzwerk ist ein Quadrupel (G, u , s, t ) mit einem Digraphen G = (V , E ), Kantenkapazitäten u : E → R+ , einer Quelle s ∈ V und einer Senke t ∈ V . 5 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Fluss Definition (Fluss, Überschuss) Gegeben sei ein Flussnetzwerk (G, u , s, t ). Ein Fluss ist eine Funktion f : E (G ) → R+ mit f (e ) ≤ u (e ) für alle e ∈ E (G ). Der Überschuss (engl.: excess) eines Flusses f in v ∈ V (G ) ist exf (v ) := ∑ f (e ) − e ∈N − (v ) ∑ f (e ) e ∈N + (v ) N + : Nachbarn an ausgehenden Kanten N − : Nachbarn an reinkommenden Kanten 6 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen s-t-Fluss Definition (s-t-Fluss, Wert) Gegeben sei ein Flussnetzwerk (G, u , s, t ). Ein s-t-Fluss ist ein Fluss f mit exf (s ) ≤ 0 und exf (v ) = 0 für alle v ∈ V (G )\{s, t } (Flusserhaltung). Der Wert eines s-t-Flusses ist value (f ) := |f | := −exf (s ) 7 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Modellierung der Problemstellung Problem (Maximaler-Fluss-Problem) Gegeben sei ein Flussnetzwerk (G, u , s, t ). Bestimme einen s-t-Fluss mit maximalem Wert. Idee für Algorithmus? 8 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Gegenläufige Kanten Definition (Gegenläufige Kante) ← − Sei G ein Digraph und e = (v , w ) ∈ E (G ). Dann sei e eine neue Kante von w nach v , die gegenläufige Kante von e. ← − Ebenso ist e die gegenläufige Kante von e . Definition ← → − ˙ ← Sei G := (V (G ), E (G )∪{ e : e ∈ E (G )}). ← − Achtung: Sind e = (v , w ) und e 0 = (w , v ) ∈ G, dann sind e und e 0 ← → zwei verschiedene Kanten in G . 9 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Residualnetzwerk Definition (Residualkapazitäten) Gegeben sei ein Digraph G mit Kapazitäten u : E (G ) → R+ und ein Fluss f . ← → Residualkapzitäten uf : E ( G ) → R+ mit ← − uf (e ) := u (e ) − f (e ) und uf ( e ) := f (e ) Definition (Residualnetzwerk) Das Residualnetzwerk Gf ist der Graph ← → (V (G ), {e ∈ E ( G ) : uf (e ) > 0}). 10 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Finden augmentierender Pfade Definition (Augmentierender Pfad) Gegeben sei ein Netzwerk (G, u , s, t ) und ein s-t-Fluss f . Dann heißt ein s-t-Pfad in Gf f -augmentierender Pfad. Algorithmus-Idee: Finde sukzessive f -augmentierende Pfade! 11 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Finden augmentierender Pfade Definition (Augmentierender Pfad) Gegeben sei ein Netzwerk (G, u , s, t ) und ein s-t-Fluss f . Dann heißt ein s-t-Pfad in Gf f -augmentierender Pfad. Algorithmus-Idee: Finde sukzessive f -augmentierende Pfade! Algorithm 2 Ford-Fulkerson-Algorithmus 1: function F ORD -F ULKERSON ((G, u , s , t ) mit u : E (G ) → Z+ ) 2: Setze f (e ) := 0 für alle e ∈ E (G ) 3: Bestimme einen f -augmentierenden Pfad P 4: while |P | > 0 do 5: Berechne γ := mine∈E (P ) uf (e ) 6: Augmentiere f entlang P um γ 7: Bestimme einen f -augmentierenden Pfad P 8: end while 11 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Verbesserung des FF-Algorithmus Edmonds-Karp-Algorithmus Problem: Laufzeit kann exponentiell zur Eingabelänge sein! Siehe Tafel. 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Verbesserung des FF-Algorithmus Edmonds-Karp-Algorithmus Problem: Laufzeit kann exponentiell zur Eingabelänge sein! Siehe Tafel. Daher Verbesserung: Algorithm 4 Edmonds-Karp-Algorithmus 1: function E DMONDS -K ARP((G, u , s , t ) mit u : E (G ) → Z+ ) 2: Setze f (e ) := 0 für alle e ∈ E (G ) 3: Bestimme einen kürzesten f -augmentierenden Pfad P 4: while |P | > 0 do 5: Berechne γ := mine∈E (P ) uf (e ) 6: Augmentiere f entlang P um γ 7: Bestimme einen kürzesten f -augmentierenden Pfad P 8: end while Anmerkung: Kürzester Pfad bedeutet mit den wenigsten Kanten! 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Edmonds-Karp-Algorithmus Laufzeit (1) Definition (Flaschenhals-Kante) Eine Kante, auf denen das Minimum γ angenommen wird, nennt man Flaschenhals-Kante. 13 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Edmonds-Karp-Algorithmus Laufzeit (1) Definition (Flaschenhals-Kante) Eine Kante, auf denen das Minimum γ angenommen wird, nennt man Flaschenhals-Kante. Theorem (Edmonds und Karp, 1972) Unabhängig von den Kantenkapzitäten terminiert der E DMONDS -K ARP -A LGORITHMUS nach höchstens mn 2 Augmentierungen. Beweis. ← → In jedem augmentierenden Pfad ist mind. eine Flaschenhals-Kante von G . Eine Flaschenhals-Kante ist in ≤ n4 augmentierenden Pfaden enthalten (oB). ← → ⇒ Es kann höchstens |E ( G )| n4 augmentierende Pfade geben. Für die Details siehe Korte und Vygen, S. 195-196. 13 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Edmonds-Karp-Algorithmus Laufzeit (2) Corollary Der E DMONDS -K ARP -A LGORITHMUS löst das M AXIMALER -F LUSS -P ROBLEM in der Laufzeit O(m2 n). Beweis. Nach Theorem 11 gibt es höchstens mn 2 Augmentierungen. Jede Augmentierung benutzt BFS und benötigt somit eine Laufzeit von O(m ). 14 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Schnitte im Flussnetzwerk Definition (Schnitt) Ein Schnitt ist eine Aufteilung der Knoten in zwei disjunkte Teilmengen S und T . Dabei gilt s ∈ S und t ∈ T . Die Kapazität eines Schnittes (S , T ) ist die Summe aller Kantenkapazitäten von S nach T , also u (S , T ) : = ∑ u (v , w ). v ∈S ,w ∈T ,(v ,w )∈E Lemma Sei (G, u , s, t ) ein Flussnetzwerk und sei f ein Fluss in G. Sei außerdem (S , T ) ein Schnitt in G. Dann gilt: f (S , T ) = |f |, insbesondere |f | = f (s, V − s ) = f (V − t , t ). 15 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Max-Flow-Min-Cut-Theorem Theorem Die folgenden drei Aussagen sind äquivalent: f ist der maximale Fluss in G. Das Residualnetzwerk enthält keinen augmentierenden Pfad. Für mindestens einen Schnitt ist der Wert des Flusses gleich der Kapazität des Schnittes. Beweis. Siehe Tafel. 16 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Hilfsergebnisse Proposition Das Maximaler-Fluss-Problem hat stets eine optimale Lösung. 17 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Hilfsergebnisse Proposition Das Maximaler-Fluss-Problem hat stets eine optimale Lösung. Proposition Sind die Kapazitäten eines Netzwerkes ganzzahlig, so gibt es einen ganzzahligen maximalen Fluss. Beweis. Folgt direkt aus Max-Flow-Min-Cut. 17 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Inhalt Flüsse in Netzwerken Elementare Ergebnisse Der P USH -R ELABEL-Algorithmus 18 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Vorschau Wir werden den P USH -R ELABEL-Algorithmus von Goldberg und Tarjan (1988) beschreiben. Andere Namen existieren... √ Wir werden eine Laufzeit von O(n2 m ) beweisen. Ausgeklügelte Implementierungen mit dynamischen Bäumen sind noch schneller (siehe Korte und Vygen, S. 201). 19 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Ansatz Wissen: Ein s-t-Fluss f hat genau dann maximalen Wert, wenn exf (v ) = 0 für alle v ∈ V (G ) − {s, t } und es keinen f -augmentierenden Pfad gibt. Bisher: Algorithmen erfüllten stets erste Bedingung. 20 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Ansatz Wissen: Ein s-t-Fluss f hat genau dann maximalen Wert, wenn exf (v ) = 0 für alle v ∈ V (G ) − {s, t } und es keinen f -augmentierenden Pfad gibt. Bisher: Algorithmen erfüllten stets erste Bedingung. Nun: Mit f starten, das zweite Bedingung erfüllt. Zweite Bedingung als Invariante für weitere Flüsse. Terminierung nur, wenn erste Bedingung auch erfüllt. Während des Algorithmus ist f kein s-t-Fluss, sondern ein s-t-Präfluss. 20 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Intuitive Algorithmus-Idee Ein Flussnetzwerk transportiert Flüssigkeiten; Kanten stellen Röhren dar, Knoten deren Verbindungen. Jeder Knoten hat ein unbegrenztes Reservoir als Zwischenspeicher. Jeder Knoten, sein Reservoir und seine Verbindungen sind auf einer Plattform, deren Höhe während Laufzeit zunimmt Knotenhöhen bestimmen, wie Fluss durch das Netzwerk bewegt wird: abwärts. 21 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Intuitive Algorithmus-Idee Ein Flussnetzwerk transportiert Flüssigkeiten; Kanten stellen Röhren dar, Knoten deren Verbindungen. Jeder Knoten hat ein unbegrenztes Reservoir als Zwischenspeicher. Jeder Knoten, sein Reservoir und seine Verbindungen sind auf einer Plattform, deren Höhe während Laufzeit zunimmt Knotenhöhen bestimmen, wie Fluss durch das Netzwerk bewegt wird: abwärts. Initial sendet s so viel Fluss wie möglich (= u (s, V − s )). Erreicht Fluss einen Zwischenknoten, wird er zunächst im Reservoir zwischengespeichert. Von dort wird er später abwärts geschickt. Wenn alle unsaturierten Rohre, die einen Knoten v verlassen, zu Knoten w führen, die höher als v liegen, wird v angehoben. Hat der maximale Fluss die Senke erreicht, wird der Überschuss zur Quelle zurückgeschickt (Zwischenknoten über Quelle heben). 21 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Präfluss Definition (Präfluss, aktiver Knoten) Sei (G, u , s, t ) ein Netzwerk. Ein s-t-Präfluss ist eine Funktion f : E (G ) → R+ mit f (e ) ≤ u (e ) für alle e ∈ E (G ) und (Kapazitätsbedingung) f (u , v ) = −f (v , u ) für alle u , v ∈ V (Antisymmetrie) exf (v ) ≥ 0 für alle v ∈ V (G ) − {s }. (relaxierte Flusserhaltung) 22 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Präfluss Definition (Präfluss, aktiver Knoten) Sei (G, u , s, t ) ein Netzwerk. Ein s-t-Präfluss ist eine Funktion f : E (G ) → R+ mit f (e ) ≤ u (e ) für alle e ∈ E (G ) und (Kapazitätsbedingung) f (u , v ) = −f (v , u ) für alle u , v ∈ V (Antisymmetrie) exf (v ) ≥ 0 für alle v ∈ V (G ) − {s }. (relaxierte Flusserhaltung) Ein Knoten v ∈ V (G ) − {s, t } heißt aktiv, falls exf (v ) > 0. Beispiel: Siehe Tafel. 22 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Distanzmarkierung Andere Intuition: Funktion der Plattformhöhen Definition (Distanzmarkierung, erlaubte Kante) Sei (G, u , s, t ) ein Netzwerk und f ein s-t-Präfluss . Eine Distanzmarkierung ist eine Funktion ψ : V (G ) → Z+ mit ψ(t ) = 0, ψ(s ) = n := |V (G )| und ψ(v ) ≤ ψ(w ) + 1 für alle (v , w ) ∈ E (Gf ). Eine Kante e = (v , w ) ∈ E (G ) heißt erlaubte Kante, falls e ∈ E (Gf ) und ψ(v ) = ψ(w ) + 1. 23 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Distanzmarkierung Andere Intuition: Funktion der Plattformhöhen Definition (Distanzmarkierung, erlaubte Kante) Sei (G, u , s, t ) ein Netzwerk und f ein s-t-Präfluss . Eine Distanzmarkierung ist eine Funktion ψ : V (G ) → Z+ mit ψ(t ) = 0, ψ(s ) = n := |V (G )| und ψ(v ) ≤ ψ(w ) + 1 für alle (v , w ) ∈ E (Gf ). Eine Kante e = (v , w ) ∈ E (G ) heißt erlaubte Kante, falls e ∈ E (Gf ) und ψ(v ) = ψ(w ) + 1. Falls ψ eine Distanzmarkierung ist, so ist ψ(v ) mit v 6= s eine untere Schranke für die Distanz zu t in Gf . 23 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Algorithmus-Idee Initialer s-t-Präfluss : Alle Kanten von s aus nutzen ihre Kapazität voll aus, alle anderen haben Fluss 0. Initiale DM: ψ(s ) = n und ψ(v ) = 0 für alle v ∈ V (G ) − {s }. 24 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Algorithmus-Idee Initialer s-t-Präfluss : Alle Kanten von s aus nutzen ihre Kapazität voll aus, alle anderen haben Fluss 0. Initiale DM: ψ(s ) = n und ψ(v ) = 0 für alle v ∈ V (G ) − {s }. Danach Aktualisierungs-Operationen P USH (Aktualisierung von f ) und R ELABEL (Aktualisierung von ψ) in beliebiger Reihenfolge durchführen. 24 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Die Komponenten 25 1: 2: 3: procedure P USH(e) Setze γ := min{exf (v ), uf (e )}, wobei e in v beginnt. Augmentiere f entlang e um γ. 1: 2: procedure R ELABEL(v) + Setze ψ(v ) := min{ψ(w ) + 1 : (v , w ) ∈ δG (v )}. Henning Meyerhenke: Kombinatorische Optimierung f Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: function P USH -R ( ELABEL(G, u , s , t) u (e ) für jedes e ∈ δ+ (s ) 0 für jedes e ∈ E (G ) − δ+ (s ) ( n v =s Setze ψ(v ) = 0 für alle v ∈ V (G ) − {s } Setze f (e ) = while es gibt einen aktiven Knoten do Sei v ein aktiver Knoten + if kein e ∈ δG ist erlaubte Kante then f R ELABEL(v) else + P USH(erlaubte Kante e ∈ δG ) f end if end while=0 Beispiel: Siehe Tafel. 26 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Korrektheit (1) Proposition Während des gesamten Ablaufs von P USH -R ELABEL ist f stets ein s-t-Präfluss und ψ eine Distanzmarkierung bzgl. f . Für jedes v ∈ V (G ) gilt: ψ(v ) wird durch jedes R ELABEL (v ) streng erhöht. Beweis. Übung. 27 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Korrektheit (2) Lemma Sei f ein s-t-Präfluss und ψ eine DM bzgl. f . Dann gelten: 1. Die Quelle s ist von jedem aktiven Knoten v aus in Gf erreichbar. 2. Falls es zwei Knoten v , w ∈ V (G ) mit der Eigenschaft gibt, dass w von v aus in Gf erreichbar ist, so gilt: ψ ( v ) ≤ ψ ( w ) + n − 1. 3. Die Senke t ist von s aus in Gf nicht erreichbar. Beweis. Siehe Tafel. 28 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Korrektheit (3) Theorem Bei Terminierung des Algorithmus ist f ein s-t-Fluss mit maximalem Wert. Beweis. Siehe Tafel. 29 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Laufzeit (1) Lemma 1. Für jedes v ∈ V (G ) gilt: ψ(v ) wird niemals verringert und ψ(v ) ≤ 2n − 1 gilt zu jedem Zeitpunkt des Algorithmus. 2. Für keinen Knoten v wird mehr als (2n − 1) mal R ELABEL(v ) aufgerufen. Die Gesamterhöhung von ∑v ∈V (G) ψ(v ) nach Ende des Algorithmus ist ≤ 2n2 − n. Beweis. Übung. 30 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Laufzeit (2) Definition (Saturierender Push) Ein P USH ist saturierend genau dann, wenn danach uf (e ) = 0 gilt. Lemma Die Anzahl der saturierenden Pushes ist höchstens 2mn. Beweis. Siehe Tafel. 31 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der P USH -R ELABEL-Algorithmus Laufzeit (3) Lemma Falls wir als v in Zeile 5 von P USH -R ELABEL immer einen aktiven Knoten mit ψ(v ) maximal wählen, √ dann ist die Anzahl der nichtsaturierenden Pushes höchstens 8n2 m. Beweis. Siehe Korte und Vygen, S. 204-205. Theorem Der P USH -R ELABEL-Algorithmus löst √ das M AXIMALER -F LUSS -P ROBLEM korrekt und kann mit Laufzeit O(n2 m ) implementiert werden. Beweis. Siehe Tafel. 32 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen