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