Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum II Wintersemester 0/0 in der Helmholtz-Gemeinschaft www.kit.edu
Schnitte minimalen Gewichts: MinCut Algorithmen II Wintersemester 0/0
Problem MINCUT Problem: MINCUT Gegeben sei ein Graph G = (V, E) mit Kantengewichtsfunktion c : E R + 0. Finde einen nichttrivialen Schnitt (S, V \ S) minimalen Gewichts in G, d.h. finde S V mit S V, sodass c(s, V \ S) := c({u, v}) {u, v} E, u S, v V \ S minimal wird. (S, V\S) wird minimaler Schnitt genannt. 5 7 8 Algorithmen II Wintersemester 0/0
Problem MINCUT Problem: MINCUT Gegeben sei ein Graph G = (V, E) mit Kantengewichtsfunktion c : E R + 0. Finde einen nichttrivialen Schnitt (S, V \ S) minimalen Gewichts in G, d.h. finde S V mit S V, sodass c(s, V \ S) := c({u, v}) {u, v} E, u S, v V \ S minimal wird. (S, V\S) wird minimaler Schnitt genannt. S V \ S 5 7 8 c(s, V \ S) = Algorithmen II Wintersemester 0/0
Schnittberechnung mittels Flussalgorithmus Bemerkung: Dualität zu maximalem Fluss (Bemerkung.) Zu gegebenen s, t V kann ein minimaler s-t-schnitt mit einem Flussalgorithmus (z.b. Ford & Fulkerson, Goldberg & Tarjan) berechnet werden. Das Minimum über alle Paare s, t V liefert einen global minimalen Schnitt. ( ) V Θ( V ) Flussberechnungen. Da im minimalen Schnitt jeder Knoten von irgendeinem anderen getrennt wird, kann man stattdessen s V auch festhalten und t V \ {s} wähle. V Flussberechnungen. Heute: Effizientere Berechnung eines minimalen Schnittes ohne Flussalgorithmus. Algorithmen II Wintersemester 0/0
Stark verbundene Knoten Definition: Am stärksten verbundene Knoten (Definition.) Zu S V und v V \ S sei c(s, v) = {u, v} E u S c({u, v}). Den Knoten v V \ S, für den c(s, v) maximal wird, nennen wir auch den am stärksten mit S verbundenen Knoten. S 5 7 8 c(s, ) = + = 5 c(s, ) = c(s, 8) = Knoten ist am stärksten mit S verbunden. Algorithmen II Wintersemester 0/0
Verschmelzen zweier Knoten Definition: Verschmelzen zweier Knoten (Definition.) Seien s, t V. Dann können s und t wie folgt verschmolzen werden. s und t werden durch einen neuen Knoten x s,t ersetzt. Alle Kanten die vorher zu s oder t inzident waren sind jetzt zu x s,t inzident (abgesehen von {s, t}, falls s und t adjazent waren). Mehrfachkanten werden aufgelöst indem Kantengewichte addiert werden. 5 7 8 5, 7 8 Algorithmen II Wintersemester 0/0 Verschmelzen der Knoten und 7. 5, 7 5 8
Algorithmus von Stoer & Wagner Überblick Der Algorithmus von Stoer & Wagner besteht V Phasen. In jeder Phase i wird ein Schnitt in einem Graphen G i = (V i, E i ) berechnet, der Schnitt der Phase i. G i entsteht aus G i durch Verschmelzen geeigneter Knoten, wobei G = G. Ergebnis des Algorithmus ist der minimale Schnitt aller Schnitte der einzelnen Phasen i (für i V ). Ablauf einer Phase i Starte mit S i = {a}, wobei a ein beliebiger Startknoten in G i ist. Füge iterativ den am stärksten zu S i verbundenen Knoten zu S i hinzu. Seien s und t die als vorletztes bzw. als letztes zu S i hinzugefügten Knoten. Der Schnitt der Phase i ist (V i \ {t}, {t}). G i+ entsteht aus G i durch Verschmelzen von s und t. Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} (beliebig gewählter Startknoten) 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} S = {,,, 7, 8} 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} S = {,,, 7, 8} S = {,,, 7, 8, } 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} S = {,,, 7, 8} S = {,,, 7, 8, } S = {,,, 7, 8,, 5} 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} S = {,,, 7, 8} S = {,,, 7, 8, } S = {,,, 7, 8,, 5} S = {,,, 7, 8,, 5, } 5 7 8 Schnitt der Phase: {V \ {}, {}} Gewicht 5 s t Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G S = {} S = {, } (beliebig gewählter Startknoten) ( am stärksten zu {} verbunden) S = {,, } ( am stärksten zu {, } verbunden) S = {,,, 7} S = {,,, 7, 8} S = {,,, 7, 8, } S = {,,, 7, 8,, 5} S = {,,, 7, 8,, 5, } 5 7 8 Schnitt der Phase: {V \ {}, {}} Gewicht 5 Verschmelzen von s und t ergibt G s t, 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} S = {, {, 5}, } (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} S = {, {, 5}, } S = {, {, 5},, } (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} S = {, {, 5}, } S = {, {, 5},, } S = {, {, 5},,, } (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} S = {, {, 5}, } S = {, {, 5},, } S = {, {, 5},,, } S = {, {, 5},,,, 7} (beliebig gewählter Startknoten), 5 7 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase G = G mit und 5 verschmolzen S = {} S = {, {, 5}} S = {, {, 5}, } S = {, {, 5},, } S = {, {, 5},,, } S = {, {, 5},,,, 7} S = {, {, 5},,,, 7, 8} (beliebig gewählter Startknoten) s t, 5 7 8 Schnitt der Phase: {V \ {8}, {8}} Gewicht 5 Verschmelzen von s und t ergibt G, 5 7, 8 Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Beispiel Phase Schnitt der Phase: {V \ {}, {}} Gewicht 5 Phase Schnitt der Phase: {V \ {8}, {8}} Gewicht 5 Phase Schnitt der Phase: {V \ {{7, 8}}, {{7, 8}}} Gewicht 7 Phase Schnitt der Phase: {V \ {{, 7, 8}}, {{, 7, 8}}} Gewicht 7 Phase 5 Schnitt der Phase: {V 5 \ {{,, 7, 8}}, {{,, 7, 8}}} Gewicht Phase Schnitt der Phase: {V \ {{, 5}}, {{, 5}}} Gewicht 7 Phase 7 Schnitt der Phase: {V 7 \ {}, {}} Gewicht 9 siehe Skript Der Schnitt aus Phase 5 ist minimal unter den Schnitten der einzelnen Phasen. Der Algorithmus von Stoer & Wagner gibt diesen Schnitt aus. 5 7 8 (Beweis, dass der so bestimmte Schnitt immer ein minimaler Schnitt ist folgt später.) Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Laufzeit MINSCHNITTPHASE(G i, c, a) S {a} t a while S V i do v Knoten aus V i \ S sodass c(s, v) maximal S S {v} s t t v O() O(log V + deg(v)) O() Speichere (V i \ {t}, {t}) als SCHNITT-DER-PHASE Konstruiere aus G i Graph G i+ durch Verschmelzen von s und t Benutze einen FIBONACCI-HEAP um c(s, u) für alle u V i \ S zu speichern. Maximum v entfernen: O(log V ) Nachbarn von v updaten: O(deg(v)) Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Laufzeit MINSCHNITTPHASE(G i, c, a) S {a} t a while S V i do v Knoten aus V i \ S sodass c(s, v) maximal S S {v} s t t v O() O( V log V + E ) O(log V + deg(v)) O() Speichere (V i \ {t}, {t}) als SCHNITT-DER-PHASE Konstruiere aus G i Graph G i+ durch Verschmelzen von s und t Benutze einen FIBONACCI-HEAP um c(s, u) für alle u V i \ S zu speichern. Maximum v entfernen: O(log V ) Nachbarn von v updaten: O(deg(v)) Jeder Knoten wird nur einmal zu S hinzugefügt. deg(v) = E O( E ) v V Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Laufzeit MINSCHNITTPHASE(G i, c, a) S {a} t a while S V i do v Knoten aus V i \ S sodass c(s, v) maximal S S {v} s t t v O( V log V + E ) O() O( V log V + E ) O(log V + deg(v)) O() Speichere (V i \ {t}, {t}) als SCHNITT-DER-PHASE Konstruiere aus G i Graph G i+ durch Verschmelzen von s und t O( E ) Benutze einen FIBONACCI-HEAP um c(s, u) für alle u V i \ S zu speichern. Maximum v entfernen: O(log V ) Nachbarn von v updaten: O(deg(v)) Jeder Knoten wird nur einmal zu S hinzugefügt. deg(v) = E O( E ) v V Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Laufzeit MINSCHNITTPHASE(G i, c, a) O( V log V + E ) MIN-SCHNITT(G, c, a) G G for i = to V do MINSCHNITTPHASE(G i, c, a) if SCHNITT-DER-PHASE ist kleiner als MIN-SCHNITT then speichere SCHNITT-DER-PHASE als MIN-SCHNITT Gib MIN-SCHNITT aus. O( V log V + V E ) O() O( V log V + V E ) O( V log V + E ) O() O() Lemma: Laufzeit des Algorithmus von Stoer & Wagner Der Algorithmus von Stoer & Wagner hat eine Laufzeit von O( V log V + V E ). Zum Vergleich: Der Flussalgorithmus von Goldberg & Tarjan hat eine Laufzeit von O( V E log( V / E )) Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit Definition: s-t-schnitt Für s, t V, s t nenne den Schnitt (S, V \ S) mit s S und t V \ S einen s-t-schnitt. Ein s-t-schnitt trennt Knoten u und v, wenn u S und v V \ S. Lemma: SCHNITT-DER-PHASE ist minimaler s-t-schnitt (Lemma.5) Sei (S, V \ S) der SCHNITT-DER-PHASE in einem Graphen G = (V, E) mit Kostenfunktion c : E R + 0 und Startknoten a V. Dann ist (S, V \ S) minimal unter allen s-t-schnitten, wobei s und t vorletzter bzw. letzter betrachteter Knoten ist. Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit Definition: s-t-schnitt Für s, t V, s t nenne den Schnitt (S, V \ S) mit s S und t V \ S einen s-t-schnitt. Ein s-t-schnitt trennt Knoten u und v, wenn u S und v V \ S. Lemma: SCHNITT-DER-PHASE ist minimaler s-t-schnitt (Lemma.5) Sei (S, V \ S) der SCHNITT-DER-PHASE in einem Graphen G = (V, E) mit Kostenfunktion c : E R + 0 und Startknoten a V. Dann ist (S, V \ S) minimal unter allen s-t-schnitten, wobei s und t vorletzter bzw. letzter betrachteter Knoten ist. Beweis: Zeige: Für jeden s-t-schnitt (S, V \ S ) gilt: c(s, V \ S) c(s, V \ S ) a s t a s t S V \ S V \ S S Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit Beweis: Zeige: Für jeden s-t-schnitt (S, V \ S ) gilt: c(s, V \ S) c(s, V \ S ) Definition: aktive Knoten MINSCHNITTPHASE betrachtet die Knoten aus V gemäß einer linearen Ordnung, die mit a beginnt und mit s und t endet. Ein Knoten v V heißt aktiv (bzgl. S ), wenn {S, V \ S } den Knoten v von seinem Vorgänger trennt. a s t a s t S V \ S V \ S S Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit Beweis: Zeige: Für jeden s-t-schnitt (S, V \ S ) gilt: c(s, V \ S) c(s, V \ S ) Definition: aktive Knoten MINSCHNITTPHASE betrachtet die Knoten aus V gemäß einer linearen Ordnung, die mit a beginnt und mit s und t endet. Ein Knoten v V heißt aktiv (bzgl. S ), wenn {S, V \ S } den Knoten v von seinem Vorgänger trennt. a s t a s t S V \ S V \ S Definition: Für v V \ {a} sei S v Menge der Knoten vor v. Sei weiter V v = S v {v} sowie S v = S V v. a v s t a v s t S S V \ S V \ S v {v} V v \ S v Betrachte Einschränkung von G auf V v für aktiven Knoten v. Zeige: c(s V, {v}) c(s v, V v \ S v ) (zeigt genau das gewünschte für v = t) S v S S Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit () Satz: Korrektheit des Algorithmus von Stoer & Wagner (Satz.) Der minimale Schnitt von allen Ergebnissen der V Ausführungen von MIN- SCHNITTPHASE ist ein minimaler, nichttrivialer Schnitt in G = (V, E) mit V. Algorithmen II Wintersemester 0/0
Algorithmus von Stoer & Wagner Korrektheit () Satz: Korrektheit des Algorithmus von Stoer & Wagner (Satz.) Der minimale Schnitt von allen Ergebnissen der V Ausführungen von MIN- SCHNITTPHASE ist ein minimaler, nichttrivialer Schnitt in G = (V, E) mit V. Beweis: Induktion über V. Induktionsanfang: V = ist trivial. Induktionsschritt: V Betrachte Phase mit vorletztem bzw. letztem Knoten s und t. Fall : G hat einen nichttrivialen minimalen Schnitt, der s von t trennt. Schnitt der ersten Phase ist ein nichttrivialer minimaler Schnitt. Fall : G hat keinen nichttrivialen minimalen Schnitt, der s von t trennt. In jedem nichttrivialen minimalen Schnitt liegen s und t auf der gleichen Seite. Verschmilzt man s und t, so induziert ein minimaler Schnitt im resultierenden Graph G einen in minimalen Schnitt in G. Laut Induktionsvoraussetzung liefert der Algorithmus einen minimalen Schnitt für G. Algorithmen II Wintersemester 0/0