Temat: Maksymalny przepływ w sieci, cz. III: algorytm Dinica
Transkrypt
Temat: Maksymalny przepływ w sieci, cz. III: algorytm Dinica
Temat: Maksymalny przepływ w sieci, cz. III: algorytm Dinica, algorytm trzech Hindusów, maksymalny przepływ w sieci o zero-jedynkowej przepustowo ci, przepływy w sieciach dwudzielnych. 1. Algorytm Dinica Kolejny algorytm rozwi zuj cy problem maksymalnego przepływu opiera si na poj ciu przepływu blokuj cego. Def. Przepływem blokuj cym w sieci rezydualnej G(f) nazywamy taki przepływ b, który nasyca co najmniej jedn kraw d w ka dej najkrótszej cie ce z s do t w sieci G(b). Załó my na chwil , e mamy algorytm znajduj cy przepływ blokuj cy. Poka emy jak go wykorzysta do znalezienia przepływu maksymalnego. Algorytm wyznaczaj cy przepływ blokuj cy zostanie opisany pó niej. Algorytm Dinica; f = 0; while („istnieje cie ka od s do t w G(f)”) { „znajd przepływ blokuj cy b w G(f)”; „powi ksz przepływ f do b”; „wyznacz sie rezydualn G(b)”; } Zanim przejdziemy do opisu algorytmów znajduj cych przepływ blokuj cy, wprowadzimy poj cie sieci warstwowej. Def. Sie warstwow G’(f) = <V, E’f > dla sieci rezydualnej G(f) = <V, Ef > definiujemy jako graf skierowany o nast puj cym zbiorze kraw dzi: E’f={(i, j): (i, j)∈Ef i ds(i)+1=ds( j)}, gdzie ds(i) to minimalna odległo z s do wierzchołka i w sieci G(f). Zauwa my, e wszystkie cie ki w sieci warstwowej G’(f) z s do t s najkrótszymi cie kami. Je eli chcemy wyszuka przepływ blokuj cy, to robi c to w sieci warstwowej, b dziemy mieli automatycznie wygenerowane wszystkie najkrótsze cie ki. W grafie G’(f) wszystkie cie ki s najkrótsze, jednak nie wszystkie cie ki musz prowadzi do t. Je eli usuniemy zawczasu z grafu G(f) kraw dzie, które prowadz donik d, to cie ki z s do t b dziemy mogli wyszukiwa w czasie O(n). Algorytm Dinic_blocking_flow; „skonstruuj sie warstow G’(f)”; while (E’f Ø) { „znajd cie k P z s do t w G’(f)”; δ = min{rij: (i, j)∈P}; „zwi ksz przepływ w sieci G(f) o warto δ”; „zaktualizuj sie warstwow G’(f)”; } „usu z sieci G’(f), rekurencyjnie wierzchołek i oraz inne wierzchołki, je eli nie wychodzi z nich albo nie dociera do nich adna kraw d rezydualna”; Przykład Sie G(f) dla f = 0 Obliczamy odległo ci z s do pozostałych wierzchołków sieci G(f) Na podstawie sieci rezydualnej G(f) i etykiet odległo ci wierzchołków konstruujemy sie warstwow G’(f) W sieci G’(f) znajdujemy dowoln cie k P z s do t. Powi kszamy przepływ na cie ce P i aktualizujemy sie warstwow . Kraw dzie nasycone zostaj usuni te. Z zaznaczonego wierzchołka nie wychodzi adna kraw d , wi c mo emy j usun . Znajdujemy dowoln cie k P z s do t. Powi kszamy przepływ na cie ce P i aktualizujemy sie warstwow . Kraw dzie nasycone zostaj usuni te. Znajdujemy dowoln cie k s do t Powi kszamy przepływ na cie ce P i aktualizujemy sie warstwow . Kraw dzie nasycone zostaj usuni te. Usuwamy wierzchołki z których nie wychodzi adna kraw d rezydualna (oczywi cie oprócz s i t). Usuwamy kolejne wierzchołki I znowu mamy do usuni cia kolejne wierzchołki. I jeszcze jeden wierzchołek do usuni cia. W sieci nie ma ju kraw dzi, wi c wyznaczyli my przepływ blokuj cy i wygl da on nast puj co: Sie rezydualna wzgl dem znalezionego przepływu blokuj cego Zauwa my, e w sieci nadal mog istnie cie ki rozszerzaj ce, ale ich długo jest wi ksza od tych, które były w sieci przed znalezieniem przepływu blokuj cego. Po zako czeniu algorytmu, w grafie G’(f) nie pozostanie adna cie ka z s do t. Skonstruowany przepływ b dzie wi c przepływem maksymalnym. Koszt algorytmu Dinica: Główna p tla algorytmu generuj cego przepływ blokuj cy wykonana zostanie co najwy ej m razy, bo w ka dym jej przebiegu nasycana jest co najmniej jedna kraw d . P tl t mo na zaimplementowa tak, aby działała w czasie O(n), dlatego całkowity czas działania algorytmu wyznaczaj cego przepływ blokuj cy wynosi O(nm). Poniewa maksymalna długo najkrótszej cie ki mo e wynosi co najwy ej n-1, maksymalna liczba faz w algorytmie Dinica wynosi n. Zatem koszt ł czny algorytmu Dinica wynosi O(n2m). Mo na poprawi algorytm znajdowania przepływu blokuj cego tak, aby jego koszt wynosił O(n2) (algorytm trzech Hindusów, który nazywany jest te algorytmem MKM). Ł cz c ten algorytm z algorytmem Dinica, otrzymujemy algorytm znajduj cy maksymalny przepływ w grafie w czasie O(n3). 2. Znajdowanie przepływu blokuj cego - algorytm trzech Hindusów W algorytmie tym u yjemy poj cia przepustowo ci wierzchołka w sieci. Def. Przepustowo ci wierzchołka v w sieci G nazywamy warto mniejsz z dwóch warto ci: i Przepustowo wierzchołka v b dziemy oznacza przez c(v). W algorytmie trzech Hindusów, w ka dym wykonaniu głównej p tli algorytmu, nasycany jest jeden wierzchołek sieci (tj. jego przepustowo spada do zera), poprzez przesłanie z niego przepływu do przodu i w pewnym sensie do tyłu. W czasie wykonywania p tli funkcja f nie spełnia warunku zachowania przepływu, jednak pod koniec ten warunek zostanie przywrócony. U yjemy w algorytmie dwóch pomocniczych procedur: • • forward(v) - je eli do wierzchołka v wpływa wi kszy przepływ ni wypływa, to procedura ta przesyła ten nadmiar do przodu w sieci warstwowej G’(f), nasycaj c po kolei kraw dzie wychodz ce z v, back(v) - je eli z wierzchołka v wypływa wi cej ni do niego wpływa, to procedura ta kompensuje ten niedomiar, przesyłaj c przepływ z wierzchołków, z których istniej w sieci warstwowej G’(f) kraw dzie do v, nasycaj c po kolei kraw dzie wchodz ce do v. algorytm MKM; (Malhotra, Kumar i Maheshwari) b=0 „skonstruuj sie warstwow G’(f)”; while (E’f Ø) { „znajd wierzchołek v o najmniejszej warto ci c(v)”; „prze lij c(v) jednostek przepływu kraw dziami wychodz cymi z v”; „prze lij c(v) jednostek przepływu kraw dziami wchodz cymi do v”; „usu kraw dzie nasycone wychodz ce z v lub docieraj ce do v”; for (i = ds(v)+1; i<=n-1;i++) for w∈{j∈V: ds(j)=i} { forward(w); „popraw przepustowo w”; „usu kraw dzie nasycone wychodz ce z w”; }; for (i = ds(v)-1; i>=1;i--) for w∈{j∈V: ds(j)=i} { back(w); „popraw przepustowo w”; „usu kraw dzie nasycone docieraj ce do w”; }; „usu v z grafu”; } Przykład Sie pocz tkowa, f = 0 Obliczamy odległo ci ze ródła do pozostałych wierzchołków w sieci G(f) Konstruujemy sie warstwow G’(f) na podstawie sieci rezydualnej Dla ka dego wierzchołka v sieci oprócz s i t wyznaczamy przepustowo c(v) (zapisane wewn trz wierzchołków) Wybieramy wierzchołek v o najmniejszej warto ci c(v) Wysyłamy przez wybrany wierzchołek v, zachłannie, do przodu i do tyłu, warto c(v) przepływu. Po tym kroku przepływ mo e nie spełnia warunku zerowego bilansu przepływu w w złach wewn trznych sieci. Usuwamy z sieci kraw dzie nasycone. Kolejnym krokiem b dzie rozładowanie nadmiaru lub niedomiaru przepływu w w złach wewn trznych sieci. Wysyłamy zachłannie nadmiar lub niedomiar przepływu do przodu i do tyłu. Usuwamy kraw dzie nasycone Usuwamy wierzchołek v. Wybieramy nowy wierzchołek v o aktualnie najmniejszej przepustowo ci. Poniewa przepustowo wybranego wierzchołka wynosi zero, to zostaje on usuni ty z sieci (nie trzeba z niego rozsyła przepływu) Wybieramy kolejny wierzchołek v o najmniejszej przepustowo ci Wybrany wierzchołek zostaje usuni ty z sieci, poniewa ma zerow przepustowo Znowu wybieramy wierzchołek o najmniejszej przepustowo ci Wybrany wierzhołek równie jest usuwany,bo ma zerow przepustowo Wybieramy nast pny wierzchołek o najmniejszej przepustowo ci Przepustowo c wierzchołka nie jest zerowa,wi c trzeba rozesła z niego przepływ. Usuwamy zerowe kraw dzie i rozsyłamy niedomiar lub nadmiar przepływu w zaznaczonych wierzchołkach. Wracamy do wierzchołka v. Usuwamy wierzchołek v z sieci Wybieramy wierzhołek v o najmniejszej przepustowo ci Poniewa jego przepustowo jest zerowa to usuwamy go z sieci W sieci zostaje ju tylko jeden wewn trzny wierzchołek, ale jego przepustowo jest zerowa, wi c go równie usuwamy z sieci. Sie nie ma ju kraw dzi, zatem wygenerowany przepływ jest blokuj cy i mo na kontynuowa algorytm Dinica. Poniewa wybieramy wierzchołek o najmniejszej przepustowo ci, to zawsze w procedurach forward oraz back uda nam si przesła nadmiar b d zrekompensowa niedomiar przepływu w wierzchołku. Główna p tla algorytmu Koszt algorytmu trzech Hindusów: generuj cego przepływ blokuj cy mo e wykona si co najwy ej n-2 razy, poniewa za ka dym razem nasycany jest co najmniej jeden wierzchołek grafu. Mo na tak zaimplementowa poszczególne kroki p tli głównej, aby ich ł czny koszt nie przekroczył O(n). Czas potrzebny na znalezienie przepływu blokuj cego wynosi wi c O(n2). Ł cz c ten algorytm z algorytmem Dinica, otrzymujemy algorytm znajduj cy maksymalny przepływ w grafie w czasie O(n3). 3. Maksymalny przepływ w sieciach zero-jedynkowych Załó my, e mamy sie o przepustowo ci ka dej kraw dzi równej 1 i chemy dla tej sieci ustali maksymalny przepływ o warto ciach całkowitych. Mo liwie warto ci takiego przeplywu to oczywi cie 0 albo 1. Do rozwi zania tego szczególnego wariantu problemu maksymalnego przepływu mo na zastosowa ka dy z omawianych ju algorytmów i jego koszt b dzie wynosił O(nm), poniewa , je eli zastosujemy dla tego typu sieci algorytm Forda-Fulkersona czy Edmonsa- Karpa, to liczba rozpatrywanych cie ek nie przekroczy n. Okazuje si , e dla wariantu zero-jedynkowego przepływu mo na poda algorytm hybrydowy o ni szym koszcie, który jest oparty na algorytmie Edmundsa – Karpa (wersja poprawiona) i Forda – Fulkersona. Algorytm ten ma dwie fazy. W pierwszej fazie zwi kszany jest przepływ wzdłu cie ek dopuszczalnych, tak jak w algorytmie Edmonsa – Karpa (wersja poprawiona). Faza pierwsza algorytmu ko czy si , gdy warto etykiety odległo ci dla wierzchołka s, d(s), stanie si równa lub wi ksza ni min{ 2n2/3 , m1/2 }. Przepływ wygenerowy w wyniku pierwszej fazy algorytmu nie musi by jednak optymalny. Druga faza algorytmu sprawdza, czy w sieci znajduj si jeszcze scie ki rozszerzaj ce. Je eli tak, to przepływ jest zwi kszany wzdłu tych cie ek. Algorytm ko czy si , gdy w sieci nie ma ju scie ek rozszerzaj cych. Przykład Wszystkie kraw dzie sieci maj przepustowo znajduj si etykiety odległo ci równ 1. W w złach n=9 m = 13 2n2/3 = 19 m1/2 = 4 W pierwszej fazie algorytmu zwi kszany jest przepływ a do chwili, kiedy etykieta odległo ci wierzchołka s wzro nie do 4, co nast pi ju po zwi kszeniu przepływu na pierwszej cie ce dopuszczalnej W drugiej fazie algorytmu analizowane s cie ki rozszerzaj ce. W przykładowym grafie jest jedna taka cie ka. Koszt algorytmu hybrydowego: Mo na pokaza , e liczba cie ek wygenerowanych w obydwu fazach algorytmu wynosi co najwy ej 2n2/3 , gdy min{ 2n2/3 , m1/2 }= 2n2/3 albo co najwy ej m1/2 , gdy min{ 2n2/3 , m1/2 }= m1/2 . Poniewa zwi kszenie przepływu na ka dej cie ce realizujemy kosztem O(m), to koszt ł czny algorytmu wynosi O(min{n2/3m, m3/2}) . 4. Przepływy w grafach dwudzielnych Def. Graf G = <V, E> nazywamy grafem dwudzielnym, gdy mo na podzieli zbiór wierzchołków V na dwa rozł czne podzbiory V1 i V2, takie, e je eli kraw d (i, j)∈E, to i∈V1 a j ∈V2 albo j∈V1 a i ∈V2. Przykład V1 = {1, 2, 3, 9} V2 = {4, 5, 6,7, 8} a) Testowanie niezawodno ci sieci Załó my, ze checmy przetestowa ka de połaczenie (i, j) w sieci komputerowej ij razy. Niestety z powodu ogranizczonych zasobów, mo emy testowa dziennie co najwy ej j poł cze ka dego w zła j tej sieci. Problem polega na tym, aby ustali sposób testowania taki, aby testy sieci trwały jak najkrócej (jak najmniejsz liczb dni). Rozwi zanie polega na ustaleniu maksymalnego przepływu w specyficznie skontrowanej sieci dwudzielnej. W sieci tej w zbiorze V1 znajduje si jej uj cie t oraz wezły reprezentuj ce terminale w sieci komputerowej, do zbioru V2 nale w zły reprezentuj ce testowane poł czenia oraz ródło sieci s. Kraw dzie sieci s niezorientowane i s zdefiniowane nast puj co: - (s, i) – kraw d mi dzy s a teminalem i o przepustowo ci i, gdzie oznacza poszukiwan optymaln liczb dni testowania - (i,(i, j)) – kraw d mi dzy terminalem i a poł czeniem mi dzy terminalami i oraz j o przepustowo ci niesko czonej - (j,(i, j)) – kraw d mi dzy terminalem j a poł czeniem mi dzy terminalami i oraz j o przepustowo ci niesko czonej - ((i, j), t) – kraw d mi dzy poł czeniem (i, j) a uj ciem sieci t o przepustowo ci ij. Przykład Sie , któr trzeba przetestowa (i, j) ij i i (1, 2) 3 (1, 3) 5 (2, 3) 4 (2, 4) 6 1 1 2 2 3 1 4 2 (3, 4) 3 Sie dwudzielna odpowiadaj ca testowanej sieci komputerowej Rozwi zanie problemu testowania sieci ustalamy w sposób nast puj cy: Wyznaczamy minimaln warto , przy której maksymalny przepływ sieci dwudzielnej nasyca wszytskie kraw dzie docieraj ce do t. b) Maksymalne skojarzenie w grafie dwudzielnym Oferta pewnego biura matrymonialnego dotyczy n1 kobiet i n2 m czyzn. Ka da z kobiet okre liła podzbiór m czyzn, z którymi mogłaby ewentualnie si zwi za . Nale y ustali takie skojarzenia par, aby ich liczba była najwy sza i aden m czyzna ani adna kobieta nie była skojarzona z wi cej ni jednym partnerem Przykład Sie dwudzielna odpowiadaj ca problemowi skojarze Rozwi zanie problemu maksymalnej liczby skojerze w grafie dwudzielnym polega na ustaleniu maksymalnego przepływu w 0-1 sieci dwudzielnej. Pytanie: Jak optymalnie rozwi za problem wyznaczania maksymalnego przepływu w sieci dwudzielnej?