Kap. 1.2: Matching ff Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 3. VO 30. Oktober 2006 Überblick • Organisatorisches: Prüfungen / Übungen • Perfektes Matching für bipartite Graphen • Perfektes Matching für Graphen • Maximum Matching 2 Prüfungselemente • Mündliche Fachprüfung: – Über VO 2 inkl Ü 2: 6LP – Anforderungen: • Zusammenhänge des Gebiets • Spezielle Fragestellungen einordnen und bearbeiten NEU: • (ich hätte gerne: „regelmäßige aktive Mitarbeit in Übungen“, darf ich aber nicht fordern) • Mündliche Prüfung: Stoff der VO und Ü, 20 Minuten 3 Prüfungselemente • Leistungsnachweis: – Über VO 2 inkl. Ü 2: 6LP – Anforderungen: • Regelmäßige aktive Mitarbeit in Übungen • Mündliche Prüfung (in einer Art NEU: Fachgespräch): 15 Minuten 4 Ablauf der Übungen • normale Übungsaufgaben: – von allen bearbeitet – in der Übung besprochen • Projektaufgaben – einer Ü-Gruppe (2-3 Stud.) zugeordnet – diese macht ca 20-min. Präsentation der Ergebnisse (alle Gruppenmitglieder müssen präsentieren) – Notebook-Präsentation (pdf oder PowerPoint/OpenOffice o.ä.) wünschenswert 1. Übungsblatt: Wer macht 1. Projektaufgabe? Di? / Do? Bitte Gruppeneinteilung markieren 5 Alternierende Bäume 2 Mengen bzgl. Knoten r (Wurzel): • A = {Knoten v mit ungerader Weglänge (r,v)} • B = {Knoten v mit gerader Weglänge (r,v)} Regel für Aufbau: (1) A:=∅, B:={r} (2) Falls vw∈E mit v∈B, w∉A∪B, wz∈M existiert, (3) dann: Addiere w zu A und z zu B. z war vorher nicht in T Idee: Falls vw∈E mit v∈B, w∉A∪B und w M-exponiert, dann: M-augmentierender Weg gefunden! 6 Eigenschaften alternierender Bäume T: Alternierende Bäume • Jeder Knoten in T\{r} ist überdeckt durch Kante 2 Mengen bzgl. Knoten r (Wurzel): in M∩E(T) A = jeden {Knoten v mit vungerader Weglänge (r,v)} •• Für Knoten in T gilt: der eindeutige Weg • B = {Knoten gerader Weglänge (r,v)} von v nach r vistmit M-alternierend. Regel für Aufbau: (1) A:=∅, B:={r} (2) Falls vw∈E mit v∈B, w∉A∪B, wz∈M existiert, (3) dann: Addiere w zu A und z zu B. z war vorher nicht in T Idee: Falls vw∈E mit v∈B, w∉A∪B und w M-exponiert, dann: M-augmentierender Weg gefunden! 7 1.2.1 Perfekter Matchingalgorithmus für Bipartite Graphen (1) Setze M:=∅, wähle M-exp. Knoten r, T=({r},∅) (2) Solange eine Kante vw∈E exist. mit v∈B(T), w∉V(T): (3) Falls w ist M-exponiert, dann: (4) Augmentiere M durch Weg (r,w) (5) Falls kein M-exp. Knoten mehr existiert, dann: (6) → Return „Perfektes Matching“, STOP (7) Sonst Ersetze T durch ({r},∅), r ist neuer M-exp. Knoten (8) Sonst Erweitere T durch Kanten (v,w) und (w,z) (9) STOP; G besitzt kein Perfektes Matching. 8 Analyse des Matchingalgorithmus für Bipartite Graphen: Korrektheit • • • • • • • Lemma: G sei bipartit, M ist Matching in G, T≠∅ sei M-alternierender Baum, und es gibt keine Kante in E der Form (v,w) mit v∈B(T) und w∉V(T). Dann gilt: G besitzt kein Perfektes Matching. Beweis: Aus Vorauss. folgt: Für alle Kanten (v,w) in G mit v∈B(T) gilt: w∈A(T) („T frustriert“) [denn: alle Kanten enden in T aber nicht in B, denn sonst: ungerader Kreis] Betrachte: G \ A(T): enthält die einzelnen Knoten aus B jedes Element in B muss gematched werden, aber es gibt keine anderen Kanten von B außer zu A aber |A(T)| < |B(T)| [denn: 1. Knoten ist in B und letzter] 9 ⇒ B kann nicht perfekt gematched werden Problem für nicht-bipartite Graphen B A a B B A B e g i k f h j l c r b A d m M E\M Blossom: „ungerader Kreis“ C: augmentierender Weg von r nach m wird nicht gefunden Idee: Jack Edmonds: „Eureka, you …“ shrink“ 10 11 12 Jack Edmonds 13 Problem für nicht-bipartite Graphen B A a B M E\M B A B e g i k f h j l c r b A d m Kontrahiere C in G: G´=GxC Welche Kreise kontrahieren? Es existiert Kante (v,w) mit v,w∈B(T) ⇒ bildet ungerader Kreis mit Kanten in T 14 Problem für nicht-bipartite Graphen B A a B M E\M B A B e g i k f h j l c r b A d m Kontrahiere C in G: G´=GxC Welche Kreise kontrahieren? Es existiert Kante (v,w) mit v,w∈B(T) ⇒ bildet ungerader Kreis mit Kanten in T 15 Beobachtung B A a B M E\M B A B e g i k f h j l c r b A d m Kontrahiere C in G: G´=GxC • • • M Matching in G → Matching M´ in G´ T M-alternierend → T´ M´-alternierend in G´ C → Knoten c, c∈B(T) 16 Beziehung zwischen M und M´ B A a B M E\M B A B e g i k f h j l c r b A d m Kontrahiere C in G: G´=GxC Lemma: Zu jedem Matching M´ in G´ existiert ein Matching M in G mit M⊆M´∪E(C); die Anzahl der M-exponierten Knoten in G ist gleich der Anzahl der M´-exponierten Knoten in G´. 17 Beziehung zwischen M und M´ B A B c a M E\M B A B e g i k f h j l c w r b A d m Kontrahiere C in G: G´=GxC Bw.: Falls c M´-überdeckt ist (von e), sei w der Endknoten von e in C; sonst: wähle w beliebig aus V(C). Entferne w aus C ⇒ C\{w} besitzt perfektes Matching M´´ ⇒ M:=M´υM´´ erfüllt die Bedingung. 18 Beziehung zwischen M und M´ B A a B B A B e w g i k xf vh j l c r b A d m Lemma: G´ enthält augmentierenden Weg ⇔ G enthält augmentierenden Weg. Bw.: „⇐“: Ann.: G enthält augm. Weg 1.Fall: Augm. Weg verläßt Blossom C in Knoten x in Menge B: ⇒ Weglänge von b nach x ist gerade 2.Fall: Augm. Weg verläßt C in x in Menge A:⇒ Weg läuft über (w,v)-Weg ⇒ Weglänge von b nach x über (w,v) ist gerade 19 Problem für nicht-bipartite Graphen B A a B c B A B e g i k f h j l yc r b A d m Lemma: G´ enthält augmentierenden Weg ⇔ G enthält augmentierenden Weg. Bw.: „⇒“: Ann.: G´ enthält augm. Weg: erweitere ihn zu Weg in G: Es ex. genau eine Kante in M´ inzident zu c ⇒ entspricht genau ein Knoten y in G, der zu M inzident ist ⇒ Entferne y 20 ⇒ Matche C-{y} perfekt Blüten-Schrumpf-Algorithmus f. Perf. Match. (1) Sei M´=M (M bel. Matching), G´=G (2) Wähle M-exp. Knoten r von G´ und T=({r},∅) (3) Solange ein vw∈E´ exist. mit v∈B(T), w∉A(T): (4) Falls w ist M´-exponiert, dann: (5) Augmentiere M´ durch Weg (w,r) (6) Erweitere M´ zu Matching M (7) Ersetze M´ durch M, G´ durch G (8) Falls kein M´-exp. Knoten in G´ existiert, dann: (9) → Return „M´ ist Perfektes Matching“, STOP (10) Sonst Ersetze T durch ({r},∅), r ist neuer M´-exp. Knoten (11) Falls w∉V(T), w ist M´-überdeckt: Erweitere T durch vw (12) Falls w∈B(T): Schrumpfe ungeraden Kreis von vw, aktualisiere M´ und T 21 (13) STOP; G besitzt kein Perfektes Matching. Bsp. mit Doppel-blüte („nested blossoms“) B A B C1 r a u A B A B A B e vg i l o q f w h j m p s k n xc u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 22 Bsp. mit Doppel-blüte („nested blossoms“) B r A a B c u A B A B i vl o q j w m p s k n C2 u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 v∈B(T), w∉A(T), w∈B(T) ⇒ schrumpfe C2 23 Bsp. mit Doppel-blüte („nested blossoms“) B r A a B c2 A u B A B o q p s C2 k n u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 v∈B(T), w∉A(T), w∈B(T) ⇒ schrumpfe C2 ⇒ v∈B(T), u∉A(T): (u´s Nachbar rutschte dadurch nach B), u: M´-exp. ⇒ „Augment“ 24 Bsp. mit Doppel-blüte („nested blossoms“) B r A a B c2 A u B A B o q p s C2 k n u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 v∈B(T), w∉A(T), w∈B(T) ⇒ schrumpfe C2 ⇒ v∈B(T), u∉A(T): (u´s Nachbar rutschte dadurch nach B), u: M´-exp. ⇒ „Augment“ 25 Bsp. mit Doppel-blüte („nested blossoms“) B r A a B c u A B A B i vl o q j w m p s k n C2 u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 v∈B(T), w∉A(T), w∈B(T) ⇒ schrumpfe C2 ⇒ v∈B(T), u∉A(T): (u´s Nachbar rutschte dadurch nach B), u: M´-exp. ⇒ „Augment“ 26 Bsp. mit Doppel-blüte („nested blossoms“) B r A a B u A B A B e g i vl o q f h j w m p s k n c u: exponiert, aber wird nicht gefunden, da v∈B(T) und w∈A(T) v∈B(T), w∉A(T), w ist nicht M´-exp., aber w∈B(T) ⇒ schrumpfe C1 v∈B(T), w∉A(T), w∈B(T) ⇒ schrumpfe C2 ⇒ v∈B(T), u∉A(T): (u´s Nachbar rutschte dadurch nach B), u: M´-exp. ⇒ „Augment“ 27 Analyse: Terminierung Lemma: Der Blüten-Schrumpf-Algorithmus terminiert nach O(n) Augmentierungen nach maximal O(n2) Schrumpfungsoperationen und O(n2) Baum-Erweiterungsschritten. Bw.: M´ ist immer Matching • Jede Augmentierung vermindert die M´-exp. Knoten • ⇒ enthält max. O(n) Augmentierungen • ⇒ jeder Schrumpfungsschritt vermindert die Knotenanzahl in G´, die Anzahl der Knoten nicht in T´ bleibt gleich • ⇒ jeder Baumerweiterungsschritt vermindert die Knotenanzahl nicht in T, die Anzahl der Knoten in G´ bleibt gleich • ⇒ max. O(n) Schrumpf-/Erweiterungsschritte zwischen den Augmentierungen 28 • ⇒ insgesamt: O(n2) Schrumpf-/Erweiterungsschritte Analyse: Korrektheit Lemma: Der Algorithmus ist korrekt! Bw.: klar: wenn kein M´-exp. Knoten existiert ⇒ perfektes Matching gefunden Ann.: es ex. M´-exp. Knoten, aber es ex. kein vw∈E´ mit v∈B(T), w∉A(T) • ⇒ für alle Kanten vw∈E´ mit v∈B(T) gilt w∈A(T) • ⇒ w ist kein Pseudoknoten (denn alle geschrumpften Knoten sind in B(T)) ⇒ entferne A(T) von G ⇒ für jeden Knoten v∈B(T) erhalten wir eine Komponente mit Originalknotenmenge S(v) ⇒ alle ungerade (B´s sind nicht verbunden untereinander) • ⇒ Anzahl ungerader Komponenten von G\A(T) > |A(T)| • ⇒ G besitzt kein perfektes Matching! 29 Blüten-Schrumpf Algorithmus für Maximum Matching 1. 2. Wende Algorithmus für Perfektes Matching an Falls Perfektes Matching gefunden → auch Maximum Matching 3. Sonst: 1. Entferne V(T) aus G´ [Denn: es ex. kein augm. Weg zu r] 2. Wende Algorithmus auf nächsten M´-exp. Knoten an Bw.: Ann.: k Mal gestartet: mit M´-exp. Knoten. Seien T1,…,Tk die frustrierten Bäume, jeder Baum Ti hat genau einen M´-exp. Knoten (Wurzel ri) ⇒ Matching am Ende besitzt genau k Mexp. Knoten. Sei A=υA(Ti) ⇒ Entferne A aus G: jeder Knoten von B(Ti) ergibt eine ungerade Komponente, die Anzahl der ungeraden Komponenten von G\A ist ≥ |A| +k (gilt sogar „=„) ⇒ M ist Maximum Matching von G ⇒ für alle Kanten vw∈E´ 30 mit v∈B(T) gilt w∈A(T) Blüten-Schrumpf Algorithmus für Maximum Matching 1. 2. Wende Algorithmus für Perfektes Matching an Falls Perfektes Matching gefunden → auch Maximum Matching 3. Sonst: 1. Entferne V(T) aus G´ [Denn: es ex. kein augm. Weg zu r] 2. Wende Algorithmus auf nächsten M´-exp. Knoten an Beachte: Es kann nicht sein, dass durch das Entfernen von V(Ti) ein augmentierender Weg von anderen Startknoten zerstört wird. Denn: Sonst müßte dieser augmentierende Weg P mit NichtMatching-Kanten auf Ti treffen sowie Ti verlassen. Die Anzahl der Kanten aus P∩Ti ist also ungerade. Somit hätte man auch einen augmentierenden Weg von ri aus gefunden. 31 Tutte´s Matching Theorem, 1947 Theorem: Ein Graph G=(V,E) besitzt ein Perfektes Matching ⇔ Für jede Teilmenge A von Knoten gilt: oc(G\A) ≤ |A| Bw.: „⇒“: G besitzt Perfektes Matching Indirekt: es ex. A mit oc(G\A) > |A| ⇒ Argumentation wie immer (s. Alg.) ⇒ es ex. kein Perfektes Matching. „⇐“: Für alle A gilt: oc(G\A) ≤ |A| Indirekt: G besitzt kein Perfektes Matching ⇒ Algorithmus bleibt stecken, d.h. für alle Kanten vw∈E mit v∈B(T) gilt: w∈A(T) Betrachte: G \ A: ⇒ oc(G\A) > |A| (wegen Baum) für diese A. 32 Analyse: Laufzeit Lemma: Der Algorithmus terminiert nach O(n) Augmentierungen, nach maximal O(n2) Schrumpfungsoperationen, nach O(n2) BaumErweiterungsschritten. Lemma: Ein Augmentierungsschritt kann in Zeit O(m log n) realisiert werden. Damit erhält man als Laufzeit für den Algorithmus O(nm log n). Bw.: Idee: nicht explizite Graph-Schrumpfung, sondern implizite Repräsentation der Menge B ⇒ Übung Bem.: Micali und Vazirani, 1980: O(√n m): Idee: finde kürzeste augmentierende Wege, davon jeweils viele 33