Effiziente Algorithmen (SS2014) Kapitel 3 Matchings Walter Unger Lehrstuhl für Informatik 1 02.07.2014 13:30 Einleitung mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:2) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Inhalt I 1 Einleitung Definitionen maximales Matching 2 mit Flüssen Idee Transformation 3 Alternierende Pfade Idee Aussagen Algorithmus 4 verbesserte Laufzeit Idee Aussagen Algorithmus Beispiel 5 mit Kosten Einleitung Erster Algorithmus Zweiter Algorithmus 6 Blüten Probleme bei ungeraden Kreisen Algorithmus Ergebnisse 7 Zwei Anwendungen Definitionen Aussagen Vorgehen Stabile Paarungen SS2014 Z x Einleitung mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:1) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Motivation und Anwendungen SS2014 Z vielfältige Zuordnungsprobleme: Kunden auf Kundenberater Anrufe im Callcenter auf Servicemitarbeiter Heiratsvermittlung Jobs auf Maschinen Schwarzgeld auf Konten Grundsätzliche Probleme: Bestimme größtes Matching. Bestimme nicht erweiterbares Matching. Bestimme größtes Matching mit Kantengewichten. Bestimme günstigstes Matching (d.h. Kosten auf den Kanten) unter allen maximum Matchings. Im Folgenden: G = (V , E ) zusammenhängend, |V | = n, |E | = m Im Folgenden: G = (V , W , E ) bipartit und zusammenhängend, |V ∪ W | = n, |E | = m g Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:2) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Definitionen Z g δG (v ) = |NG (v )| NG (v ) = {w ∈ V (G) | {v , w } ∈ E (G)} Definition (Matching) Sei G = (V , E ) ungerichteter Graph. M ⊆ E heißt Matching: ∀e, f ∈ M : e ∩ f = ∅ D.h. ∀v ∈ V : δG 0 (v ) 6 1 mit G 0 = (V , M). Definition ((inklusions-)maximales Matching) Sei G = (V , E ) ungerichteter Graph. M ⊆ E heißt maximales Matching: ∀M 0 : M ( M 0 ⊂ E : M 0 ist kein Matching. Definition (maximum Matching) Sei G = (V , E ) ungerichteter Graph. M ⊆ E heißt maximum Matching: ∀M 0 ⊂ E : |M| < |M 0 | : M 0 ist kein Matching. Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:3) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel Betrachte Graph: SS2014 Z f e d a b c {{a, b}} Matching {{a, b}, {b, c}} kein Matching {{a, f }, {c, d}} maximales Matching {{a, f }, {b, c}, {e, d}} maximum Matching g Einleitung mit Flüssen maximales Matching Altern. Pfade verbesserte Laufzeit mit Kosten (3:4) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Algorithmus (maximales Matching) Idee: Greedy, d.h. solange es geht, wähle Kante für das Matching. 1 Gegeben G = (V , E ) 2 M=∅ 3 Solange E nicht leer, mache: 1 2 3 4 Wähle e ∈ E . Setze M = M ∪ {e} Setze E = {e 0 ∈ E | e 0 ∩ e = ∅} Ausgabe: M. SS2014 Z g Einleitung mit Flüssen maximales Matching Altern. Pfade verbesserte Laufzeit mit Kosten (3:5) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel Idee: Greedy Algorithmus: b1 b2 b3 b4 b5 b6 b7 a1 a2 a3 a4 a5 a6 a7 Z g Einleitung mit Flüssen maximales Matching Altern. Pfade verbesserte Laufzeit mit Kosten (3:6) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Probleme Definition (Bipartites Matchingproblem) Gegeben: G = (V , W , E ) bipartiter Graph. Gesucht: Maximum Matching auf G. Definition (Bipartites kostenminimales Matchingproblem) Gegeben: G = (V , W , E ) bipartiter Graph und Kostenfunktion l : E 7→ N. Gesucht: Kostenminimales maximum Matching auf G. SS2014 Z g Einleitung Idee (3:7) mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Idee (bipartites Matching und Flüsse) Matching von V nach W entspricht “Transport”. Jeder Knoten kann eine Einheit transportieren. Jede Matchingkante kann eine Einheit transportieren. Modelliere das durch Fluss, erweitere Graph: Füge Quelle s ein und verbinde s zu jedem Knoten aus V . Füge Senke t ein und verbinde jeden Knoten aus W zu t. Diese neuen Kanten können eine Einheit transportieren. SS2014 Z s Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:8) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Bipartites Matching und Flüsse s 1 6 1 16 1 1 1 6 1 1 6 1 6 1 1 1 16 1 161 1 1 1 16 a6 1 a5 b7 6 16 1 1 b6 1 6 1 −1 16 1 1 1 16 1 1 1 16 t −1 1 1 1 161 6 1 1 61 1 −1 a4 1 1 16 b5 6 1 1 61 1 −1 16 1 b4 a3 16 1 1 1 6 1 1 a2 6 b3 1 1 16 16 −1 61 a1 b2 1 1 b1 16 161 1 16 1 a7 SS2014 Z s Einleitung mit Flüssen Transformation Altern. Pfade verbesserte Laufzeit mit Kosten (3:9) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Formale Transformation Sei G = (V , W , E ) bipartiter Graph. Bestimme G 0 = (V ∪ W ∪ {s, t}, E 0 ) mit: E 0 = E 00 ∪ Es ∪ Et E 00 = {(v , w ) | {v , w } ∈ E ∧ v ∈ V ∧ w ∈ W } Es = {(s, v ) | v ∈ V } Et = {(w , t) | w ∈ W } Setze c : E 0 7→ N mit ∀e ∈ E 0 : c(e) = 1. Lemma Das bipartite Matchingproblem kann in Zeit O(n + m) auf das Flussproblem transformiert werden. G hat Matching der Größe α genau dann, wenn w (G 0 ) = α. Theorem Das maximum Matching Problem ist auf bipartiten Graphen in Zeit O(n3 ) lösbar. Z s Einleitung mit Flüssen Transformation (3:10) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Formale Transformation mit Kostenfunktion Sei G = (V , W , E ) bipartiter Graph und l : E 7→ Z. Bestimme G 0 = (V ∪ W ∪ {s, t}, E 0 ) und l 0 : E 0 7→ Z mit: E 0 = E 00 ∪ Es ∪ Et E 00 = {(v , w ) | {v , w } ∈ E ∧ v ∈ V ∧ w ∈ W } Es = {(s, v ) | v ∈ V } und Et = {(w , t) | w ∈ W }. ∀(v , w ) ∈ E 00 : l 0 (v , w ) = l(v , w ). ∀e ∈ Es ∪ Et : l 0 (e) = 0. Setze c : E 0 7→ N mit ∀e ∈ E 0 : c(e) = 1. Lemma Das bipartite Matchingproblem mit Kosten kann in Zeit O(n + m) auf das Flussproblem mit Kosten transformiert werden. Theorem G hat Matching der Größe α mit Kosten β genau dann, wenn w (G 0 ) = α und die Kosten des Flusses sind β. Z s Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit (3:11) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Nochmal das Beispiel Betrachte das Beispiel ohne die Knoten s und t: Ein Fluss über eine Kante entspricht Matching. Das Löschen einer Matchingkante entspricht einem Fluss über eine Rückwärtskante. Damit ein Fluss über eine Rückwärtskante fließt, muss vorher und hinterher eine Vorwärtskante sein. b1 b2 b3 b4 b5 b6 b7 a1 a2 a3 a4 a5 a6 a7 SS2014 Z i Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit (3:12) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee der alternierende Pfade Damit arbeitet der Flussalgorithmus wie folgt: Bestimme “erweiternden Pfad”: Der Der Der Der Der Pfad Pfad Pfad Pfad Pfad startet an einem “freien” Knoten. startet mit einer Vorwärtskante. geht alternierend über Vorwärts- und Rückwärtskanten. endet mit einer Vorwärtskante. endet an einem “freien” Knoten. Damit können wir einen weiteren Algorithmus angeben. Z i Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:13) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Alternierende Pfade Z i A ⊕ B = (A ∪ B) \ (A ∩ B) Sei G = (V , E ) ungerichteter Pfad und M ⊂ E ein Matching. Ein Knoten v ∈ V heißt frei, falls v 6∈ ∪e∈M e. Ein Pfad v0 , {v0 , v1 }, v1 , {v1 , v2 }, v2 , {v2 , v3 }, v3 , . . . , vl−1 , {vl−1 , vl }, vl heißt alternierend, falls {vi−1 , vi } ∈ M ⇔ {vi , vi+1 } 6∈ M (0 < i < l). v0 v1 v2 v3 v4 v5 v6 Ein alterniernder Pfad v0 , {v0 , v1 }, v1 , {v1 , v2 }, v2 , {v2 , v3 }, v3 , . . . , vl−1 , {vl−1 , vl }, vl heißt erweiternd, falls v0 , vl frei sind. v0 v1 v2 v3 v4 v5 Bemerkung: eine Kante zwischen freien Knoten ist ein verbessernder Pfad. Damit arbeitet der Algorithmus wie folgt: 1 2 Setze M = ∅. Solange es erweiternden Pfad P gibt, mache: 1 Erweitere M, d.h. M = M ⊕ E (P). Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:14) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel allgemeiner Graph SS2014 Z i A ⊕ B = (A ∪ B) \ (A ∩ B) Versuche verbessernde Pfade auf allgemeinen Graphen: a1 b1 b2 c1 c2 d1 a0 b0 b3 c0 c3 d0 a2 b4 c4 Ungerade Kreise können Probleme machen d2 Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:15) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Aussagen zu verbessernden Pfaden Z s A ⊕ B = (A ∪ B) \ (A ∩ B) Lemma (ein verbessernder Pfad) Sei G = (V , E ) Graph, M Matching und P verbessernder Pfad. Dann ist M ⊕ E (P) Matching mit |M ⊕ E (P)| = |M| + 1. Beweis: Sei G 0 = (V , M) und G 00 = (V , M ⊕ E (P)). Sei v der Startknoten von P, dann gilt δG 0 (v ) = 0 und δG 00 (v ) = 1. Sei w der Endknoten von P, dann gilt δG 0 (w ) = 0 und δG 00 (w ) = 1. Sei u ein Zwischenknoten auf P, dann gilt δG 0 (u) = δG 00 (u) = 1. Es wird eine Kante mehr hinzugefügt als entfernt. Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:16) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Aussagen zu verbessernden Pfaden Z s δ(G) = ∪v ∈V (G) δG (v ) Lemma (Differenz zweier Matchings) Sei G = (V , E ) Graph, M, N Matchings mit |M| < |N|. Dann enthält H = (V , M ⊕ N) mindestens |N| − |M| knotendisjunkte verbessernde Pfade bezüglich M in G. Beweis: Sei GM = (V , M) und GN = (V , N). Es gilt: δ(GM ) ⊂ {0, 1} und δ(GN ) ⊂ {0, 1}. Damit folgt: δ(H) ⊂ {0, 1, 2}. Seien Gi = (V , Ei ) (1 6 i 6 g) die Zusammenhangskomponenten von H. Wegen δ(Gi ) ⊂ {0, 1, 2} folgt: Gi Gi Gi Gi ist ist ist ist ein ein ein ein isolierte Knoten oder Kreis gerader Länge oder Pfad gerader Länge oder Pfad ungerader Länge. Die Kanten in Gi stammen alternierend aus M und N. Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:17) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Fortsetzung Z s δ(G) = ∪v ∈V (G) δG (v ) Setze d(Gi ) = |Ei ∩ N| − |Ei ∩ M|. Damit gilt: d(Gi ) ∈ {−1, 0, 1}. Damit gilt weiter: d(Gi ) = 1 falls Gi verbessernder Pfad. Pg i=1 d(Gi ) = |N \ M| − |M \ N| = |N| − |M| Damit muss es mindestens |N| − |M| Komponenten Gi geben mit d(Gi ) = 1. Zusammengefasst gibt es mindestens |N| − |M| verbessernde Pfade. Nach Definition der Komponenten sind diese knotendisjunkt. Lemma Sei G = (V , E ) und M Matching in G. M ist maximum Matching genau dann, wenn keinen verbessernden Pfad bezüglich M gibt. Einleitung mit Flüssen Algorithmus Altern. Pfade verbesserte Laufzeit (3:18) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Algorithmus 1 Gegeben G = (V , W , E ) 2 M=∅ 3 Solange es verbessernden Pfad P gibt, mache: 1 4 Setze M = M ⊕ E (P) Ausgabe: M. Theorem Der obige Algorithmus hat eine Laufzeit von O(n · m). Beweis: Wegen |M| 6 bn/2c gibt es höchstens bn/2c Schleifendurchläufe. Jede Schleife kann in Zeit O(m) ausgeführt werden. SS2014 Z s Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit (3:19) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel (Schleifendurchlauf) b1 b2 b3 b4 b5 b6 b7 a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 a1 a2 a3 a4 a5 a6 a7 SS2014 Z s Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:20) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Schleifendurchlauf Sei G = (V , W , E ) bipartiter Graph und M Matching. Erzeuge G 0 = (V ∪ W , E 0 ∪ E 00 ) mit: E 0 = {(v , w ) | {v , w } ∈ E \ M ∧ v ∈ V ∧ w ∈ W } und E 00 = {(w , v ) | {v , w } ∈ M ∧ v ∈ V ∧ w ∈ W }. Damit wird die Suche nach einem verbessernden Pfad eine Suche in G 0 : Von einem freien Knoten in V zu einem freien Knoten in W . Damit ergibt sich eine Laufzeit von O(m) durch Tiefensuche. Z s Einleitung Idee mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:21) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee Falls Kanten oft die Rolle (Matching,nicht Matching) wechseln, erhalten wir eine schlechte Laufzeit. Am Anfang besteht der verbessernde Pfad aus einer Kante. Am Anfang sind die kürzesten verbessernden Pfade knotendisjunkt. Idee: suche kürzeste verbessernde Pfade. Falls diese knotendisjunkt sind, können diese gleichzeitig gesucht werden. Beispiel: g h a b c d e f Matching: M = {{b, c}, {d, e}} Erster kürzester verbessernder Pfad: a, b, c, d, e, f Zweiter kürzester verbessernder Pfad: g, a, b, c, d, h Widerspruch, da (g, a) noch kürzerer verbessernder Pfad. Z i Einleitung Aussagen mit Flüssen Altern. Pfade (3:22) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Lemma 1 Lemma (kurzer Weg) Sei M Matching in G = (V , E ) und P kürzester verbessernder Pfad in G bezüglich M. Sei weiter P 0 verbessernder Pfad bezüglich M ⊕ E (P), dann gilt: |P 0 | > |P| + |P ∩ P 0 |. Beweis: Sei N = (M ⊕ P) ⊕ P 0 . Nach Lemma “ein verbessernder Pfad” gilt: |N| = |M| + 2. Nach Lemma “Differenz zweier Matchings” gibt es in M ⊕ N zwei knotendisjunkte verbessernde Pfade P1 , P2 . Wegen |PI | > |P| (l ∈ {1, 2}) gilt: |M ⊕ N| > 2 · |P|. Nun folgt: Z s Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:23) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Fortsetzung Z s Zeige: |P 0 | > |P| + |P ∩ P 0 | 0 Sei N = (M ⊕ P) ⊕ P . Nach Lemma “ein verbessernder Pfad” gilt: |N| = |M| + 2. Nach Lemma “Differenz zweier Matchings” gibt es in M ⊕ N zwei knotendisjunkte verbessernde Pfade P1 , P2 . Wegen |PI | > |P| (l ∈ {1, 2}) gilt: |M ⊕ N| > 2 · |P|. Nun folgt: M ⊕N Damit gilt: Betrachte: |P ⊕ P 0 | |P ⊕ P 0 | Damit gibt: 2 · |P| |P| + |P ∩ P 0 | = = = > = 6 6 6 M ⊕ ((M ⊕ P) ⊕ P 0 ) (M ⊕ M) ⊕ (P ⊕ P 0 ) P ⊕ P0 2 · |P| |P ∪ P 0 | − |P ∩ P 0 | |P| + |P 0 | − |P ∩ P 0 | |P| + |P 0 | − |P ∩ P 0 | |P 0 | Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:24) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee und Situation Ziel: Suche viele kürzeste verbessernde Pfade. Starte mit leerem Matching M0 = ∅. Im Schritt i sei Pi ein kürzester verbessernder Pfad bezüglich Mi−1 . Setze Mi = Mi−1 ⊕ E (Pi ). Lemma (disjunkte kürzeste verbessernde Pfade) Für i, j > 1 gilt: 1 |Pi | 6 |Pi+1 | 2 |Pi | = |Pj | =⇒ Pi und Pj sind knotendisjunkt. Beweis 1 |Pi | 6 |Pi+1 | folgt aus Lemma “kurzer Weg”. 2 Folgt per Widerspruch: Z s Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:25) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beweis (Teil 2) Sei i < j, |Pi | = |Pj | und V (Pi ) ∩ V (Pj ) 6= ∅. O.B.d.A.: ∀k : i < k < j : ∀l ∈ {i, j} : V (Pl ) ∩ V (Pk ) = ∅. Damit folgt: Pj ist ein verbessernder Pfad bezüglich Mi = Mi−1 ⊕ Pi . Wegen V (Pi ) ∩ V (Pj ) 6= ∅ folgt: E (Pi ) ∩ E (Pj ) 6= ∅. Sei v ∈ V (Pi ) ∩ V (Pj ), genau die Matchingkante an v ist in E (Pi ) ∩ E (Pj ). |E (Pi ) ∩ E (Pj )| > 1. Aus Lemma “kurzer Weg” folgt: |Pj | > |Pi | + |Pi ∩ Pj | > |Pi | + 1. Widerspruch. Z s Einleitung mit Flüssen Algorithmus Altern. Pfade verbesserte Laufzeit (3:26) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee und Algorithmus Suche alle kürzesten verbessernden Pfade. Je länger diese werden, um so weniger gibt es davon. Alle knotendisjunkten Pfade nutzen jeweils mindestens eine Kante des aktuellen Matchings. Damit erhalten wir eine bessere Laufzeit. Der Algorithmus bestimmt in Runde i möglichst viele kürzeste verbessernden Pfade der Länge li . l1 < l2 < l3 < . . .. Algorithmus: 1 Gegeben G = (V , W , E ) bipartiter Graph. 2 Setze M = ∅ 3 Solange es verbessernde Pfade gibt, mache: 1 Bestimme l als die Länge des kürzesten verbessernden Pfads. 2 Bestimme eine inklusions-maximale Menge von verbessernden Pfaden P1 , P2 , . . . , Pi der Länge l. 3 M = M ⊕ P1 ⊕ P2 ⊕ P3 ⊕ . . . ⊕ Pi . Z s Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:27) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Anzahl der Schleifendurchläufe Lemma (Pfadlänge) Sei M 0 ein maximum Matching mit s = |M 0 | und M ein nicht maximales Matching, dann gibt es einen M verbessernden Pfad der Länge höchstens 2· |M| s − |M| + 1. Beweis: Es gibt höchstens s − |M| viele M-verbessernde Pfade. Diese Pfade enthalten zusammen höchstens |M| Kanten aus M. |M| Damit gibt es einen Pfad, der höchstens b s−|M| c Kanten aus M enthält. D.h. ein Pfad, der nicht länger ist als die Durchschnittslänge. Dieser Pfad hat eine Länge von: 2· |M| s − |M| + 1. Z s Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:28) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Anzahl der Schleifendurchläufe M 0 maximum Matching s = |M 0 | und 2 · Teile in zwei Phasen auf: √ Phase 1 aktiv, solange |M| 6 bs − sc gilt. Maximale Pfadlänge dann: √ √ √ bs − sc s − d se √ √ 2· +162· +162· s +1 s − bs − sc d se √ Damit gilt in jeder Runde der ersten Phase: l 6 2√ · s + 1. Da l in Zweierschritten wächst, gibt es höchsten s Iterationen in der ersten Phase. √ Phase 2 aktiv, falls |M| > bs − sc gilt. √ Es fehlen s viele Kanten. √ Die Phase endet nach maximal s Iterationen. Z |M| s−|M| s +1 Einleitung Algorithmus mit Flüssen (3:29) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit Lemma Die Bestimmung einer inklusions-maximalen Menge von kürzesten verbessernden Pfaden geht in Zeit O(m) Beweis (Idee wird auch beim gewichteten Matching benutzt.) Sei G = (V , W , E ) bipartiter Graph und M Matching. Erzeuge G 0 = (V ∪ W , E 0 ∪ E 00 ) mit: E 0 = {(v , w ) | {v , w } ∈ E \ M ∧ v ∈ V ∧ w ∈ W } und E 00 = {(w , v ) | {v , w } ∈ M ∧ v ∈ V ∧ w ∈ W }. Damit wird die Suche nach einem verbessernden Pfad eine Suche in G 0 : Von den freien Knoten in V zu den freien Knoten in W . Füge Quelle und Senke hinzu, damit entsteht G 00 . Bestimme durch Breitensuche alle Kanten, die nicht auf einem kürzesten Pfad liegen. Damit entsteht ein Schichtennetzwerk G 000 . Damit ergibt sich eine Laufzeit von O(m) durch Tiefensuche auf G 000 . Z s Einleitung Beispiel mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:30) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 0 Beispiel (Bestimme G ) a7 b7 a7 b7 a6 b6 a6 b6 a5 b5 a5 b5 a4 b4 a4 b4 a3 b3 a3 b3 a2 b2 a2 b2 a1 b1 a1 b1 s t SS2014 Z s Einleitung Beispiel mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:31) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel (Breitensuche) s a7 b7 a6 b6 a5 b5 a4 b4 a3 b3 a2 b2 a1 b1 b7 a7 a6 b6 b5 t s a5 a4 b4 t a3 b3 a2 b2 b1 a1 Z s Einleitung Beispiel mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:32) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel (Tiefensuche) s a7 b7 a6 b6 a5 b5 a4 b4 a3 b3 a2 b2 a1 b1 b7 a7 a6 b6 b5 t s a5 a4 b4 b3 a2 b1 t SS2014 Z s Einleitung Beispiel mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:33) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel (Verbessernde Pfade) s a7 b7 a6 b6 a5 b5 a4 b4 a3 b3 a2 b2 a1 b1 b7 a7 a6 b6 b5 t s a5 a4 b4 b3 a2 b1 t SS2014 Z s Einleitung Beispiel mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:34) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel a7 b7 a6 b6 a5 b5 a4 b4 a3 b3 a2 b2 a1 b1 b7 a7 a6 b6 b5 s a5 a4 b4 b3 a2 b1 t SS2014 Z s Einleitung Beispiel mit Flüssen (3:35) Laufzeit Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Z Theorem √ Das Maximum Matchingproblem auf bipartiten Graphen kann in Zeit O(m n) gelöst werden. s Einleitung mit Flüssen Einleitung (3:36) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Matching mit Kosten g(E ) = Definition (maximum Matching) Sei G = (V , E ) ungerichteter bipatiter Graph mit Kantenkosten g : E 7→ N. M ⊆ E ist gewichtsmaximales Matching: ∀M 0 ⊂ E : M 0 ist Matching. : g(M 0 ) 6 g(M) Idee suche erweiternden alternierenden Weg mit maximalen Kosten. Verwende Idee von der schnellen Wegsuche Hier werden nun Wege maximalen Gewichts gesucht. Sei G = (V , W , E ) bipartiter Graph und M Matching. Erzeuge G 0 = (V ∪ W , E 0 ∪ E 00 ) mit: E 0 = {(v , w ) | {v , w } ∈ E \ M ∧ v ∈ V ∧ w ∈ W } und E 00 = {(w , v ) | {v , w } ∈ M ∧ v ∈ V ∧ w ∈ W } und ∀e ∈ E 0 : gM (e) = g(e) und ∀e ∈ E 00 : gM (e) = −g(e). Füge Quelle und Senke hinzu, damit entsteht G 0 . Z P e∈E i g(e) Einleitung mit Flüssen Einleitung (3:37) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee g(E ) = Sei G = (V , W , E ) bipartiter Graph, g : E 7→ N und M Matching. Erzeuge G 0 = (V ∪ W , E 0 ∪ E 00 ) mit: E 0 = {(v , w ) | {v , w } ∈ E \ M ∧ v ∈ V ∧ w ∈ W } und E 00 = {(w , v ) | {v , w } ∈ M ∧ v ∈ V ∧ w ∈ W } und ∀e ∈ E 0 : gM (e) = g(e) und ∀e ∈ E 00 : gM (e) = −g(e). Damit wird ein ungerichteter M-verbessender Pfad P bestimmt. Gewicht von P: gM (P) = P e∈P\M g(e) − P g(e) − X e∈P∩M g(e). Damit haben wir: g(M ⊕ P) = X e∈M g(e) + X e∈P\M e∈P∩M Damit ergibt sich der folgende Algorithmus: g(e) = g(M) + gM (p) Z P e∈E i g(e) Einleitung mit Flüssen Erster Algorithmus Altern. Pfade verbesserte Laufzeit (3:38) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus g(E ) = 1 Gegeben G = (V , W , E ), g :7→ N 2 M = ∅ und Mopt = ∅ 3 Solange es verbessernden Pfad P bezüglich M gibt, mache: 1 2 3 4 4 P ∀e ∈ E 0 : gM (e) = g(e) und ∀e ∈ E 00 : gM (e) = −g(e) Bestimme verbessernden Pfad P mit maximalen Gewicht bezüglich M und gM (e): Setze M = M ⊕ E (P) Falls g(M) > g(Mopt ), setze Mopt = M. Ausgabe: Mopt . Theorem Der obige Algorithmus bestimmt gewichtsmaximales Matching und hat eine Laufzeit von O(n2 · m). Z e∈E i g(e) Einleitung mit Flüssen Erster Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:39) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beweis Lemma Das im i-ten Schritt bestimmte Matching Mi ist das gewichtsmaximale Matching mit Kardinalität i. Beweis per Induktion: Induktionsanfang i = 0 ist klar (M0 = ∅), Induktionsschritt i → i + 1 folgt. Seien Mi die Machtings, die im i-ten Schritt bestimmt wurden. Sei M 0 ein Matching mit |M 0 | = i + 1 und maximalem Gewicht. Sei P ein verbessernde Pfad in Mi ⊕ M 0 . Betrachte M = M 0 ⊕ P, es gilt |M| = i. Es gilt damit: P ∩ M = P \ M 0 = P ∩ Mi . Z i Einleitung mit Flüssen Erster Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:40) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beweis Lemma Das im i-ten Schritt bestimmte Matching Mi ist das gewichtsmaximale Matching mit Kardinalität i. Beweis per Induktion: Induktionsanfang i = 0 ist klar (M0 = ∅), Induktionsschritt i → i + 1 folgt. Seien Mi die Machtings, die im i-ten Schritt bestimmt wurden. Sei M 0 ein Matching mit |M 0 | = i + 1 und maximalem Gewicht. Sei P ein verbessernde Pfad in Mi ⊕ M 0 . Betrachte M = M 0 ⊕ P, es gilt |M| = i. Es gilt damit: P ∩ M = P \ M 0 = P ∩ Mi . Per Induktion gilt: g(Mi ) > g(M) = g(M 0 ) − gM (P). Und wir erhalten gM (P) = gMi (P) 6 gMi (P 0 ), wobei P 0 der Pfad ist, den der Algorithmus bestimmte. Damit: g(M 0 ) = g(M) + gM (P) 6 g(Mi ) + gMi (P 0 ) = g(Mi+1 ). Z i Einleitung mit Flüssen Erster Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:41) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit Z Der Algorithmus bestimmt bn/2c mal einen verbessernden kostenmaximalen Weg. Wir setzen l(e) = −gM (e) für alle Kanten, damit haben wir: Der Algorithmus bestimmt bn/2c mal einen kürzesten Weg. Dabei treten auch negative Gewichte auf. Wegen des vorherigen Lemmas haben wir keine negativen Kreise bezüglich l. Positive Kreise bezüglich gM widersprächen der Optimalität von Mi : Damit kann nun mit dem Bellmann-Ford-Algorithmus von einer Quelle aus gearbeitet werden. Dieser hat Laufzeit O(nm). Damit ist die Gesammtlaufzeit O(n2 m). i Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade (3:42) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee Z i l(e) = −gM (e) Nutze den Dijkstra-Algorithmus (Laufzeit O(m + n log n)). Transformiere dazu die Längen, so dass keine negativen Werte auftreten. Beachte: wir haben keine negativen Kreise. Verwende dazu eine Potentilafunkion p : V 7→ Z mit: ∀(v , w ) = e ∈ E : l 0 (e) = l(e) − p(w ) + p(v ) Die Berechnung so einer Potentialfunktion p im Rahmen der Suche nach dem Matching wird die Ungarische Methode genannt. Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:43) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Transformation 1 Z i l(e) = −gM (e) Lemma Sei G = (V , E ) Graph mit Kantengewichten l : E 7→ Z und p : V 7→ Z. Wenn G enthalte keine negativen Kreise, dann setze: ∀(v , w ) = e ∈ E : l 0 (e) = l(e) − p(w ) + p(v ). Dann gilt für jeden kürzesten Weg P von a nach b: distl 0 (a, b) = p(a) − p(b) + distl (a, b). Beweis: distl 0 (a, b) = = = P 0 Pe∈P l (e) l(e) − p(w ) + p(v ) (v ,w )=e∈P P p(a) − p(b) + e∈P l(e) Damit können die kürzesten Wege auch mit diesen neuen Kantengewichten bestimmt werden. Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade (3:44) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Transformation 2 Z i l(e) = −gM (e) Lemma Sei G = (V , E ) Graph mit Kantengewichten l : E 7→ Z und q ∈ V . Wenn G enthalte keine negativen Kreise, dann setze weiter p : V 7→ Z mit p(v ) = distl (q, v ) und ∀(v , w ) = e ∈ E : l 0 (e) = l(e) − p(w ) + p(v ). Dann gilt: ∀e ∈ E : l 0 (e) > 0. Beweis: Für jede Kante e = (v , w ) gilt: distl (q, w ) 6 distl (q, v ) + l(e). Und damit: l 0 (e) = = > l(e) − p(w ) + p(v ) l(e) − distl (q, w ) + distl (q, v ) l(e) − (distl (q, v ) + l(e)) + distl (q, v ) = 0 Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:45) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Transformation 3 Z i l(e) = −gM (e) Lemma Sei G = (V , E ) Graph mit Kantengewichten l : E 7→ Z und q ∈ V . Wenn G enthalte keine negativen Kreise, dann setze weiter p : V 7→ Z mit p(v ) = distl (q, v ) und ∀(v , w ) = e ∈ E : l 0 (e) = l(e) − p(w ) + p(v ). Dann gilt für die Kanten e eines kürzsten Weg von q aus: l 0 (e) = 0. Beweis: Wegen l 0 (e) = l(e) − p(w ) + p(v ) gilt für ein Kante e = (q, v ): l 0 (e) = 0. Sei P ein kürzester Weg von q nach v . Dieser hat im Vergleich zu den ursprünglichen Kosten den aditiven Term p(q) − p(v ). Damit p(q) − p(v ) = distl (q) − distl (v ) = − distl (v ). Und weiter. distl 0 (v ) = distl (v ) − distl (v ) = 0. Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:46) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Ungarische Methode Z i l(e) = −gM (e) 1 Gegeben G = (V , W , E ), g : E 7→ N 2 M = ∅, Mopt = ∅ und für alle v ∈ V setze p(v ) = 0. 3 Für alle w ∈ W setze p(w ) = mine∈E l(e). 4 Wiederhole die folgenden Schritte: 1 2 3 4 5 6 7 Füge Knoten q zu V hinzu und Kanten (q, v ) zu allen Knoten aus v ∈ V \ V (M). Bestimme Kantenlängen lM mit Hilfe von g und M. Bestimme p(v ) = distlM (q, v ) für alle erreichbaren Knoten v . Setze l 0 (e) = lM (e) + p(v ) − p(w ) für alle Kanten e = (v , w ). Falls es Pfad P mit l 0 (P) = 0 von q zu einem Knoten aus W \ V (M) gibt, so setze M = M ⊕ E (P) Falls es keinen solchen Pfad P gibt, so gebe Mopt aus und terminiere. Falls g(M) > g(Mopt ), setze Mopt = M. Einleitung mit Flüssen Zweiter Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:47) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Laufzeit Z i l(e) = −gM (e) Theorem Der obige Algorithmus bestimmt gewichtsmaximales Matching und hat eine Laufzeit von O(n · (m + n log n)). Bemerkungen dazu (Nach Konstruktion gelten die vorherigen Ausagen): Beim Übergang von Mi nach Mi+1 werden nur Kanten e mit Kosten l 0 (e) = 0 gedreht. Damit vergrößert sich nicht der von q aus erreichbare Teil. Sei e = (v , w ) so eine Kante vor der Drehung. Für die gedreht Kante e 0 = (w , v ) gilt: 0 0 (e 0 ) = lMi+1 (e 0 )−p(w )+p(v ) = −lMi (e 0 )−p(w )+p(v ) = −lM (e) = 0. lM i i+1 Damit können wir im Schritt 5.4 den Dijkstra-Algorithmus anwenden. Weiterhin können wir die Potentiale in Schritt 5.2 mit Breitesuche bestimmen. Damit O(n) Iterationen mit Laufzeit O(m + n log n) plus O(n + m). Einleitung mit Flüssen Altern. Pfade Probleme bei ungeraden Kreisen verbesserte Laufzeit (3:48) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Einleitung Z i l(e) = −gM (e) Was passiert, wenn der obige Algorithmus auf ungerade Kreise stößt? Es gibt ggf. mehr Möglichkeiten des Durchlaufs. Ausblick und Vorgehen: Untersuche die möglichen Situationen. Erkenne die Situationen, die kritisch für den Algorithmus sind. Passe Algorithmus für diese Situationen an. Einleitung mit Flüssen Altern. Pfade Probleme bei ungeraden Kreisen verbesserte Laufzeit (3:49) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Erster unkritischer Fall Z i l(e) = −gM (e) Die Suche startet an a0 . Der Kreis C = {b0 , b1 , . . . , b6 } wird bei b0 erreicht. Wegen {b0 , b1 } ∈ M wird der Kreis in eindeutiger Richtung durchlaufen. Damit ist die Kante {b0 , b6 } nicht mehr relevant. Der Fall ist unkritisch. a2 a1 a0 c6 c5 c4 b6 b5 b4 b1 b2 b3 c1 c2 c3 b0 Einleitung mit Flüssen Altern. Pfade Probleme bei ungeraden Kreisen verbesserte Laufzeit (3:50) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Zweiter unkritischer Fall SS2014 Z i l(e) = −gM (e) Die Suche startet an a1 . Der Kreis C = {b0 , b1 , . . . , b6 } wird bei b0 erreicht. Es gibt zwei Möglichkeiten, in den Kreis zu laufen. Diese sind unabhängig, da b5 frei in G|C ({b5 , b6 } nicht relevant) Der Fall ist unkritisch. a2 a1 a0 c6 c5 c4 b6 b5 b4 b1 b2 b3 c1 c2 c3 b0 Einleitung mit Flüssen Altern. Pfade Probleme bei ungeraden Kreisen verbesserte Laufzeit mit Kosten (3:52) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel SS2014 Z i l(e) = −gM (e) c5 Problem mit ungeraden Kreisen. Wenn wir von a1 starten, dann gibt es zwei Möglichkeiten. über b0 und b1 nach c2 nach c6 oder über b0 und b4 nach c3 nach c0 c3 b4 b3 b1 b2 c0 c1 c2 c5 c4 c3 c6 a2 b0 a1 c6 Jeder Knoten aus dem Kreis ist erreichbar. a2 Die ausgehende Kante bestimmt den Durchlauf durch den Kreis. a1 Daher kann der Kreis durch einen Knoten ersetzt werden. c4 Kreis c0 c1 c2 Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:53) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Situation SS2014 Z i l(e) = −gM (e) Definition (Blüte) Sei G = (V , E ) ungerichteter Graph und M Matching in G. C = {v0 , v1 , v2 , . . . , vk } heißt Blüte, falls G|C ist ein ungerader Kreis (d.h. k ist gerade). {vi , vi+1 } ∈ M für i ∈ {1, 3, 5, . . . , k − 1}. v0 ist der Startknoten der Blüte C . Definiere S(G, C ) = (V 0 , E 0 ∪ E 00 ) mit: ˙ V 0 = (V \ C )∪{c} E 0 = {{v , w } | {v , w } ∈ E ∧ v , w ∈ V 0 } E 00 = {{v , c} | ∃w ∈ C : {v , w } ∈ E } Einleitung mit Flüssen Algorithmus Altern. Pfade verbesserte Laufzeit mit Kosten (3:54) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Aufbau der Idee: Z i l(e) = −gM (e) Starte mit einer normalen Suche nach verbessernden Pfaden. Falls eine Blüte C in ihrem Startknoten betreten wird, so mache: Schrumpfe C zu einem Knoten, d.h. setze Suche auf S(G, C ) fort. Falls verbessernder Pfad gefunden wird, so übertrage diesen auf G. Initialisiere: 1 Eingabe: G = (V , E ) und M Matching. 2 Setze: G 0 = (V , E 0 ) mit E 0 = {(v , w ) | {v , w } ∈ E }. 3 Für alle {v , w } ∈ M setze: P(v ) = w und P(w ) = v . 4 Setze: Z (v ) = even für alle v ∈ V mit v ∩ ∪e∈E e 6= ∅ 5 Setze: Z (v ) = away für alle v ∈ V mit v ∩ ∪e∈E e = ∅ Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:55) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus (Edmonds) Z n l(e) = −gM (e) 1 0 Wiederhole: Wähle (v , v ) = e ∈ E mit: Z (v ) = even und e ist noch nicht betrachtet worden. 1 2 3 4 2 0 Falls Z (v 0 ) = odd, führe nichts aus (Fall 0). Falls Z (v 0 ) = away, führe Fall 1 aus. Falls Z (v 0 ) = even und v und v 0 im selben Baum, führe Fall 2 aus. Falls Z (v 0 ) = even und v und v 0 nicht im selben Baum, führe Fall 3 aus. bis Fall 3 eingetreten oder es gibt keine zu untersuchenden Kanten mehr. Fall 1: 1 2 Z (v 0 ) = odd und Z (P(v 0 )) = even. p(v 0 ) = v und p(P(v 0 )) = v 0 . Fall 2: 1 2 3 v 00 sei nächster gemeinsamer Vorfahr. Schrumpfe Blüte v , v 0 , . . . , v 00 , . . . , v . Passe dabei Daten p an. Fall 3: 1 2 Verbinde v und v 0 . Verbessernder Pfad ist gefunden. Einleitung Algorithmus mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:56) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel SS2014 Z n l(e) = −gM (e) even odd v4 v5 v6 v7 v0 v1 v2 v3 v4 v5 Wähle Kante v0 , v4 . Fall 2, Weg: v0 , v4 Wähle Kante v4 , v1 . Fall 2, Weg: v0 , v4 , v1 Wähle Kante v1 , v2 . Fall 2, Weg: v0 , v4 , v1 , v2 Wähle Kante v2 , v3 . Fall 2, Weg: v0 , v4 , v1 , v2 , v3 Wähle Kante v3 , v7 . Fall 0, v3 , v7 ist betrachtet worden. v0 Wähle Kante v3 , v6 . Fall 2, es wird geschrumpft. v7 v0 v1 Einleitung mit Flüssen Ergebnisse (3:57) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Ergebnisse Z i l(e) = −gM (e) Theorem √ Auf allgemeinen Graphen ist das Matchingproblem in Zeit O(m n) lösbar. Beweisidee: Kombiniere obigen Algorithmus mit der Suche nach kurzen verbessernden Pfaden. D.h. adaptiere obigen Algorithmus in eine Breitensuche. Verwalte dabei die Pfadlängen korrekt, d.h. beachte die Länge in den Blüten mit. Die Pfadlänge in den Blüten ist abhängig von den Kanten, die wir zum Betreten und Verlassen nutzen. Einleitung mit Flüssen Ergebnisse (3:58) Altern. Pfade verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Ergebnisse Z i l(e) = −gM (e) Theorem Auf allgemeinen Graphen ist das gewichtete Matchingproblem in Zeit O(n3 ) lösbar. Beweisidee: Suche verbessernde Pfade und Suche kostenverbessernde alternierende Kreise. Vorgehen wie bei kostenminimalen Flüssen. Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:59) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Claw-free Z n N(v ) = {w | {w , v } ∈ E }, N[v ] = N(v ) ∪ {v } Klaue a klauenfrei z b c a z b c d Definition (Claw-free (klauenfrei)) G heißt klauenfrei, falls kein knoteninduzierter Teilgraph eine Klaue ist. Ziel: Bestimme die größte stabile Menge (independent set) auf klauenfreien Graphen. Dazu betrachten wir eine Teilklasse der klauenfreien Graphen. Auf Kantengraphen entspricht das Bestimmen einer stabilen Menge einem Matching. Dann übertragen wir das Vorgehen “verbessernde Pfade” auf klauenfreie Graphen. Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:60) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Kantengraphen SS2014 Z n N(v ) = {w | {w , v } ∈ E }, N[v ] = N(v ) ∪ {v } Definition (Kantengraph) Sei G = (V , E ) ungerichteter Graph. L(G) = (E , E 0 ) heißt Kantengraph von G, falls E 0 = {{e, e 0 } | e, e 0 ∈ E ∧ e ∩ e 0 6= ∅}. Ein Graph H heißt Kantengraph, falls es einen Graphen G gibt, mit L(G) = H. a c b x y b c Lemma Kantengraphen sind klauenfrei. e a d Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:62) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Beispiel 1 c d z a b dz cz az bz SS2014 Z n Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:64) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel 2 d c cd da a b bc ab Z n Einleitung Definitionen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:66) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel 3 g f e fg h i j hi ah a b c d ef gj gh bh ab Z fj ij ce bc cd bi de n Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:67) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Aussagen Lemma Für Kantengraphen G kann, √ falls H mit L(H) = G bekannt ist, eine größte stabile Menge in Zeit O(m n) bestimmt werden. (Das Erkennungsproblem für Kantengraphen ist in P.) Beweis: Übung. e d de ea a b c be bd ab bc cd Z n Einleitung Aussagen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:68) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Aussagen SS2014 Z n G|W = (W , {e | e ∈ E ∧ e \ W = ∅}) Definition (Independent Set (Stabile Menge)) Sei G = (V , E ). Die Größe der größten stabilen Menge wird mit α(G) bezeichnet: α(G) = max |I| I⊂V ∧E (G|I)=∅ Lemma (Claw-free (klauenfrei)) G = (V , E ) ist klauenfrei, falls ∀v ∈ V : α(G|N[V ]) 6 2. Beweis: Übung: Theorem Für klauenfreie Graphen G ist das Bestimmen von α(G) in P. Einleitung Vorgehen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:69) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Idee Gegeben sei G = (V , E ) und S stabile Menge auf G. Vergrößere schrittweise S durch eine “alternierende Menge (Pfad)” Die Knoten aus S nennen wir “rote Knoten”, alle anderen sind “weiß”. Erste Klassifizierung der weißen Knoten v2 v3 v5 x v1 v4 gebunden: benachbart mit zwei roten Knoten. beweglich: benachbart mit einem roten Knoten. frei: benachbart mit keinem roten Knoten. Knoten die frei sind, können wir sofort in die stabile Menge aufnehmen. D.h. im Folgenden keine freien Knoten. Nun definieren wir das Analogon zu den alternierenden Pfaden. Z n Einleitung Vorgehen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:70) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Alternierende Mengen Z Definition Gegeben sei G = (V , E ) klauenfrei und S ⊂ V stabile Menge. Eine Knotenmenge P ⊂ V heißt alternierende Menge, falls die weißen Knoten von P eine stabile Menge in G|P sind. Lemma Eine alternierende Menge P auf einem klauenfreien Graphen ist ein Pfad oder ein Kreis. D.h. δ(G|V (P)) 6 2. Beweis: V (P) ∪ S und V (P) ∪ (V \ S) sind stabile Mengen. Mit ∀v ∈ V : α(G|N[V ]) 6 2 folgt die Behauptung. a b c d e f g n Einleitung Vorgehen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:71) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Verbessernde Pfade Definition (Verbessernder Pfad) Falls eine alternierende Menge ein Pfad P ist, mit: Die Endpunkte sind weiss. Die Endpunkte sind nicht verbunden. Es gibt keine Kanten zwischen weissen Knoten auf dem Pfad. Hier reicht es aus zu fordern: Keine Kanten zwischen weissen Knoten, die einen Abstand von zwei haben auf P. a b c d e f g Z n Einleitung Vorgehen mit Flüssen Altern. Pfade verbesserte Laufzeit mit Kosten (3:72) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Einige hilfreiche Strukturen x1 x2 x3 x4 x0 x5 x7 x6 Sei x0 beweglicher Knoten. Dann ist x1 eindeutig bestimmt. Das kann ggf. eindeutig weiter gehen. Aufteilung geht nur an einem roten Knoten (x5 ). x0 y1 y0 Dann gibt es Kante in N(x5 ). Dann geht der Weg eindeutig weiter: x6 , x7 . y2 z0 Andere Aufteilung an x7 . Jede Alternative ist möglich. Algorithmisch ergibt sich aber eine einfache Verzweigungsstruktur. z3 z2 z1 Z n Einleitung Vorgehen mit Flüssen Altern. Pfade verbesserte Laufzeit (3:73) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Algorithmus Eine vollständige Untersuchung ergibt, dass das Suchen nach den verbessernden Pfaden möglich ist. Wird hier nicht vorgeführt. Ist Graphentheorie. Am Ende ergibt sich aber ein ähnlicher Algorithmus: 1 Gegeben G = (V , E ) klauenfreier Graph 2 S=∅ 3 Solange es verbessernden Pfad P gibt, mache: 1 4 Setze S = S ⊕ V (P) Ausgabe: S. SS2014 Z n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade (3:74) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Definition SS2014 Z Gegeben vollständiger bipartiter Graph (A, B, E ) mit |A| = |B|. Eine Sympathieliste L(A) ist eine totale Ordnung auf A: a1 < a2 < . . . an . Für jedes a ∈ A gibt es Sympathieliste La (B) Für jedes b ∈ B gibt es Sympathieliste Lb (A) Ziel: Bestimme stabile Paarung (perfektes Matching), mit: Kein Paar a, b ist unzufrieden, d.h. (a, b) 6∈ M und (a, b 0 ) ∈ M, (a0 , b) ∈ M mit: b <La (B) b 0 , d.h. a bevorzugt b vor b 0 und a <Lb (A) a0 , d.h. b bevorzugt a vor a0 n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade verbesserte Laufzeit (3:75) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel La1 (B) La2 (B) La3 (B) La4 (B) La5 (B) = = = = = (b2 , b5 , b1 , b3 , b4 ) (b1 , b2 , b3 , b4 , b5 ) (b2 , b3 , b5 , b4 , b1 ) (b1 , b3 , b2 , b4 , b5 ) (b5 , b3 , b2 , b1 , b4 ) Lb1 (A) Lb2 (A) Lb3 (A) Lb4 (A) Lb5 (A) = = = = = (a5 , a1 , a4 , a2 , a3 ) (a4 , a5 , a2 , a1 , a3 ) (a1 , a4 , a2 , a3 , a5 ) (a3 , a2 , a4 , a1 , a5 ) (a4 , a2 , a3 , a5 , a1 ) Paarung A: (a1 , b1 )(a2 , b3 )(a3 , b2 )(a4 , b4 )(a5 , b5 ) Paarung B: (a1 , b1 )(a2 , b4 )(a3 , b5 )(a4 , b3 )(a5 , b2 ) Paarung A ist nicht stabil: (a1 , b2 ) sind unzufrieden. Paarung B ist stabil. Z n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade verbesserte Laufzeit mit Kosten (3:76) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Algorithmus (Gale und Shapley) 1 Setze M = ∅ 2 Solange es noch einen ai ∈ A gibt, mit ai 6∈ ∪e∈M e, mache 1 2 3 4 Z Sei bj erstes Element in Lai (B). Lösche bj aus Lai (B). Falls bj 6∈ ∪e∈M e gilt, so setze: M = M ∪ {ai , bj }. Falls bj ∈ ∪e∈M e und sei {ak , bj } ∈ M dann mache: 1 Falls ai <L (A) ak , dann setze: M = (M \ {{ak , bj }}) ∪ {ai , bj }. bj Theorem (Gale und Shapley) Der Algorithmus terminert nach O(n2 ) Runden mit einer stabilen Paarung. n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade verbesserte Laufzeit (3:77) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beispiel La1 (B) La2 (B) La3 (B) La4 (B) La5 (B) = = = = = (b2 , b5 , b1 , b3 , b4 ) (b1 , b2 , b3 , b4 , b5 ) (b2 , b3 , b5 , b4 , b1 ) (b1 , b3 , b2 , b4 , b5 ) (b5 , b3 , b2 , b1 , b4 ) Lb1 (A) Lb2 (A) Lb3 (A) Lb4 (A) Lb5 (A) = = = = = (a5 , a1 , a4 , a2 , a3 ) (a4 , a5 , a2 , a1 , a3 ) (a1 , a4 , a2 , a3 , a5 ) (a3 , a2 , a4 , a1 , a5 ) (a4 , a2 , a3 , a5 , a1 ) Ablauf des Verfahrens: Mx (y ): in Runde x wird Matching mit y aufgenommen. Fx (y ): in Runde x wird Matching mit y angefragt. Sx (y ): in Runde x wird Matching mit y gelöst. Partner(a1 ) Partner(a2 ) Partner(a3 ) Partner(a4 ) Partner(a5 ) = = = = = M2 (b2 ), S7 (b2 ), M8 (b5 ), S9 (b5 ), M10 (b1 ), b3 , b4 M3 (b1 ), S6 (b1 ), M7 (b2 ), S14 (b2 ), F15 (b3 ), M16 (b4 ), b5 F4 (b2 ), M5 (b3 ), S11 (b3 ), M12 (b5 ), b4 , b1 M6 (b1 ), S10 (b1 ), M11 (b3 ), b2 , b4 , b5 M9 (b5 ), S12 (b5 ), F13 (b3 ), M14 (b2 ), b1 , b4 Z n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade verbesserte Laufzeit mit Kosten (3:78) Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Beweis Laufzeit: Für jedes Paar a, b ∈ A × B wird höchstens eine Anfrage gemacht. Korrektheit (Matching ist perfekt): Jedes Element aus B bleibt in ∪e∈M e, wenn es einmal aufgenommen wurde. Falls am Ende ein Paar a, b 6∈ ∪e∈M e, dann hat a nie eine Anfrage an b gemacht, Widerspruch. Korrektheit (Matching ist stabil): Angenommen (a, b) sind unzufrieden: (a, b) 6∈ M und (a, b 0 ) ∈ M, (a0 , b) ∈ M mit: b <La (B) b 0 und a <Lb (A) a0 . Falls a nie bei b angefragt hat (aber wohl bei b 0 ), gilt b 0 <La (B) b (Widerspruch). Falls a vor a0 bei b angefragt hat, gilt a =Lb (B) a0 (Widerspruch). Falls a nach a0 bei b angefragt hat, hätte a a0 verdrängt (Widerspruch). Z n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade (3:79) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Literatur Cormen, Leiserson, Rives: Introduction to Algorithms, First Edition, MIT Press, 1990. Cormen, Leiserson, Rives: Introduction to Algorithms, Second Edition, MIT Press, 2001. Ottmann, Widmayer: Algorithmen und Datenstrukturen. BI-Wiss.-Verl. 1990. Z n Einleitung mit Flüssen Stabile Paarungen Altern. Pfade (3:80) verbesserte Laufzeit mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 SS2014 Fragen(Matching) Wie kann man das bipartite Matching mit Flussalgorithmen lösen? Welche Laufzeiten haben die verschiedenen Matchingprobleme? Welcher Zusammenhang besteht zwischen verbessernden Pfaden und einem maximum Matching? √ Wie ist die Vorgehensweise, um eine Laufzeit von O(m n) für das Matchingproblem zu erhalten? Wie ist die Vorgehensweise, um das Matching auf allgemeinen Graphen zu bestimmen? Z x Einleitung mit Flüssen Stabile Paarungen Altern. Pfade verbesserte Laufzeit (3:81) mit Kosten Blüten Zwei Anwendungen <> Walter Unger 17.1.2015 17:56 Legende n : Nicht relevant g : Grundlagen, die implizit genutzt werden i : Idee des Beweises oder des Vorgehens s : Struktur des Beweises oder des Vorgehens w : Vollständiges Wissen SS2014 Z x