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?

Podobne dokumenty