Kombinatorische Optimierung - Juniorprof. Dr. Henning

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 2
Programm des Tages:
Matchings in bipartiten Graphen
Halls Theorem
Satz von König und Egerváry
Berechnen größtmöglicher Matchings
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
Strukturaussagen
Berechnung eines größtmöglichen Matchings
3
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Wiederholung
Anwendung: Finde möglichst viele Single-Paare!
Definition
Ein Matching M ist eine Teilmenge von E, bei der keine zwei Kanten
einen Knoten gemeinsam haben
Lemma
Ein Matching M ist ein größtmögliches Matching in einem Graphen
G = (V1 ∪ V2 , E ) genau dann, wenn G keinen M-augmentierenden Pfad
enthält.
4
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Halls Theorem
Theorem (von Hall)
Sei G = (V1 ∪ V2 , E ) ein bipartiter Graph.
In G existiert ein Matching M, das jeden Knoten von V1 saturiert, genau
dann, wenn |N (S )| ≥ |S | für alle S ⊆ V1 .
Beweis.
Siehe Tafel.
Bemerkung
Mit Halls Theorem lässt sich leicht nachweisen, falls ein bipartiter Graph
G = (V1 ∪ V2 , E ) kein Matching hat, das V1 saturiert.
Dazu zeigt man einfach die Existenz einer Teilmenge von V1 mit zu
wenigen Nachbarn in V2 .
5
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Abbildung zum Beweis von Halls
Theorem
6
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Heiratsproblem
|V1 | = |V2 | ⇒ Halls Theorem wird zum Heiratsproblem.
Sei in der Singlebörse jeder Mann zu k Frauen kompatibel und
umgekehrt.
Corollary
Für k > 0 hat jeder k -reguläre bipartite Graph ein perfektes Matching.
Beweis.
Siehe Tafel.
7
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Knotenüberdeckungen
Definition
Eine Knotenüberdeckung eines Graphen G = (V , E ) ist eine Menge
Q ⊆ V , so dass jede Kante aus E inzident zu mindestens einem Knoten
aus Q ist.
Eine minimale Knotenüberdeckung ist eine Knotenüberdeckung mit
minimaler Anzahl von Knoten unter allen Knotenüberdeckungen.
Abbildung: Verschiedene Knotenüberdeckungen für P3 .
Abbildung: Minimale Knotenüberdeckung für einen bipartiten Graphen.
8
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Satz von König und Egerváry
Minimale Knotenüberdeckungen und größtmögliche Matchings
Theorem (von König und Egerváry)
Sei G = (V1 ∪ V2 , E ) ein bipartiter Graph.
Ferner sei M ein größtmögliches Matching und Q eine minimale
Knotenüberdeckung in G.
Dann gilt: |Q | = |M |.
Beweis.
Siehe Tafel.
9
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Abbildung zum Satz von König und
Egerváry
10
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Inhalt
Matchings in Graphen
Matchings in bipartiten Graphen
Strukturaussagen
Berechnung eines größtmöglichen Matchings
11
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.
12
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Finden augmentierender Pfade
Corollary
Sei M ein Matching in einem bipartiten Graphen G.
Ferner sei M = M1 , M2 , ..., Mk eine Sequenz von Matchings, wobei Mi +1
aus Mi durch einen Mi -augmentierenden Pfad erzeugt wird, für alle
i = 1, ..., k − 1.
Sollte für einen Knoten u kein M-augmentierender Pfad existieren, dann
gibt es auch keinen Mi -augmentierenden Pfad mit u als Endknoten
(i = 1, ..., k − 1).
Beweis.
Kontraposition von Theorem 8.
13
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Generischer Algorithmus
Algorithm 1 Berechnung eines größtmöglichen Matchings
1: function M AXIMUM M ATCHING (Graph G, initiales Matching M)
2:
repeat
3:
suche augmentierenden Pfad P
4:
if augmentierender Pfad P wurde gefunden then
5:
augmentiere M entlang P
6:
end if
7:
until keinen augmentierenden Pfad gefunden
8:
return größtmögliches Matching M
14
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (1)
Aufgabe:
Bei Eingabe G = (V1 ∪ V2 , E ) größtmögliches Matching berechnen.
Sei M initiales Matching. Falls M kein größtmögliches Matching ist,
gibt es eine Sequenz M = M1 , . . . , Mk , so dass
Mk größtmögliches Matching ist,
Mi +1 aus Mi mit Hilfe eines Mi -augmentierenden Pfades erzeugt wird.
Beispiel: Siehe Tafel.
15
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (2)
⇒ Wir wählen einen Knoten v , der bzgl. M unsaturiert ist, und
bestimmen, ob es einen M-augmentierenden Pfad P gibt, in dem v
der Endknoten ist.
P gefunden ⇒ M zu M 0 erweitern ⇒ größeres Matching.
v ist kein Endpunkt von irgendeinem M-augmentierenden Pfad
⇒ v hat in einem größtmöglichen Matching Mk ,
das durch Augmentieren des Matchings M entsteht,
keinen Matchingpartner (gemäß obiger Folgerung 9).
16
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (3)
Alternierender Baum
Sei v ein unsaturierter Knoten bzgl. M.
Mit BFS konstruieren wir einen Baum mit Wurzel v derart, dass alle
von v ausgehenden Wege bzgl. M alternieren.
Falls es einen M-augmentierenden Pfad mit v als Endknoten gibt,
lässt sich diese Information aus der Konstruktion des alternierenden
Baumes ableiten.
Falls es einen unsaturierten Nachbarn u von v gibt, dann haben wir den
M-augmentierenden Pfad hv , u i gefunden.
In dem Fall augmentieren wir M entsprechend.
Andernfalls sind alle Nachbarn von v saturiert.
17
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (4)
Alternierender Baum
Der alternierende Baum wird dann folgendermaßen konstruiert:
v wird als Wurzel in Ebene 0 und seine Nachbarn (das seien die
Knoten u1 , u2 , . . . , uk ) in Ebene 1 platziert. Wir verbinden dann v mit
den Knoten ui , 1 ≤ i ≤ k .
Sei (ui , vi ) ∈ M für 1 ≤ i ≤ k . Die Knoten v1 , v2 , . . . , vk werden in
Ebene 2 platziert und ui mit vi verbunden (1 ≤ i ≤ k ).
Abbildung: Konstruktion eines alternierenden Baumes
18
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus-Idee (5)
Alternierender Baum
Annahme: Alternierender Baum T wurde bis Ebene m konstruiert (m
gerade) und kein augmentierender Pfad mit v wurde gefunden.
Fortsetzung:
Für jeden Knoten x auf Ebene m von
T wird jeder Nachbar y von x
untersucht:
Gehört y schon zu T ?
J: Nichts unternehmen.
N: Zwei Fälle (siehe Abb. 3):
y ist saturiert, sei (y , z ) ∈ M: y und
z werden auf den Ebenen m + 1 und
m + 2 des Baumes eingefügt, x mit y
verbunden und y mit z.
y ist unsaturiert: Augmentierender
v − y -Pfad wurde erkannt.
19
Henning Meyerhenke:
Kombinatorische Optimierung
Abbildung: Konstruktion eines
alternierenden Baumes
Institut für Theoretische Informatik
Paralleles Rechnen
Algorithmus
Algorithm 2 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
20
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsfunktion (1)
Algorithm 3 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
21
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Hilfsfunktion (2)
Algorithm 4 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 ∅
22
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Analyse des Algorithmus
Zeitkomplexität des gesamten Algorithmus
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 |)
23
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Analyse des Algorithmus
Zeitkomplexität des gesamten Algorithmus
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
23
Henning Meyerhenke:
Kombinatorische Optimierung
Institut für Theoretische Informatik
Paralleles Rechnen
Herunterladen