177 Maksymalny przepływ Załoenia: sie przepływow (np. przepływ cieczy, prdu, danych w sieci itp.) bdziemy modelowa za pomoc grafów skierowanych łuki grafu odpowiadaj kanałom wierzchołki to miejsca połcze kanałów waga łuku odpowiada przepustowoci kanału; c(e)>0 dla kadego łuku e, wyróniamy dwa punkty: s ródło oraz t ujcie, w niniejszym wykładzie digraf sie
178 Wstp Def. Przepływem nazywamy funkcj f:v V R spełniajc warunki: 1. dla wszystkich u,v V f(u, c(u, (przepustowo) 2. dla wszystkich u,v V f(u, = f(v,u) (skona symetryczno) 3. dla kadego u V \ {s,t} f ( u, = 0 (zachowanie przepływu) Warto przepływu to f = f ( s,. Uwaga Przyjmujemy, e f X, Y ) = f ( x, y), gdzie X V, Y V. ( x X Def. Jeli f 1, f 2 s przepływami dla tej samej sieci, to sum przepływów f 1, + f 2 definiujemy jako ( f 1 + f 2 )(u, = f 1 (u, + f 2 (u,. y Y
179 Sie residualna Def. Niech bdzie dana sie G z funkcj wagow c oraz przepływ f dla G. Przepustowo residualn odpowiadajc f definiujemy jako c f (u, = c(u, f(u, dla wszystkich wierzchołków u,v grafu G. Sie residualna dla f to digraf G f taki, e V(G f ) = V(G) oraz E(G f ) = { u,v V V: c f (u,>0 }. Przykład 6(6) 2 4(4) 3(0) 2(0) 7(3) 5(2) 7(2) 4(2) 1(0) 5(5) 8(4) 3(3) 5(4) 9(6) 2(1) 5 6 4 3 3 1 11 1 9 2 2 4 6 2 3 5 4(1) 6 Graf G (etykieta krawdzi to c(f) ) Graf G f (etykiety to c f )
180 Suma przepływów Lemat Niech G, G f bd odpowiednio sieci oraz sieci residualn utworzon na podstawie przepływu f oraz niech f bdzie przepływem w sieci G f. Wówczas f + f jest przepływem w G o wartoci f + f. Dowód: Sprawdzamy czy f + f jest przepływem: 1. (przepustowo): (f + f )(u, = f(u, + f (u, f(u, + c f (u, = = c(u, c f (u, + c f (u, = c(u, 2. (skona symetryczno): (f + f )(u, = f(u, + f (u, = f(v,u) f (v,u) = = ( f(v,u) + f (v,u) ) = (f + f )(v,u) 3. (zachowanie przepływu): ( f + f ')( u, = ( f ( u, + f '( u, ) = f ( u, + f '( u, = 0 + 0 = 0 Warto: f + f ' = ( f + f ')( s, = f ( s, + f '( s, = f + f '
181 cieka powikszajca Def.ciek powikszajc nazywamy dowoln ciek od ródła s do ujcia t w sieci residualnej G f. Przepustowoci residualncieki P jest liczba c f (P) = min{ c f (u,: (u, E(P) } Lemat Niech P bdzie ciek powikszajc dla przepływu f i sieci residualnej G f. Wówczas funkcja c f ( P) gdy ( u, E( P) fp ( u, = c f ( P) gdy ( v, u) E( P) 0 else jest przepływem w sieci G f takim, e f P =c f (P)>0. Ponadto dla przepływu f = f + f P zachodzi f > f. Wniosek Przy załoeniach z powyszego lematu mamy, e f + f p jest przepływem o wartoci wikszej ni f.
182 Przekroje Def. Przekrojem w digrafie G nazywamy par S, T tak, e s S, t T oraz S T = V i S T = jeli f jest przepływem, to przepływ netto przez przekrój (S,T) to f(s,t), przepustowo przekroju (S,T), to c(s,t). Lemat Jeli f jest przepływem w digrafie G, ze ródłem s i ujciem t, (S,T) jest przekrojem, to przepływ netto przez przekrój (S,T) wynosi f(s,t) = f. Wniosek Warto dowolnego przepływu f w sieci G nie moe by wiksza ni przepustowo dowolnego przekroju w G.
183 Przekroje Tw. Niech f bdzie przepływem w digrafie G ze ródłem s i ujciem t. Ponisze warunki s równowane: 1. przepływ f jest maksymalny, 2. sie residualna G f nie zawiera cieek powikszajcych, 3. dla pewnego przekroju (S,T), f = c(s,t). Szkic dowodu: (12) Jeli załoymy, e cieka powikszajca istnieje, to z wczeniejszego lematu otrzymujemy, e mona otrzyma wikszy przepływ. (23) Definiujemy zbiór S bdcy zbiorem wierzchołków osigalnych z s w sieci residualnej G f. Wówczas (S,V(G)\S) jest przekrojem. (31) Wynika z poprzedniego wniosku.
184 Algorytm G digraf procedure Fulkerson-Ford( G, s, t ) s ródło begin t ujcie for each (u, E(G) do begin f(u, := 0; f(v,u) := 0; end; while istnieje cieka powikszajc P w digrafie G f do begin c f (P) := min{ c f (u,: (u, E(P) }; for each (u, E(P) do begin f(u, := f(u, + c f (P); f(v,u) := f(v,u) c f (P); end; end end
185 Złoono czas wyszukiwania cieki w sieci residualnej to O( E(G f ) ) = O( E(G) ); kada iteracja ptli while jest wic wykonywana w czasie O( E(G) ); jeli przepustowoci s liczbami całkowitymi, to ptla while wykonuje co najwyej f max razy, gdzie f max jest wartoci maksymalnego przepływu; jeli przepustowoci s całkowite, to złoono wynosi O( E(G) f max ); jeli nie ma adnych ogranicze na przepustowoci (mog by dowolnymi liczbami rzeczywistymi), to moliwe jest, e algorytm bdzie działał w nieskoczono;
186 Implementacja Edmondsa-Karpa Uwaga Aby poprawi złoono algorytmu, w kadej iteracji ptli while, bdziemy szuka najkrótszej cieki powikszajcej (tutaj i w dalszej czci tego wykładu długo cieki to liczba nalecych do niej łuków). Niech d f (u, oznacza odległo pomidzy wierzchołkami u,v (=długo najkrótszej cieki pomidzy u i w sieci residualnej G f. Lemat Dana jest sie G ze ródłem s i ujciem t. Jeli w kadym przebiegu ptli while szukana jest najkrótsza cieka powikszajca w sieci G f, to dla kadego wierzchołka v V(G)\{s,t} odległo v od s w sieci residualnej G f nie maleje.
187 Złoono Tw. Dla danej sieci G ze ródłem s i ujciem t, liczba powiksze przepływu wynosi O( V(G) E(G) ). Szkic dowodu: łuk (u, na ciece powikszajcej P jest krytyczny jeli przepustowo residualna cieki P jest równa przepustowoci residualnej {u,v}; po zwikszeniu przepływu łuk krytyczny usuwany jest z sieci residualnej; z faktu, e cieka P jest najkrótsza wynika, e d f (s, = d f (s,u) + 1; łuk (u, pojawia si znowu w sieci residualnej, gdy pojawi si inna cieka powikszajca, która zawiera (v,u) jeli aktualnym wówczas przepływem jest f, to d f (s,u) = d f (s, + 1; z dwóch powyszych równoci i wczeniejszego lematu wynika, e d f (s,u) d f (s,u) + 2; odległo u od s ronie o co najmniej 2 od chwili, gdy (u, był krytyczny do chwili, gdy (u, staje si krytyczny ponownie std, kady łuk moe by krytyczny co najwyej O( V(G) ) razy
188 Najtaszy przepływ Załoenia: dany jest graf skierowany G; mamy wyrónione wierzchołki s i t ródło i ujcie; z kadym łukiem (u, w G s skojarzone dwie etykiety: c(u, przepustowo, d(u, koszt; Zadanie: znale najtaszy przepływ w sieci G, czyli znale przepływ f o zadanej wartoci F, który minimalizuje sum ( u, E( G) d( u, f ( u,
189 Szkic algorytmu w digafie G szukamy najtasz drog z s do t; przez najtasz drog rozumiemy najkrótsz wzgldem funkcji wagowej d; przesyłamy t drog moliwie najwicej jednostek przepływu; jeli liczba przesłanych jednostek przekracza F, to najtaszy przepływ został znaleziony i obliczenia s przerywane; jeli liczba przesłanych jednostek jest mniejsza ni F, to modyfikujemy odpowiednio sie; powtarzamy powysze kroki dla zmodyfikowanej sieci;
190 Modyfikacja sieci dana jest sie G, funkcje c,d oraz pewien przepływ f, zmodyfikowana sie ma identyczny zbiór wierzchołków i krawdzi, jej nowe funkcje oznaczamy odpowiednio przez c,d, Niech łuk (u, ma niezerowy przepływ w sieci G. Wówczas: 1. c (v,u) := f(u, [dodanie pozornego łuku] 2. d (v,u) := d(u, 3. c (u, := c(u, f(u, jeli f(v,u)=0 i c(u, > f(u, 4. d (u, := d(u, jeli f(v,u)=0 i c(u, > f(u, 5. c (u, := 0 jeli f(v,u)=0 i c(u, = f(u, 6. d (u, := + jeli f(v,u)=0 i c(u, = f(u, Uwaga Dalej piszc G mamy na myli digraf G z funkcjami wagowymi c,d.
191 Algorytm Busackera i Gowena procedure BG( G, c, d ) begin G := G; while ( f < F ) and (istnieje droga z s do t w G ) do begin znajd najkrótsz ciek P łczc s i t w G ; if cieka P nie istnieje then koniec ; zmodyfikuj przepływ f wykorzystujc P przesyłajc maksymaln liczb jednostek wzdłu P (jeli uzyskany przepływ jest wikszy ni F, to przesyłamy jedynie tak liczb jednostek, która daje przepływ o wartoci F; wyznacz zmodyfikowan sie G ; end end Złoono: O(n 2 F)