Kombinatorische Optimierung

Werbung
Kombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke
Institut für Theoretische Informatik – Paralleles Rechnen
1
KIT –Henning
Universität desMeyerhenke:
Landes Baden-Württemberg und
nationales
Forschungszentrum in
der Helmholtz-Gemeinschaft
Kombinatorische
Optimierung
Institut für Theoretische Informatik
www.kit.edu
Paralleles
Rechnen
Vorlesung 3
Programm des Tages:
Matchings in bipartiten Graphen
Berechnen größtmöglicher Matchings
Berechnen von Matchings mit maximalem Gewicht
Zusätzliche Literatur:
D. West: Introduction to Graph Theory.
G. Chartrand, O.R. Oellermann: Applied and algorithmic graph theory.
2
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Matchings in Graphen
Matchings in bipartiten Graphen
Berechnung eines größtmöglichen Matchings
Berechnung eines Matchings mit maximalem Gewicht
3
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Wiederholung
Halls Theorem, Heiratsproblem
Satz von König und Egerváry
Algorithmus zur Berechnung
größtmöglicher Matchings
Start an einem sog. “Wurzelknoten”
Alternierenden Baum mit BFS
erstellen
Wenn augmentierender Pfad
gefunden, dann Matching vergrößern
4
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus
Algorithm 1 Berechnung eines größtmöglichen Matchings
1: function M AXIMUM M ATCHING (bipartiter Graph G = (V1 ∪ V2 , E ),
initiales Matching M1 )
. Sei |V1 | ≤ |V2 |
2:
M = M1
3:
while unsat. Knoten v ∈ V1 existiert, der noch nicht Wurzel war do
4:
Markiere v als aktuelle Wurzel
5:
P = AUGMENTING PATH I N T REE(G, M, v )
6:
if |P | > 0 then
7:
Augmentiere M entlang P
8:
end if
9:
end while
10:
return M
. M ist größtmögliches Matching
5
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsfunktion (1)
Algorithm 2 M-augmentierenden Pfad mit einem alternierenden Baum
berechnen (Teil 1)
1: function AUGMENTING PATH I N T REE(bip. Graph G = (V1 ∪ V2 , E ),
Matching M, Wurzelknoten v )
2:
tree(v) = true;
. Nur v ist initial im Baum
3:
for all u ∈ V1 ∪ V2 , u 6= v do
4:
tree(u) = false
5:
end for
6:
Q = {v };
. Queue Q für BFS
7:
while |Q | > 0 do
. BFS-ähnliche Suche
8:
x = D EQUEUE(Q)
9:
. Fortsetzung auf nächster Folie =0
6
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsfunktion (2)
Algorithm 3 M-augmentierenden Pfad mit einem alternierenden Baum
berechnen (Teil 2)
10:
for all y ∈ N (x ) do
11:
if not tree(y) then
12:
if ∃z mit (y , z ) ∈ M then
13:
tree(y) = tree(z) = true
14:
E NQUEUE(Q, z)
15:
parent(y) = x; parent(z) =y ;
16:
else
17:
return M-augm. Pfad P von v bis y
18:
end if
19:
end if
20:
end for
21:
end while
22:
return ∅
7
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Analyse des Algorithmus
Zeitkomplexität des gesamten Algorithmus
Beispiel: Siehe Tafel.
Erinnerung: |V2 | ≥ |V1 |
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Analyse des Algorithmus
Zeitkomplexität des gesamten Algorithmus
Beispiel: Siehe Tafel.
Erinnerung: |V2 | ≥ |V1 |
Konstruktion eines alternierenden Baumes: O(|E |).
Grund: BFS betrachtet jede Kante höchstens einmal.
Jeder augmentierende Pfad hat höchstens |E | Kanten
⇒ Konstruktion des Pfads in Zeit O(|E |)
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Analyse des Algorithmus
Zeitkomplexität des gesamten Algorithmus
Beispiel: Siehe Tafel.
Erinnerung: |V2 | ≥ |V1 |
Konstruktion eines alternierenden Baumes: O(|E |).
Grund: BFS betrachtet jede Kante höchstens einmal.
Jeder augmentierende Pfad hat höchstens |E | Kanten
⇒ Konstruktion des Pfads in Zeit O(|E |)
Jeder Knoten ist höchstens einmal Wurzel eines alternierenden
Baumes:
⇒ O(|V ||E |) Gesamtlaufzeit
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Korrektheit des Algorithmus
Siehe Übung.
9
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Theorem
Sei G = (V1 ∪ V2 , E ) ein bipartiter Graph und sei M ein Matching in G.
Falls es
einen M-augmentierenden Pfad gibt, der ein Matching M 0 mit
|M 0 | > |M | erzeugt, und
es einen Knoten u als Endknoten eines M 0 -augmentierenden Pfades
gibt,
dann gibt es auch einen M-augmentierenden Pfad mit u als Endknoten.
Beweis.
Siehe Tafel bzw. Übung.
10
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Beweisschritte
Kontraposition, Annahme des Gegenteils (Widerspruchsbeweis)
M1 sei durch Augmentieren von M entlang Q entstanden
Sei P ein M1 -augmentierender Pfad
P enthält Kante, die zu M1 − M gehört (warum?)
11
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Beweisschritte
Kontraposition, Annahme des Gegenteils (Widerspruchsbeweis)
M1 sei durch Augmentieren von M entlang Q entstanden
Sei P ein M1 -augmentierender Pfad
P enthält Kante, die zu M1 − M gehört (warum?)
Betrachte Kreuzung von P und Q
Versuche zu zeigen, dass jeweils ein Teil von P und Q einen
M-augmentierenden Pfad mit u als Endknoten bilden
11
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Matchings in Graphen
Matchings in bipartiten Graphen
Berechnung eines größtmöglichen Matchings
Berechnung eines Matchings mit maximalem Gewicht
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario 1
Verbesserung der Singlebörse
Kunden und Kundinnen dürfen angeben, wie gern sie Ihre Favoriten
haben.
Diese Priorität steht als Gewicht an den Kanten.
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario 1
Verbesserung der Singlebörse
Kunden und Kundinnen dürfen angeben, wie gern sie Ihre Favoriten
haben.
Diese Priorität steht als Gewicht an den Kanten.
Aufgabe: Finde gute Zuordnung, nämlich eine mit höchstem
Gesamtgewicht!
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario 2
Jobs und Arbeiter
Eine Fabrik hat n1 Maschinen und n2 Arbeiter.
Jeder Arbeiter hat eine bestimmte Produktivität an einer Maschine.
Die Produktivität ist 0, wenn der Arbeiter die Maschine nicht bedienen
kann.
14
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Szenario 2
Jobs und Arbeiter
Eine Fabrik hat n1 Maschinen und n2 Arbeiter.
Jeder Arbeiter hat eine bestimmte Produktivität an einer Maschine.
Die Produktivität ist 0, wenn der Arbeiter die Maschine nicht bedienen
kann.
Diese Produktivität steht als Gewicht an den Kanten.
Aufgabe: Finde Zuordnung mit höchster Gesamtproduktivität!
14
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Matchings mit maximalem Gewicht in
bipartiten Graphen
Definition
Das Gewicht eines Matchings M ist definiert als:
w (M ) =
∑
w (e )
e ∈M
Definition
Sei M ein Matching in einem Graphen G.
Wenn w (M ) ≥ w (M 0 ) für alle Matchings M 0 in G gilt, dann ist M ein
Matching maximalen Gewichts in G.
Englisch: Maximum weight matching
Abgekürzt: MWM
15
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Aufgabe und Transformation der
Eingabe
Aufgabe: Optimale Zuweisung (optimal assignment)
Gegeben: Gewichteter bipartiter Graph G = (V1 ∪ V2 , E )
Gesucht: MWM in G
Transformation:
G = (V1 ∪ V2 , E ) wird in vollständigen bipartiten Graphen
H = (U1 ∪ U2 , E 0 ) transformiert
|U1 | = |U2 | = max{|V1 |, |V2 |}, V1 ⊆ U1 , V2 ⊆ U2
Konstruktion von E 0 = U1 × U2 : Für x ∈ U1 und y ∈ U2 gilt:
(
wG (x , y ), falls {x , y } ∈ E
wH (x , y ) =
0
sonst
16
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Eigenschaften der transformierten
Eingabe
Beobachtung
Wir dürfen annehmen, dass ein Matching M perfekt im Graphen H ist,
falls es maximales Gewicht hat.
Einige Kanten von M können dabei das Gewicht 0 haben.
Beobachtung
Ist M ein MWM in H, so ist M ∩ E (G ) ein MWM in G.
17
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Eigenschaften der transformierten
Eingabe
Beobachtung
Wir dürfen annehmen, dass ein Matching M perfekt im Graphen H ist,
falls es maximales Gewicht hat.
Einige Kanten von M können dabei das Gewicht 0 haben.
Beobachtung
Ist M ein MWM in H, so ist M ∩ E (G ) ein MWM in G.
Corollary
In der Folge genügt es, vollständige bipartite Graphen zu betrachten.
Beobachtung
Alle |U1 |! perfekten Matchings zu produzieren und daraus eins mit
höchstem Gewicht zu wählen, wäre ineffizient.
17
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsmittel: Knotenmarkierungen
Definition
Sei G = (V1 ∪ V2 , E ) ein gewichteter bipartiter Graph mit
Gewichtsfunktion w, wobei |V1 | = |V2 |.
Eine Knotenmarkierung l ist eine reellwertige Funktion über der
Knotenmenge V1 ∪ V2 .
l (v ) wird Markierung des Knotens v genannt.
Definition
Eine Knotenmarkierung ist genau dann zulässig, wenn
l (u ) + l (v ) ≥ w (u , v )
für jede Kante (u , v ) ∈ E gilt.
18
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Zulässige Knotenmarkierungen
Beobachtung
Jeder gewichtete vollständige bipartite Graph hat eine zulässige
Knotenmarkierung l mit
l (v ) = max{w (v , u ) | u ∈ V2 } für alle v ∈ V1
und
l (u ) = 0 für alle u ∈ V2
Beispiel: Siehe Tafel.
19
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Kantenteilgraph und zulässige
Knotenmarkierungen
Definition
Ein Kantenteilgraph von G = (V , E ) ist ein Graph H = (V , E 0 ) mit
E 0 ⊆ E.
Sei der durch l induzierte ungewichtete Kantenteilgraph Hl von G
definiert als Hl = (V1 ∪ V2 , El ) mit
El = {(u , v ) | l (u ) + l (v ) = w (u , v )}.
Theorem
Sei l eine zulässige Knotenmarkierung von G = (V1 ∪ V2 , E ). Falls der
Graph Hl ein perfektes Matching M 0 enthält, dann ist M 0 ein MWM
(maximum weight matching) in G.
20
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (1)
Mit zulässiger Knotenmarkierung starten.
Den Kantenteilgraphen Hl konstruieren.
Unseren bekannten Algorithmus M AXIMUM M ATCHING auf Hl
anwenden.
Wird ein perfektes Matching in Hl gefunden, gibt es dazu ein MWM in
G.
Andernfalls liefert M AXIMUM M ATCHING ein nicht-perfektes Matching
M ∗.
21
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (2)
Nicht-perfektes Matching M ∗ bearbeiten
M ∗ -alternierenden Baum T konstruieren, dessen Wurzel ein
ungematchter Knoten x ist (mit AUGMENTING PATH I N T REE).
Baum T lässt sich nicht erweitern und hat keinen
M ∗ -augmentierenden Pfad.
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (2)
Nicht-perfektes Matching M ∗ bearbeiten
M ∗ -alternierenden Baum T konstruieren, dessen Wurzel ein
ungematchter Knoten x ist (mit AUGMENTING PATH I N T REE).
Baum T lässt sich nicht erweitern und hat keinen
M ∗ -augmentierenden Pfad.
Knotenmarkierung (KM) l verändern:
Neue zulässige KM l 0 erstellen.
l 0 so anpassen, dass M ∗ und T in Hl 0 enthalten sind.
Insbesondere gilt: Hl 0 enthält mindestens eine neue Kante von
V1 ∩ V (T ) nach V2 − V (T ).
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (2)
Nicht-perfektes Matching M ∗ bearbeiten
M ∗ -alternierenden Baum T konstruieren, dessen Wurzel ein
ungematchter Knoten x ist (mit AUGMENTING PATH I N T REE).
Baum T lässt sich nicht erweitern und hat keinen
M ∗ -augmentierenden Pfad.
Knotenmarkierung (KM) l verändern:
Neue zulässige KM l 0 erstellen.
l 0 so anpassen, dass M ∗ und T in Hl 0 enthalten sind.
Insbesondere gilt: Hl 0 enthält mindestens eine neue Kante von
V1 ∩ V (T ) nach V2 − V (T ).
Dann: Neuen M ∗ -alternierenden Baum in Hl 0 mit Wurzel x erstellen.
Wiederholen, bis augmentierender Pfad mit x als Endknoten
gefunden.
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Der Algorithmus von Kuhn und
Munkres
Algorithm 4 Berechnung eines Matchings mit maximalem Gewicht
1: function M AXIMUM W EIGHT M ATCHING (Vollst. bip. Graph G = (V1 ∪
V2 , E ), Gew.fkt. w)
. berechnet MWM M für G mit |V1 | = |V2 |
2:
for all v ∈ V1 do l (v ) = maxu ∈V2 w (v , u )
3:
end for
4:
for all u ∈ V2 do l (u ) = 0
5:
end for
. Inititale Knotenmarkierung fertig
6:
Sei Hl der von l induzierte Kantenteilgraph mit Kantenmenge El
7:
M = M AXIMUM M ATCHING(Hl , ∅)
8:
while ∃ Knoten x ∈ V1 , der in M nicht saturiert ist do
9:
[Hl , l, M] = H ANDLE U NSATURATED(Hl , l, M, x)
10:
end while
23
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Nicht-perfektes Matching behandeln
Algorithm 5 Unterfunktion zur Behandlung unsaturierter Knoten
1: function H ANDLE U NSATURATED(Spanngraph Hl , KM l, Matching M,
Wurzelknoten x)
2:
repeat
3:
[P, T] = F IND PATH I N T REE(Hl , M, x)
4:
if |P | > 0 then Augmentiere M entlang P
5:
else
6:
ml = min{l (v ) + l (u ) − w (u , v ) | v ∈ V1 ∩ T , u ∈ V2 \ T }
7:
l (v ) = l (v ) − ml für alle v ∈ V1 ∩ T
8:
l (u ) = l (u ) + ml für alle u ∈ V2 ∩ T
9:
Konstruiere neues Hl anhand von l
10:
end if
11:
until |P | > 0
12:
return [Hl , l, M]
24
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Herunterladen