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