Flüsse und Schnitte von Graphen Christian Koch Friedrich-Alexander-Universität Erlangen-Nürnberg 2. Juni 27 Christian Koch Flüsse und Schnitte 2. Juni 27 / 29
Gliederung Flüsse Allgemeines Maximaler Fluss Wissenswertes(für ICPC) 2 Schnitte Theorem Konnektivitäten 3 Quellen Christian Koch Flüsse und Schnitte 2. Juni 27 2 / 29
Wo kommen Flüsse vor? Fluss Gibt es in gerichteten Netzwerken mit einer Quelle und einer Senke Jede Kante hat eine Kapazität Wie viele Einheiten kommen pro Zeiteinheit von der Quelle (s) zur Senke (t) Christian Koch Flüsse und Schnitte 2. Juni 27 3 / 29
Anwendungsbeispiele Rohrnetzwerke (Flucht-)wege Bahn-/Bussysteme Stromverteilung Netzwerke mit Start und Ziel bzw. Verteiler und Verbraucher Christian Koch Flüsse und Schnitte 2. Juni 27 4 / 29
Residualgraphen s t Christian Koch Flüsse und Schnitte 2. Juni 27 5 / 29
Residualgraphen s t Hinkante: Potential Rückkante: aktueller Fluss Summe beider Kanten = Kapazität Christian Koch Flüsse und Schnitte 2. Juni 27 6 / 29
Ford-Fulkerson-Algorithmus Idee: Bilde das Residualnetzwerk mit Fluss = Suche solange Wege von s nach t bis es keinen mehr gibt: Bei gefundenem Weg Fluss erhöhen und Graph anpassen Der maximale Fluss wurde erreicht Pseudocode später Christian Koch Flüsse und Schnitte 2. Juni 27 7 / 29
Beispiel s t Christian Koch Flüsse und Schnitte 2. Juni 27 8 / 29
Beispiel s t Christian Koch Flüsse und Schnitte 2. Juni 27 9 / 29
Beispiel 99 s t 99 Christian Koch Flüsse und Schnitte 2. Juni 27 / 29
Beispiel 99 s t 99 Christian Koch Flüsse und Schnitte 2. Juni 27 / 29
Beispiel 99 99 s t 99 99 Christian Koch Flüsse und Schnitte 2. Juni 27 2 / 29
Beispiel 2 98 99 s t 99 98 2 Christian Koch Flüsse und Schnitte 2. Juni 27 3 / 29
Beispiel s t Christian Koch Flüsse und Schnitte 2. Juni 27 4 / 29
Tiefensuche vs. Breitensuche Ford-Fulkerson arbeitet mit der Tiefensuche Dies kann zu unangenehmen Effekten führen (siehe Beispiel) Alternative: Breitensuche Idee stammt von Edmonds und Karp Edmonds-Karp-Algorithmus Christian Koch Flüsse und Schnitte 2. Juni 27 5 / 29
Beispiel s t Christian Koch Flüsse und Schnitte 2. Juni 27 6 / 29
Beispiel s t Christian Koch Flüsse und Schnitte 2. Juni 27 7 / 29
Beispiel s t In 2 Schritten! Christian Koch Flüsse und Schnitte 2. Juni 27 8 / 29
Reduktion Der Algorithmus funktioniert nur mit bestimmten Eigenschaften: Es muss eine Quelle s und eine Senke t geben Kanten sind gerichtet Knoten haben keine Kapazität Wie können wir diese Bedingungen künstlich herbeiführen? Christian Koch Flüsse und Schnitte 2. Juni 27 9 / 29
Reduktionsregeln (siehe Tafel) Regel Bei mehreren Quellen/Senken führen wir eine Superquelle/Supersenke ein Diese ist mit allen Quellen/Senken verbunden Die Kanten haben Kapazität Regel 2 Bei ungerichteten/beidseitigen Kanten erstellen wir einen Hilfsknoten Dreiecksbeziehung Regel 3 Bei Knoten mit Kapazität erstellen wir wieder einen Hilfsknoten Beide sind mit einer Kante der ursprünglichen Kapazität verbunden Alter Knoten: Input Neuer Knoten: Output Christian Koch Flüsse und Schnitte 2. Juni 27 2 / 29
Wissenswertes (ICPC) Graphdarstellung Zur Implementierung des Ford/Fulkerson-Algorithmus eignet sich die Listen-Darstellung des Graphen Laufzeiten! Es kann einen enormen Unterschied machen ob man BFS oder DFS benutzt an Aufgabenstellung anpassen Ford-Fulkerson (Tiefensuche) Worst Case: O( E x flow max ) Edmonds-Karp (Breitensuche) Worst Case: O( E 2 x V ) Christian Koch Flüsse und Schnitte 2. Juni 27 2 / 29
Was ist ein Schnitt? Schnitt Teilt Graph in zwei nicht zusammenhängende Graphen Löscht (=schneidet) eine Menge an Kanten Kapazität = Summe der Kapazitäten dieser Kanten Häufige Anwendung: Trenne Quelle von Senke Christian Koch Flüsse und Schnitte 2. Juni 27 22 / 29
Min. Cut = Max. Flow Theorem (Min. Cut = Max. Flow) Minimaler Schnitt = Maximaler Fluss Vorgehen: Maximalen Fluss berechnen (Ford-Fulkerson / Edmonds-Karp) Finalen Residualgraph auswerten Von s aus erreichbar: Graph G, Rest: Graph H Verbindende Kanten löschen Christian Koch Flüsse und Schnitte 2. Juni 27 23 / 29
(s-t)-kantenkonnektivität Fragestellung Gegeben: Knoten a, Knoten b Wie viele Kanten muss ich mindestens durchschneiden um den Graphen so in G und H zu zerteilen, dass a G und b H? Lösung Jede Kante erhält Kapazität Bestimmung von flow max mit Quelle a und Senke b Christian Koch Flüsse und Schnitte 2. Juni 27 24 / 29
Allgemeine Kantenkonnektivität Fragestellung Wie viele Kanten muss ich mindestens durchschneiden um den Graphen zu zerteilen? Lösung Jede Kante erhält Kapazität Auswahl eines beliebigen Knotens Bestimme alle Kantenkonnektivitäten zu anderen Knoten Das Minimum aller Werte nehmen Christian Koch Flüsse und Schnitte 2. Juni 27 25 / 29
(s-t)knotenkonnektivität Fragestellung Gegeben: Knoten a, Knoten b Wie viele Knoten muss ich entfernen, um den Graph so in G und H zu zerteilen, dass a G und b H? Lösung Jeder Knoten erhält die Kapazität Reduktionsregeln anwenden Bestimmung von flow max mit Quelle a und Senke b Hinweis Die Knoten a und b dürfen nicht verbunden sein! Christian Koch Flüsse und Schnitte 2. Juni 27 26 / 29
Allgemeine Knotenkonnektivität Fragestellung Wie viele Knoten muss ich mindestens entfernen um den Graphen zu zerteilen? Lösung Folgendes muss über jeden Knoten iteriert werden: Berechne alle (s-t)-knotenkonnektivitäten zu allen nicht-verbundenen Knoten Das Minimum aller Werte nehmen Hinweis Konnte kein Wert gefunden werden ist der Graph nicht zu teilen! Christian Koch Flüsse und Schnitte 2. Juni 27 27 / 29
Laufzeiten (s-t)-kantenkonnektivität Worst Case: O( E 2 ) Allgemeine Kantenkonnektivität Worst Case: O( E 2 x V ) (s-t)-knotenkonnektivität Worst Case: O( E x V ) Allgemeine Knotenkonnektivität Worst Case: O( E x V 3 ) Christian Koch Flüsse und Schnitte 2. Juni 27 28 / 29
Quellen Vorträge der Jahre 25 und 26 von Florian Hantke und Jana Martschinke https://www.topcoder.com/community/data-science/data-sciencetutorials/maximum-flow-section-2/ https://www.topcoder.com/community/data-science/data-sciencetutorials/minimum-cost-flow-part-one-key-concepts/ Christian Koch Flüsse und Schnitte 2. Juni 27 29 / 29