Kombinatorische Optimierung

Ähnliche Dokumente
Kombinatorische Optimierung

Kombinatorische Optimierung

Algorithmische Methoden für schwere Optimierungsprobleme

Das Heiratsproblem. Definition Matching

WS 2008/09. Diskrete Strukturen

WS 2015/16 Diskrete Strukturen Kapitel 4: Graphen (Matchings)

Satz 324 Sei M wie oben. Dann gibt es für ein geeignetes k Konstanten c i > 0 und Permutationsmatrizen P i, i = 1,...

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Überblick. Kap. 1.4: Minimum Weight Perfect Matching. 1.3 Blüten-Schrumpf Algorithmus für Maximum Matching

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Matching. Organisatorisches. VL-18: Matching. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Tanzabend

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Kombinatorische Optimierung

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Das Briefträgerproblem

Algorithmische Methoden zur Netzwerkanalyse

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

WS 2013/14. Diskrete Strukturen

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 6: Matchings und TSP-Problem

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Bipartite Graphen. Beispiele

Graphen und Algorithmen

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

Laufzeit. Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V 1, V 2 }) mit der Ford Fulkerson Methode.

Algorithmische Methoden zur Netzwerkanalyse

Vorlesung 2 KÜRZESTE WEGE

Breitensuche BFS (Breadth First Search)

9. Übung Algorithmen I

Bäume und Wälder. Definition 1

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Studientag zur Algorithmischen Mathematik

Wiederholung zu Flüssen

Ausarbeitung über den Satz von Menger und den Satz von König

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Systems of Distinct Representatives

ADS: Algorithmen und Datenstrukturen 2

Effiziente Algorithmen I

Trennender Schnitt. Wie groß kann der Fluss in dem folgenden Flussnetzwerk höchstens sein?

FLÜSSE, SCHNITTE UND - TEIL 2 - BIPARTITE GRAPHEN. Vortrag im Seminar Hallo Welt Für Fortgeschrittene Dozenten: Werth, T. & Brinkers, D.

Algorithmische Bioinformatik 1

1.Aufgabe: Minimal aufspannender Baum

10. Übung Algorithmen I

Maximale s t-flüsse in Planaren Graphen

Algorithmische Methoden für schwere Optimierungsprobleme

Skript zur Vorlesung Graphenalgorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Uberblick 1. Problemstellung 2. Kongurationsraum 3. Bewegungsplanung fur einen Punktroboter 4. Minkowski Summen 5. Pseudo-Scheiben 6. Bewegungsplanung

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Algorithmen II Vorlesung am

Relationen und DAGs, starker Zusammenhang

Zweizusammenhang und starker Zusammenhang

Inhalt. 1. Flußprobleme. 2. Matching. 3. Lineares Programmieren. 4. Ganzzahliges Programmieren. 5. NP-Vollständigkeit. 6. Approximationsalgorithmen

Algorithmentheorie Maximale Flüsse

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Berechnung minimaler Spannbäume. Beispiel

WS 2009/10. Diskrete Strukturen

8. Übung zu Algorithmen I 15. Juni 2016

Algorithmen II Vorlesung am

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Lösungen zu Kapitel 5

Matchings (Paarungen) in Graphen. PS Algorithmen auf Graphen SS `06 Steven Birr

Vorlesung 2 KÜRZESTE WEGE

Algorithmen und Datenstrukturen

Kap. 6.6: Kürzeste Wege

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Algorithmen I - Tutorium 28 Nr. 11

Flüsse, Schnitte, bipartite Graphen

Optimierung. Optimierung. Vorlesung 9 Lineare Programmierung & Kombinatorische Optimierung Fabian Kuhn

Vorlesung 4 BETWEENNESS CENTRALITY

Fortgeschrittene Netzwerk- und Graph-Algorithmen

ADS: Algorithmen und Datenstrukturen 2

Lösungsskizzen zu den Klausuraufgaben zum Kurs 1142 Algorithmische Mathematik. a 0 = 0 =

Algorithmische Methoden zur Netzwerkanalyse Vorlesung 12, Henning Meyerhenke

Quicksort ist ein Divide-and-Conquer-Verfahren.

Effiziente Algorithmen 2

Proseminar Graphentheorie Vortrag 3 Matching. Inhalt: 1. Grundlagen 2. Matchings in bipatiten Graphen 3. Matchings in allgemeinen Graphen

Berechnung von Abständen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

9. Übung Algorithmen I

15. Elementare Graphalgorithmen

Flüsse in Netzwerken

10. Übungsblatt zu Algorithmen I im SS 2010

Klausur zum Modul Einführung in die Diskrete Mathematik

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Algorithmische Methoden zur Netzwerkanalyse

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Minimal spannende Bäume

durch Einfügen von Knoten konstruiert werden kann.

Algorithmen und Datenstrukturen Kapitel 10

p = (v 0, v 1,..., v k )

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Nachklausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Das disjunktive Graphenmodell für Shop-Probleme

Transkript:

Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

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:

Inhalt Matchings in Graphen Matchings in bipartiten Graphen Berechnung eines größtmöglichen Matchings Berechnung eines Matchings mit maximalem Gewicht 3 Henning Meyerhenke:

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:

Algorithmus Algorithm 1 Berechnung eines größtmöglichen Matchings 1: function MAXIMUMMATCHING(bipartiter Graph G = (V 1 V 2, E), initiales Matching M 1 ) Sei V 1 V 2 2: M = M 1 3: while unsat. Knoten v V 1 existiert, der noch nicht Wurzel war do 4: Markiere v als aktuelle Wurzel 5: P = AUGMENTINGPATHINTREE(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:

Hilfsfunktion (1) Algorithm 2 M-augmentierenden Pfad mit einem alternierenden Baum berechnen (Teil 1) 1: function AUGMENTINGPATHINTREE(bip. Graph G = (V 1 V 2, E), Matching M, Wurzelknoten v) 2: tree(v) = true; Nur v ist initial im Baum 3: for all u V 1 V 2, u = 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 = DEQUEUE(Q) 9: Fortsetzung auf nächster Folie =0 6 Henning Meyerhenke:

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: ENQUEUE(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:

Analyse des Algorithmus Zeitkomplexität des gesamten Algorithmus Beispiel: Siehe Tafel. Erinnerung: V 2 V 1 8 Henning Meyerhenke:

Analyse des Algorithmus Zeitkomplexität des gesamten Algorithmus Beispiel: Siehe Tafel. Erinnerung: V 2 V 1 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:

Analyse des Algorithmus Zeitkomplexität des gesamten Algorithmus Beispiel: Siehe Tafel. Erinnerung: V 2 V 1 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:

Korrektheit des Algorithmus Siehe Übung. 9 Henning Meyerhenke:

Finden augmentierender Pfade Theorem Sei G = (V 1 V 2, E) ein bipartiter Graph und sei M ein Matching in G. Falls es einen M-augmentierenden Pfad gibt, der ein Matching M mit M > M erzeugt, und es einen Knoten u als Endknoten eines M -augmentierenden Pfades gibt, dann gibt es auch einen M-augmentierenden Pfad mit u als Endknoten. Beweis. Siehe Tafel bzw. Übung. 10 Henning Meyerhenke:

Finden augmentierender Pfade Beweisschritte Kontraposition, Annahme des Gegenteils (Widerspruchsbeweis) M 1 sei durch Augmentieren von M entlang Q entstanden Sei P ein M 1 -augmentierender Pfad P enthält Kante, die zu M 1 M gehört (warum?) 11 Henning Meyerhenke:

Finden augmentierender Pfade Beweisschritte Kontraposition, Annahme des Gegenteils (Widerspruchsbeweis) M 1 sei durch Augmentieren von M entlang Q entstanden Sei P ein M 1 -augmentierender Pfad P enthält Kante, die zu M 1 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:

Inhalt Matchings in Graphen Matchings in bipartiten Graphen Berechnung eines größtmöglichen Matchings Berechnung eines Matchings mit maximalem Gewicht 12 Henning Meyerhenke:

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:

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:

Szenario 2 Jobs und Arbeiter Eine Fabrik hat n 1 Maschinen und n 2 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:

Szenario 2 Jobs und Arbeiter Eine Fabrik hat n 1 Maschinen und n 2 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:

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 ) für alle Matchings M in G gilt, dann ist M ein Matching maximalen Gewichts in G. Englisch: Maximum weight matching Abgekürzt: MWM 15 Henning Meyerhenke:

Aufgabe und Transformation der Eingabe Aufgabe: Optimale Zuweisung (optimal assignment) Gegeben: Gewichteter bipartiter Graph G = (V 1 V 2, E) Gesucht: MWM in G Transformation: G = (V 1 V 2, E) wird in vollständigen bipartiten Graphen H = (U 1 U 2, E ) transformiert U 1 = U 2 = max{ V 1, V 2 }, V 1 U 1, V 2 U 2 Konstruktion von E = U 1 U 2 : Für x U 1 und y U 2 gilt: { w w H (x, y) = G (x, y), falls {x, y} E 0 sonst 16 Henning Meyerhenke:

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:

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 U 1! perfekten Matchings zu produzieren und daraus eins mit höchstem Gewicht zu wählen, wäre ineffizient. 17 Henning Meyerhenke:

Hilfsmittel: Knotenmarkierungen Definition Sei G = (V 1 V 2, E) ein gewichteter bipartiter Graph mit Gewichtsfunktion w, wobei V 1 = V 2. Eine Knotenmarkierung l ist eine reellwertige Funktion über der Knotenmenge V 1 V 2. l(v) wird Markierung des Knotens v genannt. Definition Eine Knotenmarkierung ist genau dann zulässig, wenn für jede Kante (u, v) E gilt. l(u) + l(v) w(u, v) 18 Henning Meyerhenke:

Zulässige Knotenmarkierungen Beobachtung Jeder gewichtete vollständige bipartite Graph hat eine zulässige Knotenmarkierung l mit l(v) = max{w(v, u) u V 2 } für alle v V 1 und l(u) = 0 für alle u V 2 Beispiel: Siehe Tafel. 19 Henning Meyerhenke:

Kantenteilgraph und zulässige Knotenmarkierungen Definition Ein Kantenteilgraph von G = (V, E) ist ein Graph H = (V, E ) mit E E. Sei der durch l induzierte ungewichtete Kantenteilgraph H l von G definiert als H l = (V 1 V 2, E l ) mit E l = {(u, v) l(u) + l(v) = w(u, v)}. Theorem Sei l eine zulässige Knotenmarkierung von G = (V 1 V 2, E). Falls der Graph H l ein perfektes Matching M enthält, dann ist M ein MWM (maximum weight matching) in G. 20 Henning Meyerhenke:

Algorithmus-Idee (1) Mit zulässiger Knotenmarkierung starten. Den Kantenteilgraphen H l konstruieren. Unseren bekannten Algorithmus MAXIMUMMATCHING auf H l anwenden. Wird ein perfektes Matching in H l gefunden, gibt es dazu ein MWM in G. Andernfalls liefert MAXIMUMMATCHING ein nicht-perfektes Matching M. 21 Henning Meyerhenke:

Algorithmus-Idee (2) Nicht-perfektes Matching M bearbeiten M -alternierenden Baum T konstruieren, dessen Wurzel ein ungematchter Knoten x ist (mit AUGMENTINGPATHINTREE). Baum T lässt sich nicht erweitern und hat keinen M -augmentierenden Pfad. 22 Henning Meyerhenke:

Algorithmus-Idee (2) Nicht-perfektes Matching M bearbeiten M -alternierenden Baum T konstruieren, dessen Wurzel ein ungematchter Knoten x ist (mit AUGMENTINGPATHINTREE). Baum T lässt sich nicht erweitern und hat keinen M -augmentierenden Pfad. Knotenmarkierung (KM) l verändern: Neue zulässige KM l erstellen. l so anpassen, dass M und T in H l enthalten sind. Insbesondere gilt: H l enthält mindestens eine neue Kante von V 1 V (T ) nach V 2 V (T ). 22 Henning Meyerhenke:

Algorithmus-Idee (2) Nicht-perfektes Matching M bearbeiten M -alternierenden Baum T konstruieren, dessen Wurzel ein ungematchter Knoten x ist (mit AUGMENTINGPATHINTREE). Baum T lässt sich nicht erweitern und hat keinen M -augmentierenden Pfad. Knotenmarkierung (KM) l verändern: Neue zulässige KM l erstellen. l so anpassen, dass M und T in H l enthalten sind. Insbesondere gilt: H l enthält mindestens eine neue Kante von V 1 V (T ) nach V 2 V (T ). Dann: Neuen M -alternierenden Baum in H l mit Wurzel x erstellen. Wiederholen, bis augmentierender Pfad mit x als Endknoten gefunden. 22 Henning Meyerhenke:

Der Algorithmus von Kuhn und Munkres Algorithm 4 Berechnung eines Matchings mit maximalem Gewicht 1: function MAXIMUMWEIGHTMATCHING(Vollst. bip. Graph G = (V 1 V 2, E), Gew.fkt. w) berechnet MWM M für G mit V 1 = V 2 2: for all v V 1 do l(v) = max u V2 w(v, u) 3: end for 4: for all u V 2 do l(u) = 0 5: end for Inititale Knotenmarkierung fertig 6: Sei H l der von l induzierte Kantenteilgraph mit Kantenmenge E l 7: M = MAXIMUMMATCHING(H l, ) 8: while Knoten x V 1, der in M nicht saturiert ist do 9: [H l, l, M] = HANDLEUNSATURATED(H l, l, M, x) 10: end while 23 Henning Meyerhenke:

Nicht-perfektes Matching behandeln Algorithm 5 Unterfunktion zur Behandlung unsaturierter Knoten 1: function HANDLEUNSATURATED(Spanngraph H l, KM l, Matching M, Wurzelknoten x) 2: repeat 3: [P, T] = FINDPATHINTREE(H l, M, x) 4: if P > 0 then Augmentiere M entlang P 5: else 6: m l = min{l(v) + l(u) w(u, v) v V 1 T, u V 2 \ T } 7: l(v) = l(v) m l für alle v V 1 T 8: l(u) = l(u) + m l für alle u V 2 T 9: Konstruiere neues H l anhand von l 10: end if 11: until P > 0 12: return [H l, l, M] 24 Henning Meyerhenke: