Flüsse, Schnitte, Bipartite Graphen Sebastian Hahn 4. Juni 2013 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 1 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 2 / 48 Netzwerk N Ziel: Material durch Netzwerk transportieren Definition N = (G , u, s, t) mit G = (V , E ) gerichteter Graph Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 3 / 48 Netzwerk N Ziel: Material durch Netzwerk transportieren Definition N = (G , u, s, t) mit G = (V , E ) gerichteter Graph Kapazitätsfunktion u : E → N+ weist jeder Kante e ∈ E einen ganzzahligen, nichtnegativen Wert zu Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 3 / 48 Netzwerk N Ziel: Material durch Netzwerk transportieren Definition N = (G , u, s, t) mit G = (V , E ) gerichteter Graph Kapazitätsfunktion u : E → N+ weist jeder Kante e ∈ E einen ganzzahligen, nichtnegativen Wert zu Quelle s (unendliche Produktion) Senke t (unendlicher Konsum) Kapazität als Einheiten pro Zeitschritt Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 3 / 48 Mate(rial)transport zur OHM Amsterdam Frankfurt v 1 12 16 Erlangen s v3 4 20 t 7 9 13 v2 Bielefeld 14 v4 Alkmaar 4 Emden Kantengewichte beschreiben freie Ladekapazitäten Es gibt keine Zwischenlager Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 4 / 48 Fluss f in einem Netzwerk N Definition f : E → N+ weist jeder Kante e ∈ E einen ganzzahligen, nichtnegativen Flusswert zu ∀e ∈ E : f (e) ≤ u(e) X X ∀v ∈ V \ {s, t} : f (e) = f (e) e=(x,v )∈E x∈V e=(v ,x)∈E x∈V "Jede Kante hat eine Kapazitätsfunktion" Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 5 / 48 Fluss f in einem Netzwerk N Definition f : E → N+ weist jeder Kante e ∈ E einen ganzzahligen, nichtnegativen Flusswert zu ∀e ∈ E : f (e) ≤ u(e) X X ∀v ∈ V \ {s, t} : f (e) = f (e) e=(x,v )∈E x∈V e=(v ,x)∈E x∈V "Der Fluss auf einer Kante ist nie größer als die Kapazität der Kante" Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 5 / 48 Fluss f in einem Netzwerk N Definition f : E → N+ weist jeder Kante e ∈ E einen ganzzahligen, nichtnegativen Flusswert zu ∀e ∈ E : f (e) ≤ u(e) X X ∀v ∈ V \ {s, t} : f (e) = f (e) e=(x,v )∈E x∈V e=(v ,x)∈E x∈V "Der Fluss in einen Knoten ist gleich dem Fluss aus dem Knoten heraus" Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 5 / 48 Mate(rial)-Fluss zur OHM Amsterdam Frankfurt v 1 12/12 11/16 Erlangen s v3 1/4 15/20 t 7/7 4/9 8/13 v2 v4 Alkmaar 4/4 11/14 Bielefeld Emden Fluss von 19 Einheiten Richtung Alkmaar Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 6 / 48 Mate(rial)-Fluss zur OHM Amsterdam Frankfurt v 1 12/12 11/16 Erlangen s v3 1/4 15/20 t 7/7 4/9 8/13 v2 v4 Alkmaar 4/4 11/14 Bielefeld Emden Fluss von 19 Einheiten Richtung Alkmaar Frage: Geht da noch was? Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 6 / 48 Maximaler Fluss Häufiges Ziel: Flussfunktion so einstellen, dass Gesamtfluss maximal Wasser in Wasserleitungen Menschen auf dem Weg in eine Halle Transport von Waren mit der Bahn Gesamtfluss entspricht Produktion an Quelle bzw Konsum an Senke Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 7 / 48 OHM Amsterdam Frankfurt v 1 12/12 11/16 Erlangen s v3 1/4 19/20 t 7/7 0/9 12/13 v2 v4 Alkmaar 4/4 11/14 Bielefeld Emden Jetzt: Fluss von 23 Einheiten Richtung Alkmaar Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 8 / 48 Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12/12 11/16 15/20 s 1/4 t 7/7 4/9 8/13 4/4 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12/12 15/20 5 11 s 1/4 t 7/7 4/9 8/13 4/4 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12/12 15/20 5 11 s 1/4 t 7/7 4/9 5 4/4 8 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 0 12 5 15/20 11 s 1/4 t 7/7 4/9 5 4/4 8 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12 5 15/20 11 s 1/4 t 7/7 4/9 5 4/4 8 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12 5 15/20 11 s 3 t 7/7 1 4/9 5 4/4 8 11/14 Berechnungsaufwand O(e) Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12 5 11 s 5 15 4 3 1 t 7 5 5 4 8 3 11 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 9 / 48 Residualgraph Gibt an, wie ein Fluss verändert werden kann Maximale lokale Flussveränderung als gerichtete Kante in Gegenrichtung 12 5 11 s 5 15 4 3 1 t 7 5 5 4 8 3 11 Berechnungsaufwand O(e) Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 9 / 48 Erweiternde Pfade Pfade, die Quelle und Senke verbinden Gesamtfluss kann um das minimale Gewicht der auf dem Pfad liegenden Kanten erhöht werden Danach: Residualgraph aktualisieren Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 10 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 11 / 48 Ford-Fulkerson-Methode Ziel: Maximalen Fluss bestimmen ∀e ∈ E setze f (e) = 0 mittels Rückkanten Setze MaxFlow = 0 Tiefensuche nach erweiterndem Pfad p von s nach t setze minc auf minimale Kapazität von p setze MaxFlow auf MaxFlow + minc ∀e ∈ p Erhöhe/vermindere f (e) um minc (Hin-/Rückkante) vermindere u(e) um minc falls u(e) = 0 : entferne Kante e Gib MaxFlow zurück Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 12 / 48 Residualgraph: 12 16 20 s 4 t 7 13 9 4 14 Fluss: MaxFlow = 0 0/12 0/16 s 0/4 0/13 0/20 0/14 Sebastian Hahn t 0/7 0/9 Flüsse, Schnitte, Bipartite Graphen 0/4 4. Juni 2013 13 / 48 Residualgraph: 8 12 4 4 s 20 4 4 t 7 13 5 4 10 4 Fluss: MaxFlow = 4 4/12 4/16 s 0/4 0/13 0/20 4/14 Sebastian Hahn t 0/7 4/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 13 / 48 Residualgraph: 4 12 4 4 s 16 8 4 4 t 7 9 5 4 10 4 4 Fluss: MaxFlow = 8 8/12 4/16 s 4/4 4/13 4/20 4/14 Sebastian Hahn t 0/7 4/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 13 / 48 Residualgraph: 4 8 12 8 8 8 s 4 t 7 9 9 4 10 4 4 Fluss: MaxFlow = 12 8/12 8/16 s 0/4 4/13 8/20 4/14 Sebastian Hahn t 0/7 0/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 13 / 48 Residualgraph: 4 8 5 8 15 8 s 4 t 7 2 9 4 3 11 11 Fluss: MaxFlow = 19 8/12 8/16 s 0/4 11/13 15/20 11/14 Sebastian Hahn t 7/7 0/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 13 / 48 Residualgraph: 4 1 12 19 12 s 4 t 7 2 9 4 3 11 11 Fluss: MaxFlow = 23 12/12 12/16 s 0/4 11/13 19/20 11/14 Sebastian Hahn t 7/7 0/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 13 / 48 Laufzeitüberlegungen 1000 1000 s 1000 Sebastian Hahn t 1 1000 Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 14 / 48 Laufzeitüberlegungen 1000 999 s 1000 Sebastian Hahn t 1 999 Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 14 / 48 Laufzeitüberlegungen 999 999 s 999 Sebastian Hahn t 1 999 Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 14 / 48 Laufzeitüberlegungen 999 999 s t 1 999 999 Oooops Kapazität nimmt pro Durchlauf nur um 1 ab Laufzeit: O(MaxFlow ∗ |E |) Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 14 / 48 Laufzeitüberlegungen 999 999 s t 1 999 999 Oooops Kapazität nimmt pro Durchlauf nur um 1 ab Laufzeit: O(MaxFlow ∗ |E |) Tiefensuche manchmal schlecht, gibt es Alternativen? Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 14 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 15 / 48 Edmonds-Karp-Strategie Einfacher Fix Keine Tiefensuche mehr, dafür Breitensuche Laufzeit im schlimmsten Fall: O(|V ||E |2 ) Genauso leicht zu implementieren (siehe Wiki) Es wird immer der Pfad mit minimaler Kantenanzahl ausgewählt Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 16 / 48 Beispiel Edmonds-Karp 1000 1000 s t 1 1000 1000 MaxFlow = 0 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 1000 1000 s t 1 1000 1000 MaxFlow = 0 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 1000 1000 s t 1 1000 1000 MaxFlow = 0 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 1000 1000 s t 1 1000 1000 MaxFlow = 0 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 0 0 s t 1 1000 1000 MaxFlow = 1000 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 0 0 s t 1 1000 1000 MaxFlow = 1000 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Beispiel Edmonds-Karp 0 0 s t 1 0 0 MaxFlow = 2000 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 17 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 18 / 48 Partition einer Menge Definition A, B sind eine Partition von C ⇔ A ( C, B ( C A∩B =∅ A∪B =C Hier kurz: {A, B} ∈ Part(C ) Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 19 / 48 Schnitt Definition {S, T } ∈ Part(V ), mit s ∈ S und t ∈ T "Partition in zwei Teilmengen, so dass die Quelle in der einen und die Senke in der anderen ist" Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 20 / 48 Schnitt Definition {S, T } ∈ Part(V ), mit s ∈ S und t ∈ T "Partition in zwei Teilmengen, so dass die Quelle in der einen und die Senke in der anderen ist" X u(e) Kapazität des Schnitts = e=(a,b)∈E a∈S∧b∈T Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 20 / 48 Schnitt Definition {S, T } ∈ Part(V ), mit s ∈ S und t ∈ T "Partition in zwei Teilmengen, so dass die Quelle in der einen und die Senke in der anderen ist" X u(e) Kapazität des Schnitts = e=(a,b)∈E a∈S∧b∈T Fluss des Schnitts = X f (e) − e=(a,b)∈E a∈S∧b∈T Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen X f (e) e=(a,b)∈E a∈S∧b∈T 4. Juni 2013 20 / 48 Beispielschnitt 12/12 15/20 11/16 s 1/4 t 7/7 4/9 8/13 4/4 11/14 Kapazität: 16 + 4 + 7 + 4 = 31 Fluss: 11 + 1 + 7 + 4 − 4 = 19 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 21 / 48 Eigenschaften von Schnitten Fluss für beliebigen Schnitt = Fluss durch das Gesamtnetzwerk Betrag des Flusses ist von oben beschränkt durch Kapazität jedes Schnittes Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 22 / 48 Eigenschaften von Schnitten Fluss für beliebigen Schnitt = Fluss durch das Gesamtnetzwerk Betrag des Flusses ist von oben beschränkt durch Kapazität jedes Schnittes Also auch: Betrag des Flusses ist von oben beschränkt durch Kapazität des minimalen Schnittes Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 22 / 48 Eigenschaften von Schnitten Fluss für beliebigen Schnitt = Fluss durch das Gesamtnetzwerk Betrag des Flusses ist von oben beschränkt durch Kapazität jedes Schnittes Also auch: Betrag des Flusses ist von oben beschränkt durch Kapazität des minimalen Schnittes Entfernen der Kanten im Schnitt mit minimaler Kapazität trennt s und t mit minimalen Kosten Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 22 / 48 Max-Flow-Min-Cut-Theorem Für Fluss f in einem Netzwerk N sind äquivalent: f ist maximaler Fluss in N Residualgraph für f und N hat keine erweiternden Pfade Es existiert ein Schnitt von N mit Kapazität |f | Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 23 / 48 Max-Flow-Min-Cut-Theorem Für Fluss f in einem Netzwerk N sind äquivalent: f ist maximaler Fluss in N Residualgraph für f und N hat keine erweiternden Pfade Es existiert ein Schnitt von N mit Kapazität |f | Daraus folgt: |f | ist die Kapazität des minimalen Schnitts von N Max-Flow = Min-Cut (Beweis siehe Cormen) Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 23 / 48 Minimalen Schnitt finden Wenn Algorithmus für maximalen Fluss beendet: Alle im Residualgraphen von s aus erreichbaren Knoten bilden S Alle anderen Knoten bilden T Minimaler Schnitt, da die Kapazität voll ausgeschöpft ist Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 24 / 48 Residualgraph: 4 1 12 19 12 s 4 t 7 2 9 4 3 11 11 Fluss: Kapazität = Fluss = 23 12/12 12/16 s 0/4 11/13 19/20 11/14 Sebastian Hahn t 7/7 0/9 Flüsse, Schnitte, Bipartite Graphen 4/4 4. Juni 2013 25 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 26 / 48 Reduktionen Problem Netzwerke oft in ungeeigneter Form. . . Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 27 / 48 Reduktionen Problem Netzwerke oft in ungeeigneter Form. . . . . . aber man kann sie oft transformieren Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 27 / 48 Reduktionen Problem Netzwerke oft in ungeeigneter Form. . . . . . aber man kann sie oft transformieren Typisch Ungerichtete Kanten Quelle oder Senke haben keine unendliche Kapazität Die Knoten haben auch Gewichte Es gibt mehrere Quellen oder Senken Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 27 / 48 Ungerichtete Kanten 5 v1 v2 Lösung Erzeuge neuen Knoten mit Indirektion Führe zwei gerichtete Kanten ein v 5 5 5 v1 Sebastian Hahn 5 v2 v1 Flüsse, Schnitte, Bipartite Graphen v2 5 4. Juni 2013 28 / 48 s/t haben beschränkte Kapazität 5 s 5 5 t Lösung Führe zwei gewichtete Kanten ein s Sebastian Hahn 5 s’ 5 t’ Flüsse, Schnitte, Bipartite Graphen 5 t 4. Juni 2013 29 / 48 Knoten haben auch Kapazitäten s 10 5 10 t Lösung Führe neuen Knoten ein und verbinde diesen mit gewichteter Kante s Sebastian Hahn 10 a 5 b Flüsse, Schnitte, Bipartite Graphen 10 t 4. Juni 2013 30 / 48 Es gibt mehrere Quellen oder Senken s1 s2 10 10 a 5 10 b 10 10 s3 t1 10 t2 t3 Lösung Führe neuen s/t-Knoten ein s1 ∞ ∞ s ∞ Sebastian Hahn s2 s3 10 10 a 10 t1 10 5 10 b 10 Flüsse, Schnitte, Bipartite Graphen t2 t3 ∞ ∞ t ∞ 4. Juni 2013 31 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 32 / 48 Bipartiter Graph Definition: Ungerichteter Graph G = (V , E ) heißt bipartit, wenn: ∃{A, B} ∈ Part(V ), mit ∀{u, v } ∈ E : (u ∈ A ∧ v ∈ B) ∨ (u ∈ B ∧ v ∈ A) "Jede Kante verbindet einen Knoten aus A mit einem Knoten aus B" Zum Beispiel: Studenten und Tutoren, Tanzpaare, Schachbretter Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 33 / 48 Bipartiter Graph: Beispiel Sebastian Hahn L1 V1 L2 V2 L3 V3 Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 34 / 48 Bipartites Matching Matching: Kantenauswahl, so dass jeder Knoten zu maximal einer Kante inzident ist Anzahl der Kanten maximal: maximales bipartites Matching Damit kann man ausrechnen, wieviele Kanten man sparen kann Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 35 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 36 / 48 Beispielaufgabe: Klausur Folgende Situation: Klausur muss wiederholt werden wegen Feueralarm Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 37 / 48 Beispielaufgabe: Klausur Folgende Situation: Klausur muss wiederholt werden wegen Feueralarm Es gibt eine Facebookseite, auf der sich Studenten als abschreibewillig outen Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 37 / 48 Beispielaufgabe: Klausur Folgende Situation: Klausur muss wiederholt werden wegen Feueralarm Es gibt eine Facebookseite, auf der sich Studenten als abschreibewillig outen Du musst herausfinden, ob genügend Aufsichtskräfte da sind um Betrug zu bemerken Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 37 / 48 Beispielaufgabe: Klausur Folgende Situation: Klausur muss wiederholt werden wegen Feueralarm Es gibt eine Facebookseite, auf der sich Studenten als abschreibewillig outen Du musst herausfinden, ob genügend Aufsichtskräfte da sind um Betrug zu bemerken Jede Aufsichtskraft kann genau zwei direkt nebeneinander oder hintereinander sitzende Studenten überwachen Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 37 / 48 Beispielaufgabe: Klausur Folgende Situation: Klausur muss wiederholt werden wegen Feueralarm Es gibt eine Facebookseite, auf der sich Studenten als abschreibewillig outen Du musst herausfinden, ob genügend Aufsichtskräfte da sind um Betrug zu bemerken Jede Aufsichtskraft kann genau zwei direkt nebeneinander oder hintereinander sitzende Studenten überwachen Jeder potenzielle Abschreiber muss überwacht werden Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 37 / 48 Interpretation: bipartites Matching Auf einem 2d-Grid Schachbrettmuster annehmen Alle weißen Felder bilden die eine Teilmenge, alle schwarzen die andere Alle nicht-abschreibwilligen Studenten ignorieren Neben- oder hintereinander sitzende Studenten haben eine Kante zwischen sich Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 38 / 48 Visualisierung ⇒ Tafel Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 39 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Ändere die ungerichteten Kanten in gerichtete Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Ändere die ungerichteten Kanten in gerichtete Jede Kante hat Gewicht 1 Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Ändere die ungerichteten Kanten in gerichtete Jede Kante hat Gewicht 1 Maximalen Fluss ergibt maximales bipartites Matching Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Ändere die ungerichteten Kanten in gerichtete Jede Kante hat Gewicht 1 Maximalen Fluss ergibt maximales bipartites Matching Lösung: Anzahl Abschreiber - Fluss Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Interpretation als Flussproblem Vorgehensweise Füge Quelle hinzu für weiße Felder Füge Senke hinzu für schwarze Felder Ändere die ungerichteten Kanten in gerichtete Jede Kante hat Gewicht 1 Maximalen Fluss ergibt maximales bipartites Matching Lösung: Anzahl Abschreiber - Fluss Laufzeit schlimmster Fall: O(|V ||E |) Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 40 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 41 / 48 http://wallpaper-gallery.com/downloads/animals-penguins-wallpaper-0004.jpg Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 42 / 48 Wählerische Pinguine Es gibt n weibliche und n männliche Pinguine Pinguine haben eine Prioritätsliste für die Paarung Pinguine leben monogam Jeder möchte einen Partner mit möglichst hoher Priorität Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 43 / 48 Wählerische Pinguine Es gibt n weibliche und n männliche Pinguine Pinguine haben eine Prioritätsliste für die Paarung Pinguine leben monogam Jeder möchte einen Partner mit möglichst hoher Priorität Lösung: Stabiles Heiraten Stabilität: Am Ende gibt es keine unglücklichen Paare Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 43 / 48 Algorithmus Alle Pinguine sind ungebunden, mit Prioritätslisten p Solange es ungebundenes Weibchen w gibt { curM = take(p(w )) Wenn curM ungebunden: w und curM sind Paar sonst: (curM ist Teil eines Paares) curWforcurM = Weibchen von curM Wenn curM w lieber mag als curWforcurM: w und curM sind Paar curWforcurM ist wieder ungebunden } Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 44 / 48 Überblick Flussnetzwerke Ford-Fulkerson-Methode Edmonds-Karp-Strategie Dualität Maximaler Fluss / Minimaler Schnitt Reduktionen Bipartite Graphen Anwendungen: Maximales Bipartites Matching Stabiles Heiraten Zusammenfassung Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 45 / 48 Zusammenfassung Viele Probleme lassen sich als Flussnetzwerke modellieren Maximaler Fluss entspricht minimalem Schnitt Probleme auf bipartiten Graphen lassen sich mit Flussnetzwerken lösen Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 46 / 48 Ausblick Weitere Themen Preflow-Push-Algorithmen (Komplexität je nach Implementierung √ O(|V |3 ), O(|V |2 | E ), O(|V ||E | log (|V |2 /|E |)) Ungarische Methode (Maximales gewichtetes bipartites Matching) (Komplexität: O(|V |3 ) Knoten/Kanten-Konnektivität Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 47 / 48 Quellen HW-Vorträge der Vorjahre (Thomas Fersch 2010, Christopher Dennl 2011) "Introductions to Algorithms"(Cormen) http://de.wikipedia.org/wiki/Flüsse_und_ Schnitte_in_Netzwerken http: //de.wikipedia.org/wiki/Bipartiter_Graph http://de.wikipedia.org/wiki/Matching_ (Graphentheorie) http://de.wikipedia.org/wiki/Königspinguin https://ohm2013.org/wiki/FAQ http://www.openstreetmap.org Sebastian Hahn Flüsse, Schnitte, Bipartite Graphen 4. Juni 2013 48 / 48