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 4 Programm des Tages: Matchings in allgemeinen Graphen Berechnen größtmöglicher Matchings Zusätzliche Literatur: D. West: Introduction to Graph Theory. 2 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Der Algorithmus von Kuhn und Munkres Algorithm 1 Berechnung eines Matchings mit maximalem Gewicht 1: function M AXIMUM W EIGHT M ATCHING (Vollst. bip. Graph G = (V1 ∪ V2 , E ), Gew.fkt. w) . berechnet MWM M für G mit |V1 | = |V2 | 2: for all v ∈ V1 do l (v ) = maxu ∈V2 w (v , u ) 3: end for 4: for all u ∈ V2 do l (u ) = 0 5: end for . Inititale Knotenmarkierung fertig 6: Sei Hl der von l induzierte Kantenteilgraph mit Kantenmenge El 7: M = M AXIMUM M ATCHING(Hl , ∅) 8: while ∃ Knoten x ∈ V1 , der in M nicht saturiert ist do 9: [Hl , l, M] = H ANDLE U NSATURATED(Hl , l, M, x) 10: end while 3 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Nicht-perfektes Matching behandeln Algorithm 2 Unterfunktion zur Behandlung unsaturierter Knoten 1: function H ANDLE U NSATURATED(Kantenteilgraph Hl , KM l, Matching M, Wurzelknoten x) 2: repeat 3: [P, T] = AUGMENTING PATH I N T REE(Hl , M, x) 4: if |P | > 0 then Augmentiere M entlang P 5: else 6: ml = min{l (v ) + l (u ) − w (u , v ) | v ∈ V1 ∩ T , u ∈ V2 \ T } 7: l (v ) = l (v ) − ml für alle v ∈ V1 ∩ T 8: l (u ) = l (u ) + ml für alle u ∈ V2 ∩ T 9: Konstruiere neues Hl anhand von l 10: end if 11: until |P | > 0 12: return [Hl , l, M] 4 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Beispiel 5 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zeitkomplexität Hinweis: Bezogen auf Alg. 1 und alle Ausführungen der jeweiligen Zeile: 2: O(|V |2 ), denn das schwerste Kantengewicht muss (pro Knoten) gesucht werden 4: O(|V |) 7: O(|V |3 ) 8: O(|V |) 9: O(|V |4 ), denn O(|V |3 ) pro Aufruf, O(|V |) Aufrufe 6 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zeitkomplexität Hinweis: Bezogen auf Alg. 1 und alle Ausführungen der jeweiligen Zeile: 2: O(|V |2 ), denn das schwerste Kantengewicht muss (pro Knoten) gesucht werden 4: O(|V |) 7: O(|V |3 ) 8: O(|V |) 9: O(|V |4 ), denn O(|V |3 ) pro Aufruf, O(|V |) Aufrufe Gesamtlaufzeit: O(|V |4 ) H ANDLE U NSATURATED : Warum O(|V |3 )? 6 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Korrektheit Theorem Sei l eine zulässige Knotenmarkierung von G = (V1 ∪ V2 , E ). Falls der Graph Hl ein perfektes Matching M 0 enthält, dann ist M 0 ein MWM (maximum weight matching) in G. Theorem Sei G = (V1 ∪ V2 , E ) ein vollständiger gewichteter bipartiter Graph. Dann findet der Algorithmus M AXIMUM W EIGHT M ATCHING (auch Algorithmus von Kuhn und Munkres oder ungarischer Algorithmus genannt) ein Matching mit maximalem Gewicht in G. Bemerkung Der Beweis von Theorem 2 kann so modifiziert werden, dass auch reellwertige Kantengewichte zugelassen werden können. 7 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Diskussion des Algorithmus Bemerkung Der Algorithmus M AXIMUM W EIGHT M ATCHING kann so modifiziert werden, dass er das gleiche Problem mit einer Laufzeit von O(n3 ) löst. Bemerkung Es gibt deutlich schnellere Approximationsalgorithmen für MWM auf allgemeinen Graphen. Diese behandeln wir später. 8 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Inhalt Matchings in Graphen Matchings in allgemeinen Graphen Berechnung eines größtmöglichen Matchings 9 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Größtmögliche Matchings Wir wissen: Ein Matching M hat in einem Graphen G genau dann maximale Größe, wenn es keinen M-augmentierenden Pfad in G gibt. Also: Sukzessive nach augmentierenden Pfaden suchen. Höchstens n2 Augmentierungen sind möglich. Effiziente Suche nach solchen Pfaden liefert „guten“ Algorithmus. 10 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Größtmögliche Matchings Wir wissen: Ein Matching M hat in einem Graphen G genau dann maximale Größe, wenn es keinen M-augmentierenden Pfad in G gibt. Also: Sukzessive nach augmentierenden Pfaden suchen. Höchstens n2 Augmentierungen sind möglich. Effiziente Suche nach solchen Pfaden liefert „guten“ Algorithmus. Algorithmus M AXIMUM M ATCHING ist in allgemeinen Graphen nicht anwendbar. Grund: Mögliche Existenz von Kreisen ungerader Länge. 10 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zyklen ungerader Länge Abbildung: Im dargestellten Graphen erreicht man x von u aus durch zwei M-alternierende Pfade. Dabei ist die letzte Kante des Pfades einmal saturiert und einmal unsaturiert, was durch den Zyklus ungerader Länge ha, b, c , d , x i hervorgerufen wird. 11 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zyklen ungerader Länge Abzweigungen (wie Knoten a) können nur dort entstehen, wo zwei Kanten abzweigen, die beide nicht zu M gehören. Von der Abzweigung aus gesehen (im Beispiel Knoten a) hat der Pfad zu x, der in der Matching-Kante endet, gerade Länge, der andere ungerade Länge. 12 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Zyklen ungerader Länge strukturieren Von Blumen, Stämmen und Blüten Definition Sei M ein Matching in einem Graphen G und sei u ein Knoten von G, der durch M nicht saturiert wird. Eine Blume ist die Vereinigung zweier M-alternierender Pfade, die im Knoten u starten und einen Knoten x nach einer geraden und einer ungeraden Anzahl von Schritten erreichen. Der Stamm der Blume ist der maximale gemeinsame initiale Pfad (welcher nichtnegative gerade Länge hat). Die Blüte der Blume ist der Zyklus ungerader Länge, den man erhält, wenn man den Stamm aus der Blume löscht. 13 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Blüten Ziel: Knoten z in der Blüte finden, der zu einem unsaturierten Knoten außerhalb der Blüte adjazent ist. Beobachtung Jeder Knoten z in einer Blüte kann von u aus auf einem M-alternierenden Pfad, der mit einer Matching-Kante endet, erreicht werden. 14 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Blüten als Superknoten Beobachtung Die einzige Matching-Kante, die aus einer Blüte herausführt, ist Teil des Stamms. Corollary Wir können Blüten als einen „Superknoten“ betrachten. Nach der entsprechenden Kontraktion können wir so von allen Knoten, die durch den Superknoten repräsentiert werden, gleichzeitig nach ungematchten inzidenten Kanten suchen. Kontraktion: Alle Knoten einer Blüte werden durch einen einzelnen Knoten ersetzt. Die Kanten innerhalb der Blüte verschwinden. Die Kanten nach außerhalb werden mit dem neuen Superknoten verbunden. 15 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Ansatz und Beispiel Ansatz: Konstruiere alternierenden Baum von u aus und kontrahiere dabei Blüten, wenn sie erkannt werden. Passe dann den Baum an und setze seine Konstruktion fort. Abbildung: Beispiel für die Kontraktion bei der in u beginnenden Suche nach einem erweiternden Pfad. 16 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Expansion eines erweiternden Pfades mit kontrahierten Blüten Angenommen, man findet nach Kontraktion(en) einen erweiternden Pfad. Dann: Sukzessive Kontraktionen rückgängig machen, um Pfad zu rekonstruieren. Abbildung: Beispiel für die Expansion des erweiternden Pfades h u , a, c , f , e , d , b , x i . 17 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Skizze von Edmonds’ Algorithmus (1) Berechnung größtmöglicher Matchings in allgemeinen Graphen Algorithm 3 Berechnung eines augmentierenden Pfades 1: function G ENERAL AUGMENTING PATH (Graph G = (V , E ), Matching M, Startknoten u) . Berechnet einen M-augmentierenden Pfad in G von u aus (falls er existiert). 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 18 . S speichert u und Knoten, die durch Kanten von M erreicht werden. S = {u}; T =∅ Setze alle Knoten auf „unmarkiert“ while S enthält nicht markierten Knoten do x = nächster unmarkierter Knoten aus S S = S \{x } for all y ∈ N (x ) mit y ∈ / T do if y wird von M nicht saturiert then Expandiere den Pfad hu , . . . , x i, um M damit zu erweitern return vergrößertes M end if . Fortsetzung auf nächster Folie =0 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Skizze von Edmonds’ Algorithmus (2) Berechnung größtmöglicher Matchings in allgemeinen Graphen Algorithm 4 Berechnung eines augmentierenden Pfades (Forts.) 13: if y ∈ S then . Kontraktion der Blüte B 14: x = neuer Superknoten 15: Die Knoten von B in S und T durch x ersetzen 16: goto Zeile 8; 17: else . y hat einen Matching-Partner w 18: Füge y in T und w in S ein 19: end if 20: end for 21: Setze x auf „markiert“ 22: end while 19 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Komplexität Fragen und Hinweise: Was fehlt noch für Algorithmus G ENERAL M AXIMUM M ATCHING? 20 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen Komplexität Fragen und Hinweise: Was fehlt noch für Algorithmus G ENERAL M AXIMUM M ATCHING? Die Algorithmus-Beschreibung ist nur eine grobe Skizze. ⇒ Keine genaue Analyse! Der Original-Algorithmus von Edmonds hat eine Laufzeit von O(n4 ). Die Implementierung im Buch von Ahuja, Magnanti und Orlin benötigt nur O(n3 ) Schritte. Der schnellste Algorithmus, der das M AXIMUM M ATCHING √ P ROBLEM in allgemeinen Graphen löst, hat eine Laufzeit von O( n · m ). 20 Henning Meyerhenke: Kombinatorische Optimierung Institut für Theoretische Informatik Paralleles Rechnen