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 Vorlesung Programm: Wiederholung FIFO-PRA Varianten des Maximaler-Fluss-Problems Anwendungen des Maximaler-Fluss-Problems 2 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Inhalt Flüsse in Netzwerken Varianten und Anwendungen 3 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen FIFO-Push-Relabel-Algorithmus Durchführung Aktive Knoten werden in FIFO-Reihenfolge untersucht Warteschlange mit aktiven Knoten Neue aktive Knoten werden in die Schlange eingefügt Nach der Untersuchung von u ist u nicht mehr aktiv oder es wurde R ELABEL(u) durchgeführt Falls R ELABEL(u), dann u in Schlange einfügen Terminierung des Alg., wenn Schlange aktiver Knoten leer Initiale Höhen: ( ψ (u ) = 4 Henning Meyerhenke: Kombinatorische Optimierung dG ( u , t ) |V | falls u 6= s sonst Institut für Theoretische Informatik Paralleles Rechnen FIFO-Push-Relabel-Algorithmus Laufzeit Initiales ψ durch Rückwärts-BFS von t aus berechnen Initial sind alle Kanten von s aus saturiert Theorem Der FIFO-P USH -R ELABEL-Algorithmus arbeitet bei Eingabe eines Flussnetzwerks (G, u , s, t ) korrekt und hat eine Laufzeit von O(|V |3 ). Beweis. Korrektheit folgt aus Korrektheit des generischen Algorithmus Laufzeit: Siehe Tafel 5 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Varianten des Maximaler-Fluss-Problems Knotenkapazitäten Ungerichtete Graphen Minimaler Schnitt mit minimaler Zahl von Kanten Aufgabenbeschreibung: Eingabe: Flussnetzwerk (G, u , s, t ) Ausgabe: Minimaler Schnitt von (G, u , s, t ) mit minimaler Zahl von Kanten Frage: Wie modellieren Sie diese Aufgabe? 6 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Szenario: Stadtwerke Anforderung des Kunden Wir, die Stadtwerke, müssen regelmäßig die Kanalisation säubern. Dies wird durch die Durchleitung einer hohen Wassermenge erreicht. Um kein Wasser zu verschwenden, soll es “im Kreis fließen”. Dann kommt es an der Kläranlage wieder an. Wir wissen für jeden Kanalabschnitt, wie viel Wasser mindestens durchfließen muss. Manche Kanäle sind nicht beidseitig zu benutzen. 7 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Szenario: Stadtwerke Anforderung des Kunden Wir, die Stadtwerke, müssen regelmäßig die Kanalisation säubern. Dies wird durch die Durchleitung einer hohen Wassermenge erreicht. Um kein Wasser zu verschwenden, soll es “im Kreis fließen”. Dann kommt es an der Kläranlage wieder an. Wir wissen für jeden Kanalabschnitt, wie viel Wasser mindestens durchfließen muss. Manche Kanäle sind nicht beidseitig zu benutzen. Frage: Wie findet man einen zulässigen “Durchfluss”? Aufgabe: Modellieren Sie das Problem! 7 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Definition Definition Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit einem gerichteten Graphen G = (V , E ) und b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E. 8 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Definition Definition Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit einem gerichteten Graphen G = (V , E ) und b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E. Definition Eine Zirkulation f ist ein Fluss ohne Quelle und ohne Senke. Formal ist f : E → R mit 1. b (e ) ≤ f (e ) ≤ u (e ) ∀e ∈ E (Kapazitätsbedingung) 2. ∑(u ,v )∈E f (u , v ) = ∑(v ,w )∈E f (v , w ) ∀v ∈ V (Flusserhaltung) 8 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Definition Definition Ein Zirkulationsnetzwerk ist ein Tripel (G, b, u ) mit einem gerichteten Graphen G = (V , E ) und b, u : E → R mit b (e ) ≤ u (e ) für alle e ∈ E. Definition Eine Zirkulation f ist ein Fluss ohne Quelle und ohne Senke. Formal ist f : E → R mit 1. b (e ) ≤ f (e ) ≤ u (e ) ∀e ∈ E (Kapazitätsbedingung) 2. ∑(u ,v )∈E f (u , v ) = ∑(v ,w )∈E f (v , w ) ∀v ∈ V (Flusserhaltung) Beispiel: Siehe Tafel 8 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Formale Aufgabenbeschreibung Problem Eingabe: Ein Zirkulationsnetzwerk (G, b, u ) Ausgabe: Eine Zirkulation f für (G, b, u ) 9 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Formale Aufgabenbeschreibung Problem Eingabe: Ein Zirkulationsnetzwerk (G, b, u ) Ausgabe: Eine Zirkulation f für (G, b, u ) Redefinition des Residualnetzwerkes Gf = (V , Ef ) mit Ef = {(v , w ) ∈ V × V | uf (v , w ) > 0} und uf (v , w ) = u (v , w ) − f (v , w ) + max{f (w , v ) − b (w , v ), 0}. | {z } | {z } Dabei nimmt man an, dass f (w , v ) und b (w , v ) gleich 0 sind, wenn (w , v ) ∈ / E. Beispiel: Siehe Tafel 9 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Algorithmus Algorithm 1 Berechnung einer Zirkulation 1: function C IRCULATE(G, b , u) 2: f (e ) = 0 ∀e ∈ E . Triviale Initialisierung, unzulässige Zirkulation 3: while ∃e ∈ E : f (e ) < b (e ) do 4: Wähle (v , w ) ∈ E mit f (v , w ) < b (v , w ) . Fluss auf Kante zu klein 5: if ∃ ein Pfad P von w nach v in Gf then . Redef. von Gf beachten! 6: C = (P , (v , w )) ist ein Zyklus mit (v , w ) ∈ C 7: Schicke δ = mine∈C uf (e ) Flusseinheiten durch C 8: else 9: return NULL . Keine Zirkulation möglich 10: end if 11: end while 12: return f 10 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zirkulation Analyse des Algorithmus Der Algorithmus terminiert. Falls der Rückgabewert nicht NULL ist, dann ist f eine zulässige Zirkulation. Andernfalls gibt es keine zulässige Zirkulation. Lemma Für (G, b, u ) mit G = (V , E ) gibt es eine zulässige Zirkulation gdw. für jede Menge U ⊆ V gilt: ∑ (v ,w )∈(U ,Ū )∩E 11 Henning Meyerhenke: Kombinatorische Optimierung b (v , w ) ≤ ∑ u (w , v ) (w ,v )∈(Ū ,U )∩E Institut für Theoretische Informatik Paralleles Rechnen Anwendungsszenario: Verteiltes Rechnen mit zwei Prozessoren Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren Wir wollen ein sehr großes Programm darauf ausführen Das Programm besteht aus mehreren Modulen, die miteinander interagieren 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Anwendungsszenario: Verteiltes Rechnen mit zwei Prozessoren Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren Wir wollen ein sehr großes Programm darauf ausführen Das Programm besteht aus mehreren Modulen, die miteinander interagieren Folgende Kosten sind gegeben: αj : Berechnungskosten für Modul j auf Prozessor 1 β j : Berechnungskosten für Modul j auf Prozessor 2 γi ,j : Kommunikationskosten zwischen den Modulen i und j, wenn sie auf verschiedenen Prozessoren laufen (ansonsten 0) 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Anwendungsszenario: Verteiltes Rechnen mit zwei Prozessoren Ein Rechnersystem hat zwei (mglw. verschiedene) Prozessoren Wir wollen ein sehr großes Programm darauf ausführen Das Programm besteht aus mehreren Modulen, die miteinander interagieren Folgende Kosten sind gegeben: αj : Berechnungskosten für Modul j auf Prozessor 1 β j : Berechnungskosten für Modul j auf Prozessor 2 γi ,j : Kommunikationskosten zwischen den Modulen i und j, wenn sie auf verschiedenen Prozessoren laufen (ansonsten 0) Aufgabe: Finden Sie eine Zuweisung der Module auf die Prozessoren derart, dass die Gesamtkosten minimiert werden! Beispiel: Siehe Tafel 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Konstruktion Bei gegebener Menge J von Modulen und Kosten αj , β j and γi ,j : Konstruiere Flussnetzwerk (G, u , s, t ) wie folgt: V = {s, t }∪˙ J E = {(s, j ) | j ∈ J } ∪ {(j , t ) | j ∈ J } ∪ {(i , j ) | i , j ∈ J , γi ,j > 0} falls i = s βj u (i , j ) = αi falls j = t γi ,j falls i 6= s, j 6= t 13 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Konstruktion Bei gegebener Menge J von Modulen und Kosten αj , β j and γi ,j : Konstruiere Flussnetzwerk (G, u , s, t ) wie folgt: V = {s, t }∪˙ J E = {(s, j ) | j ∈ J } ∪ {(j , t ) | j ∈ J } ∪ {(i , j ) | i , j ∈ J , γi ,j > 0} falls i = s βj u (i , j ) = αi falls j = t γi ,j falls i 6= s, j 6= t Lemma Die Gesamtkosten der Zuweisung der Module an die Prozessoren ist gleich der Kapazität des minimalen Schnitts (S , T ) von G. Beweis. Übung: Vergleiche Kosten einer Zuweisung mit Kapazität eines Schnitts im Flussnetzwerk. 13 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Spezialfall: Einheitskapazitäten Definition (G, u , s, t ) ist ein Einheitskapazitäten-Netzwerk (UCN), wenn c (e ) = 1 für alle e ∈ E. (G, u , s, t ) ist ein schlichtes Einheitskapazitäten-Netzwerk (SUCN), wenn es ein UCN ist und zusätzlich degin (v ) = 1 oder degout (v ) = 1 für alle v ∈ V \ {s, t }. Theorem (ohne Beweis) Das Problem des maximales Flusses kann für SUCNs mit Laufzeit O(n1/2 m ) gelöst werden. Das Problem des maximales Flusses kann für UCNs mit Laufzeit O(min{n2/3 m, m3/2 }) gelöst werden. 14 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Aufgabe: Maximale bipartite Matchings mit Flüssen Problem Sei G = (V1 ∪˙ V2 , E ) ein bipartiter Graph. Berechnen Sie ein größtmögliches Matching in G mit einem flussbasierten Algorithmus! Wie müssen Sie das Problem transformieren? Der Algorithmus soll scheller sein als O(m · n) (Laufzeit des Algorithmus mit dem alternierenden Baum)! Bemerkung Sei G = (V1 ∪˙ V2 , E ) ein gewichteter bipartiter Graph. Ein Matching mit maximalem Gewicht in G lässt sich mit Laufzeit O(n(m + n log n)) berechnen. 15 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen