Matchings (Paarungen) in Graphen PS Algorithmen auf Graphen SS `06 Steven Birr 1 Gliederung 1) Definitionen und Beispiele 2) Algorithmus des maximalen Matchings 3) Das Personal-Zuteilungsproblem Ungarischer Algorithmus 4) Zusammenfassung 2 1) Definition: Matching Geg: G = Graph V=V(G) = Knotenmenge E=E(G) = Kantenmenge Matching M: Untermenge M von E heißt Matching von G, wenn keine 2 Kanten aus M adjazent sind Oder: Keine 2 Kanten aus M haben einen gemeinsamen Endknoten 3 1) Beispiel 1 für ein Matching b M1 = {e1,e2) e1 a c e2 f d e 4 1) Beispiel 2 für ein Matching b M1 = {e1,e3,e4) e1 a c e3 d f e4 e 5 1) Definition: M-gesättigt v ist Endknoten einer Kante in dem Matching M v ist M-gesättigt b e sonst: M-ungesättigt 1 a c e2 f d e 6 1) Definition: Perfektes Matching Wenn jeder Knoten eines Matchings Mgesättigt ist Perfektes Matching b e1 a c e3 d f e4 e 7 1) Definition: Maximales Matching Matching M heißt maximal, wenn G kein Matching M‘ enthält, das eine größere Anzahl von Kanten als M hat. 8 1) Definition: M-alternierender Weg Geg.: Matching M in G Kantenmenge E = E(G) M-alternierender Weg in G: Weg, dessen Kanten abwechselnd zu M und E\M gehören 9 1) Bsp. für M-alternierender Weg v1 a e1 e3 e9 v2 v4 e11 v3 e5 e4 e7 e10 e2 e6 e8 v5 v6 e12 v7 Matching M = {e3, e5, e6} M-alternierender Weg = {v1, v4, v2, v5, v6, v3} 10 1) Definition: M-erweiternder Weg M-erweiterender Weg: Anfangs- und Endknoten sind M-ungesättigt v1 a e1 e4 v6 e2 v3 e6 e5 e9 e8 v5 v2 e3 v4 e7 e10 v7 v8 Matching M = {e4, e6, e7} M-erweiternder Weg = {v5, v6, v1, v2, v7, v8, v3, v4} 11 1) Beispiel aus der Praxis Immobilienmakler: verschiedene Häuser Verschiedene Kaufinteressenten, die sich evtl. für mehr als 1 Haus interessieren Makler verdient an jedem Geschäftsabschluss eine Provision Gewinnmaximierung durch Matching 12 1) Beispiel aus der Praxis G: Graph mit Knotenmenge K für Käufer und H für Häuser Bei Kaufinteresse Kante zwischen Hausund Käuferknoten Jede Kante bekommt eine Bewertung (Provision) 13 1) Beispiel aus der Praxis H1 3 K1 H2 1 K2 4 2 K3 H3 1 3 8 K4 K5 14 1) Beispiel aus der Praxis H1 3 K1 H2 1 K2 4 2 K3 H3 1 3 8 K4 K5 15 1) Beispiel aus der Praxis H1 3 K1 H2 4 K2 H3 8 K3 K4 K5 Käufer 1 kauft Haus 1 Käufer 2 kauft Haus 2 Käufer 4 kauft Haus 3 Maximaler Gewinn für Makler durch maximales Matching 16 2) Algorithmus: Maximales Matching Geg.: Beliebiges Matching M in G Alle Kanten in M: dunkle Kanten Alle Kanten in E\M: helle Kanten P = M-erweiternder Weg (D.h. erste und letzte Kante von P ist hell) m dunkle Kanten, m+1 helle Kanten 17 2) Algorithmus: Maximales Matching Idee: Neues Matching M‘ durch Umfärben entwickeln M‘-Entwicklung: Alle dunklen Kanten in P ersetzen durch die m+1 hellen Kanten in P M‘ ist neues Matching (eine Kante mehr) 18 2) Algorithmus: Maximales Matching v1 a e1 e4 e2 v6 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 M = {e4, e6, e7} P = {v5, v6, v1, v2, v7, v8, v3, v4} 19 2) Algorithmus: Maximales Matching v1 a e1 e4 v6 e2 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 e8 rot, e4 schwarz 20 2) Algorithmus: Maximales Matching v1 a e1 e4 v6 e2 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 e1 rot, e6 schwarz 21 2) Algorithmus: Maximales Matching v1 a e1 e4 v6 e2 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 e10 rot, e7 schwarz 22 2) Algorithmus: Maximales Matching v1 a e1 e4 v6 e2 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 e3 rot 23 2) Algorithmus: Maximales Matching v1 a e1 e4 v6 e2 v3 e6 e5 e3 v4 e7 e10 e9 e8 v5 v2 v7 v8 Algorithmus beendet Maximales Matching M‘ = {e8, e1, e10, e3} 24 3) Das Personal-Zuteilungsproblem Geg.: Paarer Graph G mit V(G) = X U Y Menge X = {x1, ... ,xn} := Lehrer Menge Y = {y1, ..., yn} := Klassen Bei Qualifikation von xi Kante zu yi Ziel: Matching in G, sodass jedes xi gesättigt wird Realisierung durch Ungarischen Algorithmus 25 3) Ungarischer Algorithmus Ungarische Mathematiker D.König und J.Egerváry Benötigt werden: Graph G mit 2 Teilmengen X und Y Matching M in G M-alternierender Baum mit Wurzel x0 Um M-erweiternden Weg zu erkennen 26 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Matching M = {a1-b2; a3-b3; a5-b4, a6-b7} 27 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Knotenmenge S: Aktueller und besuchte Knoten in X Knotenmenge N(S): Nachbarknoten von Knoten in X Knotenmenge T: besuchte Nachbarknoten in Y 28 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a2 (1): Beginne mit Matching M (gestrichelt) (2): x0 = a2 ist M-ungesättigt in X Setze S = {a2} und T = Ø 29 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 b2 a2 (3): N(S) = {b2, b3} (4): y = b2 ist M-gesättigt S = {a1, a2} ; T = {b2} 30 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a3 b2 b3 a2 (5): N(S) = {b2, b3} (6): y = b3 ist M-gesättigt S = {a1, a2, a3 } ; T = {b2, b3} 31 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b1 a1 a3 b2 b3 a2 (7): N(S) = {b1, b2, b3, b4, b5, b6} (8): y = b1 ist M-ungesättigt Jetzt: M-erweiternder Weg P ermitteln und umfärben 32 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b1 a1 a3 b2 b3 a2 (9): P = {a2, b3, a3, b1} Umfärbung entlang P 33 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b1 a1 a3 b2 b3 a2 Nach Umfärbung entsteht neues größeres Matching M 34 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: (1): x0 = a4 ist M-ungesättigt in X Setze S = {a4} und T = Ø a4 35 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 b2 a4 (2): N(S) = {b2, b3, b4, b7} (3): y = b2 ist M-gesättigt S = {a1, a4} ; T = {b2} 36 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a2 b2 b3 a4 (3): N(S) = {b2, b3, b4, b7} (4): y = b3 ist M-gesättigt S = {a1, a2, a4} ; T = {b2, b3} 37 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a2 a5 b2 b3 b4 a4 (5): N(S) = {b2, b3, b4, b7} (6): y = b4 ist M-gesättigt S = {a1, a2, a4, a5} ; T = {b2, b3, b4} 38 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b6 a1 a2 a5 b2 b3 b4 a4 (7): B6 in N(S) (8): N(S) = {b2, b3, b4, b6, b7} (9): y = b6 ist M-ungesättigt 39 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b6 a1 a2 a5 b2 b3 b4 a4 Jetzt: M-erweiternder Weg P ermitteln und umfärben 40 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b6 a1 a2 a5 b2 b3 b4 a4 (10): P = {a4, b4, a5, b6} Umfärbung entlang P 41 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: b6 a1 a2 a5 b2 b3 b4 a4 Nach Umfärbung entsteht neues größeres Matching M 42 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a7 (1): x0 = a7 ist M-ungesättigt in X Setze S = {a7} und T = Ø 43 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 b2 a7 (2): N(S) = {b2, b3} (3): y = b2 ist M-gesättigt S = {a1, a7} ; T = {b2} 44 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a2 b2 b3 a7 (4): N(S) = {b2, b3} (5): y = b3 ist M-gesättigt S = {a1, a2, a7} ; T = {b2, b3} 45 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a2 b2 b3 a7 (6): N(S) = {b2, b3} = T = {b2, b3} Algorithmus beendet 46 3) Ungarischer Algorithmus a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 Baum B: a1 a2 b2 b3 a7 G beinhaltet kein Matching, durch das jeder Knoten in X gesättigt wird 47 4) Zusammenfassung Matching M: Untermenge M von E heißt Matching von G, wenn keine 2 Kanten aus M adjazent sind Wozu Matchings? Personal-Zuteilungs-Problem Algorithmen: Maximales Matching Ungarischer Algorithmus 48 Fragen? 49