Algorytmika Praktyczna Przepywy w sieciach dr in Szymon

  • Slides: 23
Download presentation
Algorytmika Praktyczna Przepływy w sieciach dr inż. Szymon Wąsik mgr inż. Artur Laskowski

Algorytmika Praktyczna Przepływy w sieciach dr inż. Szymon Wąsik mgr inż. Artur Laskowski

Sieć przepływowa ● ● ● Sieć przepływowa – graf skierowany Każda krawędź ma określoną

Sieć przepływowa ● ● ● Sieć przepływowa – graf skierowany Każda krawędź ma określoną przepustowość ck Przepustowość określa ile „towaru” można daną krawędzią przetransportować Przepływ fk określa ile „towaru” jest faktycznie transportowane Wyróżnione wierzchołki: ● ● Źródło s Ujście t

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7 4 13 v 3 14 v 4

Maksymalny przepływ ● Znaleźć maksymalną ilość towaru, którą można przetransportować ze źródła do ujścia

Maksymalny przepływ ● Znaleźć maksymalną ilość towaru, którą można przetransportować ze źródła do ujścia v 1 12/12 v 2 15/20 11/16 s 0/10 1/4 4/9 t 7/7 4/4 8/13 v 3 11/14 v 4

Własności przepływu ● ● ● Nie przekracza przepustowości - warunek przepustowości: fk <= ck

Własności przepływu ● ● ● Nie przekracza przepustowości - warunek przepustowości: fk <= ck Symetryczny: fi, j = -fj, i Przepływ wpływający jest 12/12 v równy wypływającemu – 11/16 zachowanie przepływu 0/10 1/4 s 4/9 (oprócz s, t) 1 v 2 15/20 4/4 8/13 v 3 11/14 t 7/7 v 4

Własności przepływu ● Od czego zależy maksymalny przepływ? ● W pewnym momencie powstaje „wąskie

Własności przepływu ● Od czego zależy maksymalny przepływ? ● W pewnym momencie powstaje „wąskie gardło” v 1 12/12 v 2 15/20 11/16 10 1/4 s 4/9 t 7/7 4/4 8/13 v 3 11/14 v 4

Przekrój sieci Przekrój - podział zbioru wierzchołków na zbiór S zawierający źródło i T

Przekrój sieci Przekrój - podział zbioru wierzchołków na zbiór S zawierający źródło i T zawierający ujście ● Przepustowość przekroju – suma przepustowości wszystkich krawędzi z S do T ●

Twierdzenie ● Tw. o maksymalnym przepływie i minimalnym przekroju (ang. Max-Flow Min-Cut): Wartość maksymalnego

Twierdzenie ● Tw. o maksymalnym przepływie i minimalnym przekroju (ang. Max-Flow Min-Cut): Wartość maksymalnego przepływu jest równa minimalnej przepustowości spośród wszystkich przekrojów sieci.

Znajdowanie przepływu Metoda Forda-Fulkersona: Dopóki istnieje ścieżka powiększająca przepływ, powiększ względem niej przepływ ●

Znajdowanie przepływu Metoda Forda-Fulkersona: Dopóki istnieje ścieżka powiększająca przepływ, powiększ względem niej przepływ ● Ścieżka powiększająca (ang. augmenting path) – ścieżka, po której można coś jeszcze przesłać ze źródła do ujścia nie przekraczając przepustowości ●

Definicje ● ● ● Krawędź nasycona – krawędź k dla której fk = c

Definicje ● ● ● Krawędź nasycona – krawędź k dla której fk = c k Krawędź nienasycona – krawędź k dla której fk < ck Przepustowość residualna – określa ile można przesłać wzdłuż krawędzi: cfk = ck - fk Gdy przepływ jest ujemny może być większa od przepustowości!

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7 4 13 v 3 14 v 4

Przykład v 1 4/12 v 2 20 4/16 20 12 10 4 s 10

Przykład v 1 4/12 v 2 20 4/16 20 12 10 4 s 10 4/9 t 77 4/4 13 v 3 4/1410 v 4

Przykład v 1 4/12 8 v 2 7/20 11/16 s 13 7/10 4 11

Przykład v 1 4/12 8 v 2 7/20 11/16 s 13 7/10 4 11 4/9 t 7/7 4/4 1313 v 3 11/14 v 4

Przykład v 1 12/12 v 2 15/20 11/16 5 10 1/4 s 4/94 t

Przykład v 1 12/12 v 2 15/20 11/16 5 10 1/4 s 4/94 t 7/7 4/4 8/135 v 3 11/14 v 4

Przykład v 1 12/12 v 2 19/20 11/16 s 10 1/4 9 t 7/7

Przykład v 1 12/12 v 2 19/20 11/16 s 10 1/4 9 t 7/7 4/4 12/13 v 3 11/14 v 4

Znajdowanie ścieżek powiększających ● Dowolne: ● ● ● W przypadku ogólnym nawet czas działania

Znajdowanie ścieżek powiększających ● Dowolne: ● ● ● W przypadku ogólnym nawet czas działania nieskończony Dla liczb całkowitych O(E |f*|), gdzie |f*| to wartość maksymalnego przepływu BFS – algorytm Edmondsa-Karpa – O(VE 2) – dla grafów gęstych O(V 5) DFS wg odległości od źródła – alg. Dinica O(V 2 E) / O(V 4) Algorytm Dinica z usuwaniem krawędzi nasyconych O(V 3) Najlepszy znany O(VE) – mix dwóch algorytmów

Algorytm Dinica ● Powtarzaj następujące kroki: ● ● Idąc po krawędziach nienasyconych wyznacz wierzchołkom

Algorytm Dinica ● Powtarzaj następujące kroki: ● ● Idąc po krawędziach nienasyconych wyznacz wierzchołkom odległość od źródła za pomocą algorytmu BFS Wykonaj algorytm DFS, który szuka ścieżek powiększających: Może wchodzić kilka razy do tego samego wierzchołka Może przejść tylko z wierzchołka o odległości k do k+1 ● Po dojściu do ujścia zwiększa przepływ na ścieżce o wartość minimalnej przepustowości residualnej na ścieżce ● ●

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7

Przykład v 1 12 v 2 20 16 10 4 s 9 t 7 4 13 v 3 14 v 4

Przykład Min. CF=12 12 1 2 20 16 10 4 s 9 7 13

Przykład Min. CF=12 12 1 2 20 16 10 4 s 9 7 13 1 14 2 3 4 Min. CF=4

Przykład v 1 12/12 v 2 12/20 12/16 10 4 s 9 t 7

Przykład v 1 12/12 v 2 12/20 12/16 10 4 s 9 t 7 4/4 4/13 v 3 4/14 v 4

Przykład 1 12/12 3 12/20 12/16 10 4 s 9 4/13 1 4/14 4

Przykład 1 12/12 3 12/20 12/16 10 4 s 9 4/13 1 4/14 4 7 Min. CF=7 4/4 2

Przykład v 1 12/12 v 2 19/20 12/16 s 10 4 9 t 7/7

Przykład v 1 12/12 v 2 19/20 12/16 s 10 4 9 t 7/7 4/4 11/13 v 3 11/14 v 4

Przykład 1 12/12 ∞ 19/20 12/16 s 10 4 9 ∞ 7/7 4/4 11/13

Przykład 1 12/12 ∞ 19/20 12/16 s 10 4 9 ∞ 7/7 4/4 11/13 1 11/14 2