Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
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:
Der Algorithmus von Kuhn und Munkres Algorithm 1 Berechnung eines Matchings mit maximalem Gewicht 1: function MAXIMUMWEIGHTMATCHING(Vollst. bip. Graph G = (V 1 V 2, E), Gew.fkt. w) berechnet MWM M für G mit V 1 = V 2 2: for all v V 1 do l(v) = max u V2 w(v, u) 3: end for 4: for all u V 2 do l(u) = 0 5: end for Inititale Knotenmarkierung fertig 6: Sei H l der von l induzierte Kantenteilgraph mit Kantenmenge E l 7: M = MAXIMUMMATCHING(H l, ) 8: while Knoten x V 1, der in M nicht saturiert ist do 9: [H l, l, M] = HANDLEUNSATURATED(H l, l, M, x) 10: end while 3 Henning Meyerhenke:
Nicht-perfektes Matching behandeln Algorithm 2 Unterfunktion zur Behandlung unsaturierter Knoten 1: function HANDLEUNSATURATED(Kantenteilgraph H l, KM l, Matching M, Wurzelknoten x) 2: repeat 3: [P, T] = AUGMENTINGPATHINTREE(H l, M, x) 4: if P > 0 then Augmentiere M entlang P 5: else 6: m l = min{l(v) + l(u) w(u, v) v V 1 T, u V 2 \ T } 7: l(v) = l(v) m l für alle v V 1 T 8: l(u) = l(u) + m l für alle u V 2 T 9: Konstruiere neues H l anhand von l 10: end if 11: until P > 0 12: return [H l, l, M] 4 Henning Meyerhenke:
Beispiel 5 Henning Meyerhenke:
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:
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 ) HANDLEUNSATURATED: Warum O( V 3 )? 6 Henning Meyerhenke:
Korrektheit Theorem Sei l eine zulässige Knotenmarkierung von G = (V 1 V 2, E). Falls der Graph H l ein perfektes Matching M enthält, dann ist M ein MWM (maximum weight matching) in G. Theorem Sei G = (V 1 V 2, E) ein vollständiger gewichteter bipartiter Graph. Dann findet der Algorithmus MAXIMUMWEIGHTMATCHING (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:
Diskussion des Algorithmus Bemerkung Der Algorithmus MAXIMUMWEIGHTMATCHING kann so modifiziert werden, dass er das gleiche Problem mit einer Laufzeit von O(n 3 ) löst. Bemerkung Es gibt deutlich schnellere Approximationsalgorithmen für MWM auf allgemeinen Graphen. Diese behandeln wir später. 8 Henning Meyerhenke:
Inhalt Matchings in Graphen Matchings in allgemeinen Graphen Berechnung eines größtmöglichen Matchings 9 Henning Meyerhenke:
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 n 2 Augmentierungen sind möglich. Effiziente Suche nach solchen Pfaden liefert guten Algorithmus. 10 Henning Meyerhenke:
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 n 2 Augmentierungen sind möglich. Effiziente Suche nach solchen Pfaden liefert guten Algorithmus. Algorithmus MAXIMUMMATCHING ist in allgemeinen Graphen nicht anwendbar. Grund: Mögliche Existenz von Kreisen ungerader Länge. 10 Henning Meyerhenke:
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 a, b, c, d, x hervorgerufen wird. 11 Henning Meyerhenke:
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:
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:
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:
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:
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:
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 u, a, c, f, e, d, b, x. 17 Henning Meyerhenke:
Skizze von Edmonds Algorithmus (1) Berechnung größtmöglicher Matchings in allgemeinen Graphen Algorithm 3 Berechnung eines augmentierenden Pfades 1: function GENERALAUGMENTINGPATH(Graph G = (V, E), Matching M, Startknoten u) Berechnet einen M-augmentierenden Pfad in G von u aus (falls er existiert). S speichert u und Knoten, die durch Kanten von M erreicht werden. 2: S = {u}; 3: T = 4: Setze alle Knoten auf unmarkiert 5: while S enthält nicht markierten Knoten do 6: x = nächster unmarkierter Knoten aus S 7: S = S\{x} 8: for all y N(x) mit y / T do 9: if y wird von M nicht saturiert then 10: Expandiere den Pfad u,..., x, um M damit zu erweitern 11: return vergrößertes M 12: end if Fortsetzung auf nächster Folie =0 18 Henning Meyerhenke:
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:
Komplexität Fragen und Hinweise: Was fehlt noch für Algorithmus GENERALMAXIMUMMATCHING? 20 Henning Meyerhenke:
Komplexität Fragen und Hinweise: Was fehlt noch für Algorithmus GENERALMAXIMUMMATCHING? Die Algorithmus-Beschreibung ist nur eine grobe Skizze. Keine genaue Analyse! Der Original-Algorithmus von Edmonds hat eine Laufzeit von O(n 4 ). Die Implementierung im Buch von Ahuja, Magnanti und Orlin benötigt nur O(n 3 ) Schritte. Der schnellste Algorithmus, der das MAXIMUM MATCHING PROBLEM in allgemeinen Graphen löst, hat eine Laufzeit von O( n m). 20 Henning Meyerhenke: