Maksymalny przepªyw
Autor projektu: dr Andrzej Mróz (UMK)
Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziaªania 4.1.1 Programu Operacyjnego
Kontekst
Cel:
Modelowanie za pomoc¡ grafu skierowanego sieci przepªywowej:
badanie procesu przemieszczania si¦ pewnego materiaªu w sieci; materiaª kr¡»y w sieci od ¹ródªa (miejsca wytworzenia) do uj±cia (miejsca zu»ycia);
¹ródªo wytwarza materiaª ze staª¡ szybko±ci¡, z tak¡ sam¡ szybko±ci¡ jest on zu»ywany w uj±ciu;
przepªyw w danym punkcie systemu = szybko±¢, z jak¡ materiaª przemieszcza si¦ przez ten punkt.
Kontekst
Przykªady sieci przepªywowych:
przepªyw cieczy w ruroci¡gach,
przepªyw cz¦±ci na liniach monta»owych, przepªyw pr¡du w sieciach energetycznych, przepªyw informacji w sieciach komunikacyjnych, transport towarów z fabryki do odbiorcy/magazynu.
Kontekst
Kraw¦d¹ (skierowana) grafu = kanaª, którym co± pªynie. Ka»dy kanaª ma ustalon¡ przepustowo±¢.
Wierzchoªki ró»ne od ¹ródªa i uj±cia s¡ punktami, w których zbiegaj¡ si¦ kanaªy (przepªyw nie jest w tych punktach zatrzymywany).
Szybko±¢ wpªywania do wierzchoªka = szybko±¢ wypªywania z niego (wªasno±¢ zachowania przepªywu, por. prawo Kirchhoa).
Problem
Problem (nieformalnie)
Dla danej sieci przepªywowej znale¹¢ maksymalny przepªyw, tj. najwi¦ksz¡ szybko±¢, z jak¡ mo»e nast¦powa¢ przepªyw ze ¹ródªa do uj±cia bez naruszenia przepustowo±ci kanaªów.
Innymi sªowy: z jak¡ maksymaln¡ szybko±ci¡ ¹ródªo mo»e produkowa¢ materiaª, aby zostaª on dostarczony do uj±cia bez naruszenia zasad.
Sie¢ przepªywowa
Denicja
Sie¢ przepªywowa(krótko: sie¢) = graf skierowany G = (V , E) z funkcj¡ wagi c : E → R+ zwan¡przepustowo±ci¡.
Dodatkowo:
przepustowo±¢ rozszerzamy na wszystkie pary wierzchoªków kªad¡c c(u, v) = 0, gdy (u, v) /∈ E,
wyró»niamy dwa wierzchoªki: ¹ródªos i uj±ciet,
o grae G zakªadamy, »e ka»dy wierzchoªek le»y na pewnej drodze ze ¹ródªa do uj±cia.
Sie¢ przepªywowa przykªady
Prosty przykªad: -20 -10 -15 w g wg wg wg s a b tPrzepustowo±¢ w sieci mo»emy reprezentowa¢ w formie tablicy (analogicznie do wagowej macierzy s¡siedztwa). Tutaj:
c s a b t s 0 20 0 0 a 0 0 10 0 b 0 0 0 15 t 0 0 0 0
Sie¢ przepªywowa przykªady
Przykªad II. * 16 H H H H j 13 -12 -14 H H H H j 20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c tPrzepªyw
Denicja
Przepªyww sieci G = dowolna funkcja f : V × V → R speªnia-j¡ca warunki:
1 Warunek przepustowo±ci:
∀u,v∈V f (u, v) ≤ c(u, v).
2 Warunek sko±nej symetryczno±ci:
∀u,v∈V f (u, v) = −f (v, u).
3 Warunek zachowania przepªywu:
∀u∈V \{s,t} X
v∈V
f (u, v) = 0.
Wielko±¢ f (u, v) nazywamyprzepªywem netto z wierzchoªka u do v.
Przepªyw
Lemat
Dla dowolnego przepªywu f w sieci G zawsze mamy:
1 ∀u∈V f (u, u) = 0,
2 warunek zachowania przepªywu mo»emy zapisa¢ równowa»nie
jako ∀v∈V \{s,t} P
u∈V f (u, v) = 0,
3 gdy (u, v) /∈ E ani (v, u) /∈ E, to f (u, v) = f (v, u) = 0.
Udowodnimy tez¦ 3, pozostaªe zostawiamy jako ¢wiczenie. (u, v) /∈ E, (v, u) /∈ E ⇒ c(u, v) = 0 = c(v, u), st¡d (z w-ku przepustowo±ci): f (u, v) ≤ c(u, v) = 0 i f (v, u) ≤ c(v, u) = 0 oraz ze sko±nej symetryczno±ci f (u, v) = −f (v, u). Zatem f (u, v) ≤ 0 oraz f (u, v) ≥ 0, czyli f (u, v) = 0. Podobnie f (v, u) = 0.
Przepªyw
Uwaga
Istotne s¡ warto±ci dodatnie przepªywu netto. Jedynie wówczas materiaª faktycznie przepªywa przez dany kanaª. Warto±ci 0 i ujemne maj¡ charakter pomocniczy.
Przepªyw
Przykªad I. Rozwa»my sie¢
-20 -10 -15 w g wg wg wg s a b t c s a b t s 0 20 0 0 a 0 0 10 0 b 0 0 0 15 t 0 0 0 0
i funkcj¦ f : V × V → R zdeniowan¡ przy pomocy tablicy:
f s a b t s 0 6 0 0 a −6 0 6 0 b 0 −6 0 6 t 0 0 −6 0
Czy f jest przepªywem? Warunki przepustowo±ci i sko±nej
symetryczno±ci s¡ w oczywisty sposób speªnione. Sprawd¹my w-k zachowania przepªywu dla wierzchoªka u = a:
X v∈V
f (u, v) = f (a, s) + f (a, a) + f (a, b) + f (a, t) = −6 + 0 + 6 + 0 = 0
Przepªyw
Konwencja: Dla uproszczenia na diagramie b¦dziemy zaznacza¢ (oprócz przepustowo±ci) tylko dodatnie warto±ci przepªywu netto w postaci
f (u, v)/c(u, v)
(pozostaªe warto±ci przepªywu nietrudno odtworzy¢). W przykªadzie I: -6/20 -6/10 -6/15 w g wg wg wg s a b t c s a b t s 0 20 0 0 a 0 0 10 0 b 0 0 0 15 t 0 0 0 0 f s a b t s 0 6 0 0 a −6 0 6 0 b 0 −6 0 6 t 0 0 −6 0
Przepªyw dodatni
Denicja
Dodatni przepªyw netto wpªywaj¡cy do v ∈ V : |f→+v| = X
u∈V ; f (u,v)>0
f (u, v).
Denicja
Dodatni przepªyw netto wypªywaj¡cy z v ∈ V : |fv→+ | = X
u∈V ; f (v,u)>0
f (v, u). Uwaga
Wªasno±¢ zachowania przepªywu ⇔ ∀v∈V \{s,t} |f+
Przepªyw dodatni
Przykªad I. -6/20 -6/10 -6/15 w g wg wg wg s a b t |f→+a| =6, |fa→+ | =6, |f→+b| =6, |fb→+ | =6.Przepªyw dodatni
Przykªad II. * 11/16 H H H H j 8/13 -12/12 -11/14 H H H H j 15/20 * 4/4 ? 10 6 1/4 4/9 6 7/7 w g w g w g w g w g w g s b a d c tJe»eli f (u, v) = 0 dla (u, v) ∈ E, piszemy tylko przepustowo±¢ (10 zamiast 0/10 powy»ej).
Sprawdzamy, »e funkcja f zadana przez powy»sze warto±ci speªnia wªasno±¢ zachowania przepªywu (w terminach przepªywu
dodatniego):
|f→+a| =12 = |fa→+ |, |f→+c| =19 = |fc→+ |, |f→+b| =12 = |fb→+ |, |f→+d| =11 = |fd→+ |. Jest to wi¦c przepªyw (pozostaªe wªasno±ci oczywiste).
Maksymalny przepªyw
Denicja
Warto±¢ przepªywuf to liczba |f | = X
v∈V
f (s, v).
Przepªyw f nazywamymaksymalnym, gdy jego warto±¢ jest naj-wi¦ksza spo±ród wszystkich przepªywów.
Uwaga
Z wªasno±ci przepªywu wynika, »e |f | = P
v∈V f (v, t). Problem maksymalnego przepªywu
Maksymalny przepªyw
Przykªad I. -6/20 -6/10 -6/15 w g wg wg wg s a b t |f | = 6.atwo zauwa»y¢, »e nie jest to przepªyw maksymalny. Maksymalny przepªyw ma warto±¢ 10: -10/20 -10/10 -10/15 w g wg wg wg s a b t |f | = 10.
Maksymalny przepªyw
Przykªad II. * 11/16 H H H H j 8/13 -12/12 -11/14 H H H H j 15/20 * 4/4 ? 10 6 1/4 4/9 6 7/7 w g w g w g w g w g w g s b a d c t |f | = 11 + 8 = 15 + 4 = 19.Zauwa»my, »e na pierwszy rzut oka nie jest ªatwo stwierdzi¢ czy jest to przepªyw maksymalny. Wskazanie maksymalnego przepªywu równie» wymaga chwili zastanowienia.
Okazuje si¦, »e problemy zwi¡zane z maksymalnym przepªywem (istnienie, poprawno±¢ algorytmów, wªasno±¢ stopu...) s¡ do±¢ gª¦bokie. Skupimy si¦ na gªównych ideach i opisie samego al-gorytmu. Po szczegóªow¡ analiz¦ odsyªamy np. do ksi¡»ki [1] ze spisu literatury do wykªadu (T. H. Cormen et al.).
Metoda
Metoda Forda-Fulkersona rozwi¡zywania problemu maksymalnego przepªywu jest podstaw¡ kilku algorytmów o ró»nych zªo»ono±ciach. Ogólny schemat:
start od przepªywu netto f (u, v) = 0, dla wszystkich u, v ∈ V ( ⇒ |f | = 0);
w ka»dej iteracji zwi¦kszamy warto±¢ przepªywu znajduj¡c pewn¡ drog¦ powi¦kszaj¡c¡;
droga powi¦kszaj¡ca = droga z s do t, po której mo»na przesªa¢ wi¦kszy przepªyw.
FordFulkersonMethod(G, c, s, t) 1 begin
2 zainicjuj f na 0;
3 while istnieje droga powi¦kszaj¡ca pdo
4 powi¦ksz przepªyw f wzdªu» p; 5 returnf
Sieci residualne
Nieformalnie: sie¢ residualna (dla danej sieci przepªywowej i przepªywu) = graf skªadaj¡cy si¦ z kraw¦dzi, które dopuszczaj¡ wi¦kszy przepªyw netto.
Dane: Sie¢ G = (V , E) z przepustowo±ci¡ c, ¹ródªem s ∈ V i uj±ciem t ∈ V ; przepªyw f w G.
Denicja
Przepustowo±¢ residualna dla pary (u, v) ∈ V × V to liczba cf(u, v) := c(u, v) − f (u, v).
cf(u, v) o tyle mo»na zwi¦kszy¢ przepªyw netto z u do v, by
nie przekroczy¢ przepustowo±ci.
Sieci residualne
Denicja
Sie¢ residualna (dla sieci G, indukowana przez przepªyw f ) = sie¢ Gf = (V , Ef), gdzie
Ef = {(u, v) ∈ V × V : cf(u, v) > 0}. cf traktujemy jako funkcj¦ przepustowo±ci dla sieci Gf.
(u, v) mo»e by¢ kraw¦dzi¡ w Ef, nawet je±li nie jest kraw¦dzi¡ w E !
Przykªady sieci residualnych
Przykªad I. Rozwa»my sie¢ G z przepªywem f :
-6/20 -6/10 -6/15 w g wg wg wg s a b t c s a b t s 0 20 0 0 a 0 0 10 0 b 0 0 0 15 t 0 0 0 0 f s a b t s 0 6 0 0 a −6 0 6 0 b 0 −6 0 6 t 0 0 −6 0
Zatem przepustowo±¢ residualna zadana jest tabel¡
cf s a b t s 0 14 0 0 a 6 0 4 0 b 0 6 0 9 t 0 0 6 0
czyli sie¢ residualna Gf ma posta¢ -14 -4 -9 6 6 6 w g wg wg wg s a b t
Przykªady sieci residualnych
Przykªad II. Natomiast dla sieci G z przepªywem f :
* 11/16 H H H H j 8/13 -12/12 -11/14 H H H H j 15/20 * 4/4 ? 10 6 1/4 4/9 6 7/7 w g w g w g w g w g w g s b a d c t
Sie¢ residualna Gf ma posta¢:
* 5 11 H H H H j 5HH H H Y 8 12 -3 11 H H H H j 5 H H H H Y 15 4 ? 11 6 3 5 4 ? 7 w g w g w g w g w g w g s b a d c t
Droga powi¦kszaj¡ca
Dane: Sie¢ G = (V , E) z przepustowo±ci¡ c, ¹ródªem s ∈ V i uj±ciem t ∈ V ; przepªyw f w G.
Denicja
Droga powi¦kszaj¡ca= droga (prosta) z s do t w sieci Gf.
Denicja
Przepustowo±¢ residualna drogi powi¦kszaj¡cej p = liczba cf(p) := min{cf(u, v) : (u, v) ∈ p}.
Droga powi¦kszaj¡ca
Wówczas powi¦ksz przepªyw f wzdªu» p oznacza: dodaj warto±¢ cf(p) do f (u, v), dla ka»dego ªuku (u, v) ∈ p (i odpowiednio
uaktualnij f (v, u)). Uwaga
Tak otrzymana funkcja f0:V × V → R jest przepªywem,
|f0| = |f | + c
Wst¦p Poj¦cia Ford-Fulkerson Maksymalne skojarzenie
Przykªady dróg powi¦kszaj¡cych
Przykªad I. Dla sieci G z przepªywem f :
-6/20 -6/10 -6/15 w g wg wg wg s a b t
mamy jedn¡ drog¦ powi¦kszaj¡c¡p w sieci residualnej Gf: -14 -4 -9 6 6 6 w g wg wg wg s a b t z przepustowo±ci¡ residualn¡ cf(p) = 4. -10/20 -10/10 -10/15 w g wg wg wg s a b t
Przykªady dróg powi¦kszaj¡cych
Przykªad I. Dla sieci G z przepªywem f :
-6/20 -6/10 -6/15 w g wg wg wg s a b t
mamy jedn¡ drog¦ powi¦kszaj¡c¡p w sieci residualnej Gf: -14 -4 -9 6 6 6 w g wg wg wg s a b t z przepustowo±ci¡ residualn¡ cf(p) = 4.
Przepªyw f0 powstaªy z f po powi¦kszeniu wzdªu» p: -10/20 -10/10 -10/15 w g wg wg wg s a b t
Przykªady dróg powi¦kszaj¡cych
Przykªad II. Dla sieci G z przepªywem f :
* 11/16 H H H H j 8/13 -12/12 -11/14 H H H H j 15/20 * 4/4 ? 10 6 1/4 4/9 6 7/7 w g w g w g w g w g w g s b a d c t
mamy dwie drogi powi¦kszaj¡ce w Gf:
* 5 11 H H H H j 5HH H H Y 8 12 -3 11 H H H H j 5 H H H H Y 15 4 ? 11 6 3 5 4 ? 7 w g w g w g w g w g w g s b a d c t
Przykªady dróg powi¦kszaj¡cych
Przykªad II. Dla sieci G z przepªywem f :
* 11/16 H H H H j 8/13 -12/12 -11/14 H H H H j 15/20 * 4/4 ? 10 6 1/4 4/9 6 7/7 w g w g w g w g w g w g s b a d c t
mamy dwie drogi powi¦kszaj¡ce w Gf:
* 5 11 H H H H j 5HH H H Y 8 12 -3 11 H H H H j 5 H H H H Y 15 4 ? 11 6 3 5 4 ? 7 w g w g w g w g w g w g s b a d c t
Poprawno±¢
Twierdzenie
Je±li f jest przepªywem w sieci G = (V , E), to nast¦puj¡ce warunki s¡ równowa»ne:
1 Przepªyw f w sieci G jest maksymalny.
2 Sie¢ residualna Gf nie zawiera dróg powi¦kszaj¡cych.
Pytanie: czy zawsze po sko«czonej liczbie kroków otrzymamy sie¢ Gf bez dróg powi¦kszaj¡cych?
Mo»na pokaza¢, »e tak jest, gdy
przepustowo±¢ jest caªkowitoliczbowa lub
zawsze wybieramy najkrótsz¡ (w sensie liczby kraw¦dzi) drog¦ powi¦kszaj¡c¡, np. algorytmem BFS.
Algorytm
Podsumowanie: algorytm Forda-Fulkersona znajdowania maks. przepªywu. FordFulkerson(G, c, s, t)
1 begin
2 for ka»da (u, v) ∈ V×Vdof[u, v] := 0;
3 whileistnieje droga p z s do t w sieci residualnej Gf do
4 begin
5 cf(p) := min{cf(u, v) : (u, v) ∈ p}; 6 for ka»da (u, v) ∈ pdo
7 begin 8 f[u, v] := f[u, v] + cf(p); 9 f[v, u] := −f[u, v] 10 end 11 end; 12 return f 13 end;
Wiersz 3: (a) skonstruuj sie¢ Gf zgodnie z denicj¡,
(b) znajd¹ drog¦ z s do t (np. BFS dla grafu skierowanego). Wiersz 5: cf(p) = zmienna pomocnicza; warto±ci cf(u, v)
Algorytm przebieg I
Krok 0 G z przepªywem f (=0): -20 -10 -15 w g wg wg wg s a b t Gf : -20 -10 -15 w g wg wg wg s a b tAlgorytm przebieg I
Krok 0 G z przepªywem f (=0): -20 -10 -15 w g wg wg wg s a b t Gf : -20 -10 -15 w g wg wg wg s a b t cf(p) =10Algorytm przebieg I
Krok 1 G z przepªywem f : -10/20 -10/10 -10/15 w g wg wg wg s a b t Gf : -10 -5 10 10 10 w g wg wg wg s a b tAlgorytm przebieg I
Krok 1 brak drogi powi¦kszaj¡cej ⇒ KONIEC, f maksymalny! G z przepªywem f : -10/20 -10/10 -10/15 w g wg wg wg s a b t Gf : -10 -5 10 10 10 w g wg wg wg s a b t
Algorytm przebieg II
Krok 0 G z przepªywem f (=0): * 16 H H H H j 13 -12 -14 H H H H j 20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 16 H H H H j 13 -12 -14 H H H H j 20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c tAlgorytm przebieg II
Krok 0 G z przepªywem f (=0): * 16 H H H H j 13 -12 -14 H H H H j 20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 16 H H H H j 13 -12 -14 H H H H j 20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t cf(p) =12Algorytm przebieg II
Krok 1 G z przepªywem f : * 12/16 H H H H j 13 -12/12 -14 H H H H j 12/20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 13 12 -14 H H H H j 8 H H H H Y 12 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c tAlgorytm przebieg II
Krok 1 G z przepªywem f : * 12/16 H H H H j 13 -12/12 -14 H H H H j 12/20 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 13 12 -14 H H H H j 8 H H H H Y 12 * 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t c f(p) =4Algorytm przebieg II
Krok 2 G z przepªywem f : * 12/16 H H H H j 4/13 -12/12 -4/14 H H H H j 12/20 * 4/4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 9HH H H Y 4 12 -10 4 H H H H j 8 H H H H Y 12 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c tAlgorytm przebieg II
Krok 2 G z przepªywem f : * 12/16 H H H H j 4/13 -12/12 -4/14 H H H H j 12/20 * 4/4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 9HH H H Y 4 12 -10 4 H H H H j 8 H H H H Y 12 4 ? 10 6 4 9 6 7 w g w g w g w g w g w g s b a d c t c f(p) =7Algorytm przebieg II
Krok 3 G z przepªywem f : * 12/16 H H H H j 11/13 -12/12 -11/14 H H H H j 19/20 * 4/4 ? 10 6 4 9 6 7/7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 2HH H H Y 11 12 -3 11 H H H H j 1 H H H H Y 19 4 ? 10 6 4 9 ? 7 w g w g w g w g w g w g s b a d c tAlgorytm przebieg II
Krok 3 brak drogi powi¦kszaj¡cej ⇒ KONIEC, f maksymalny! G z przepªywem f : * 12/16 H H H H j 11/13 -12/12 -11/14 H H H H j 19/20 * 4/4 ? 10 6 4 9 6 7/7 w g w g w g w g w g w g s b a d c t Gf : * 4 12 H H H H j 2HH H H Y 11 12 -3 11 H H H H j 1 H H H H Y 19 4 ? 10 6 4 9 ? 7 w g w g w g w g w g w g s b a d c t
Uwagi
Zauwa»my, »e przebieg silnie zale»y od sposobu wybierania drogi powi¦kszaj¡cej.
Cz¦sto istnieje wi¦cej ni» jedna droga powi¦kszaj¡ca w danym kroku.
My wybierali±my drog¦ najkrótsz¡ (w sensie liczby kraw¦dzi). Równie» drogi najkrótsze nie s¡ jednoznaczne.
Liczba gªównych kroków algorytmu zale»y od sposobu wybierania dróg powi¦kszaj¡cych.
Uwagi
Liczba kroków mo»e zale»e¢ od warto±ci maksymalnego przepªywu |fmax|. Przykªadowo, gdy |fmax| =106, a w ka»dym kroku
przepustowo±¢ residualna drogi powi¦kszaj¡cej wynosi 1, to algorytm wykona 106 kroków!
Ale pokazuje si¦, »e gdy wybieramy najkrótsze drogi powi¦ksza-j¡ce (przy u»yciu BFS, wówczas algorytm ten nazywa si¦ te» al-gorytmem Edmondsa-Karpa) zªo»ono±¢ algorytmu nie zale»y od warto±ci |fmax|i wynosi O(|V | · |E|2).
Istniej¡ te» algorytmy o zªo»ono±ciach O(|V |2· |E|) oraz O(|V |3)
Uwagi
Inne warianty problemu:
Sie¢ z wieloma ¹ródªami i uj±ciami. Problem mo»na sprowadzi¢ do wersji standardowej poprzez:
dodanie super¹ródªa oraz kraw¦dzi z niego do oryginalnych ¹ródeª o przepustowo±ciach ∞,
dodanie superuj±cia oraz kraw¦dzie do niego z oryginalnych uj±¢ o przepustowo±ciach ∞.
Problem
Dodatek: przykªad problemu, który mo»na sprowadzi¢ do problemu maksymalnego przepªywu.
G = (V , E) graf nieskierowany.
Def. Skojarzenie w grae G = ka»dy podzbiór kraw¦dzi M ⊆ E taki, »e dla ka»dego v ∈ V co najwy»ej 1 kraw¦d¹ z M jest incydentna z v.
Def. Skojarzenie maksymalne w G = skojarzenie o najwi¦kszej liczbie kraw¦dzi.
Ograniczymy si¦ do przypadku, gdy graf G jest dwudzielny (tj. V mo»na podzieli¢ na V = L ∪ R, L, R zbiory rozª¡czne a wszystkie kraw¦dzie z E prowadz¡ mi¦dzy L i R).
Przykªad
Graf dwudzielny H H H H H H @ @ @ @ @ @ H H H H H H @ @ @ @ @ @ w g w g w g w g w g w g w g w g w g L RPrzykªad
Skojarzenie o liczno±ci 2 H H H H H H @ @ @ @ @ @ H H H H H H @ @ @ @ @ @ w g w g w g w g w g w g w g w g w g L RPrzykªad
Skojarzenie o liczno±ci 3 (maksymalne)
H H H H H H @ @ @ @ @ @ H H H H H H @ @ @ @ @ @ w g w g w g w g w g w g w g w g w g L R
Zastosowania
Przykªady zastosowa« problemy równolegªego dost¦pu do zasobów (na wyª¡czno±¢):
prace ↔ maszyny, procesy ↔ procesory, zaj¦cia ↔ sale, kojarzenie maª»e«stw.
Algorytm naiwny
Problem maksymalnego skojarzenia wydaje si¦ dosy¢ prosty. Nasuwaj¡cy si¦ algorytm mógªby polega¢ na nast¦puj¡cej strategii zachªannej:
Szkic algorytmu
Dopóki to mo»liwe, rozbudowuj skojarzenie dodaj¡c kolejne kraw¦dzie zgodnie z rosn¡cymi (niemalej¡cymi) stopniami ich wierzchoªków.
Dokªadniej: w ka»dym kroku wybierz nieskojarzony wierzchoªek v o minimalnym stopniu i, spo±ród wszystkich kraw¦dzi {v, w} takich, »e w jest nieskojarzony, wybierz t¦ z w o minimalnym stopniu.
Algorytm naiwny
Przykªad. H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w gAlgorytm naiwny
Przykªad. H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w gAlgorytm naiwny
Przykªad. H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w gAlgorytm naiwny
Przykªad. H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w gAlgorytm naiwny
Przykªad. Koniec! Skojarzenie o liczno±ci 4. Czy maksymalne?
H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w g
Algorytm naiwny
Przykªad. Nie! Skojarzenie maksymalne ma liczno±¢ 5:
H H H H H H @ @ @ @ @ @ H H H H H H w g w g w g w g w g w g w g w g w g w g
Algorytm naiwny
Widzimy zatem, »e zaproponowane rozwi¡zanie naiwne jest niepoprawne i problem maksymalnego skojarzenia wymaga nieco bardziej wyranowanego podej±cia.
Z pomoc¡ przyjdzie nam omówiony wcze±niej problem maksymalnego przepªywu.
Maksymalne skojarzenie a przepªyw
Idea rozwi¡zania: konstrukcja sieci przepªywowej, w której przepªywy odpowiadaj¡ skojarzeniom.
G = (V = L ∪ R, E) nieskierowany graf dwudzielny sie¢ G0 = (V0,E0) (graf skierowany) tak¡, »e V0=V ∪ {s, t} oraz
E0 = {(s, u) : u ∈ L}
∪ {(u, v) : u ∈ L, v ∈ R, {u, v} ∈ E} ∪ {(v, t) : v ∈ R}.
Przepustowo±¢ c przyjmujemy równ¡ 1 dla ka»dej kraw¦dzi z E0.
Lemat. Je»eli f jest maksymalnym przepªywem w G0 to
odpowiadaj¡ce mu skojarzenie M w G jest maksymalne (oraz |M| = |f |).
Przykªad
Maksymalne skojarzenie H H H H H H @ @ @ @ @ @ H H H H H H @ @ @ @ @ @ w g w g w g w g w g w g w g w g w g L RPrzykªad
Odpowiadaj¡cy mu maksymalny przepªyw
H H H H H j -@ @ @ @ @ R -H H H H H j @ @ @ @ @ R - * * -H H H H H j @ @ @ @ @ R Z Z Z Z Z ~ XX XXXz : > w g w g w g w g w g w g w g w g w g w g w g s t L R - = przepªyw 1/1 = przepªyw 0/1
-Ko«cowe uwagi
Zªo»ono±¢ omówionego algorytmu znajduj¡cego maksymalne skojarzenie przy pomocy przepªywu wynosi O(|V ||E|). Istniej¡ inne, bardziej efektywne algorytmy poszukiwania maksymalnego skojarzenia, np. algorytm Hopcrofta-Karpa (ze zªo»ono±ci¡ O(p|V ||E|)).
Algorytm Hopcrofta-Karpa i inne najbardziej popularne bazuj¡ na podobnych technikach (drogi powi¦kszaj¡ce), ale s¡ te» inne podej±cia, np. oparte na algorytmach szybkiego mno»enia macierzy i in.