Maksymalny przepªyw
dr Andrzej Mróz (UMK w Toruniu)2013
Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach
matematyczno-przyrodniczych
Spis tre±ci
1 Wst¦p 3 1.1 Kontekst . . . 3 1.2 Problem . . . 3 2 Poj¦cia 3 2.1 Sie¢ przepªywowa . . . 32.2 Sie¢ przepªywowa przykªady . . . 4
2.3 Przepªyw . . . 4 2.4 Przepªyw dodatni . . . 6 2.5 Maksymalny przepªyw . . . 6 3 Ford-Fulkerson 7 3.1 Metoda . . . 7 3.2 Sieci residualne . . . 8
3.3 Przykªady sieci residualnych . . . 8
3.4 Droga powi¦kszaj¡ca . . . 9 3.5 Przykªady dróg powi¦kszaj¡cych . . . 9 3.6 Poprawno±¢ . . . 10 3.7 Algorytm . . . 10 3.8 Algorytm przebieg I . . . 11 3.9 Algorytm przebieg II . . . 11 3.10 Uwagi . . . 13 4 Maksymalne skojarzenie 13 4.1 Problem . . . 13 4.2 Przykªad . . . 14 4.3 Zastosowania . . . 15 4.4 Algorytm naiwny . . . 15
4.5 Maksymalne skojarzenie a przepªyw . . . 17
4.6 Przykªad . . . 17
1 Wst¦p
1.1 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.
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. Interpretacja:
• 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±¢ zachowa-nia przepªywu, por. prawo Kirchhoa).
1.2 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.
Zdeniujemy teraz niezb¦dne poj¦cia nieco bardziej formalnie.
2 Poj¦cia
2.1 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ªo s i uj±cie t,
• o grae G zakªadamy, »e ka»dy wierzchoªek le»y na pewnej drodze ze ¹ródªa do uj±cia. Zatem c mo»na rozwa»a¢ jako funkcj¦ c : V × V → R+.
2.2 Sie¢ przepªywowa przykªady
Prosty przykªad: -20 -10 -15 w g wg wg wg s a b t
Przepustowo±¢ 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 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 t 2.3 Przepªyw
Denicja. Przepªyw w sieci G = dowolna funkcja f : V × V → R speªniaj¡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.
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} X
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, wi¦c c(u, v) = 0 = c(v, u), st¡d (z w-ku przepustowo±ci): f(u, v) ≤ c(u, v) = 0i 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. 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.
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
(dla u = b podobnie).
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
2.4 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→v+ | = |fv→+ |.
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. 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
Je»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).
2.5 Maksymalny przepªyw
Denicja. Warto±¢ przepªywu f to liczba |f | =X
v∈V
f (s, v).
Przepªyw f nazywamy maksymalnym, gdy jego warto±¢ jest najwi¦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
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. 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±¢ algo-rytmów, wªasno±¢ stopu...) s¡ do±¢ gª¦bokie. Skupimy si¦ na gªównych ideach i opisie samego algorytmu. Po szczegóªow¡ analiz¦ odsyªamy np. do ksi¡»ki [1] ze spisu literatury do wykªadu (T. H. Cormen et al.).
3 Ford-Fulkerson
3.1 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. B¦dziemy zatem realizowa¢ ogólny algorytm:
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 return f
3.2 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¢ przepus-towo±ci.
• Przepustowo±¢ residualna mo»e by¢ wi¦ksza ni» przepustowo±¢!
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 ! • Gdy f = 0 oraz c(u, v) > 0 dla ka»dej (u, v) ∈ E, to Gf = G.
3.3 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ª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 5 H H 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 3.4 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}.
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 | + cf(p) > |f |.
3.5 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¡ pw 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ª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 5 H H 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 * 5 11 H H H H j 5 H H 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 3.6 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¦ksza-j¡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. algo-rytmem BFS.
3.7 Algorytm
Podsumowanie: algorytm Forda-Fulkersona znajdowania maksymalnego przepªywu. FordFulkerson(G, c, s, t)
1 begin
2 for ka»da (u, v) ∈ V×Vdo f[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:
skonstruuj sie¢ Gf zgodnie z denicj¡,
znajd¹ drog¦ z s do t (np. BFS dla grafu skierowanego). • Wiersz 5:
cf(p) = zmienna pomocnicza;
warto±ci cf(u, v)obliczamy korzystaj¡c z odpowiedniego wzoru.
3.8 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 t cf(p) = 10 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 t
Brak drogi powi¦kszaj¡cej ⇒ KONIEC, f maksymalny!
3.9 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 t c f(p) = 12 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) = 4 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 9 H H 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) = 7 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 2 H H 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
Brak drogi powi¦kszaj¡cej ⇒ KONIEC, f maksymalny!
3.10 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. 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¦kszaj¡ce (przy u»yciu BFS, wówczas algorytm ten nazywa si¦ te» algorytmem 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) (tzw. algorytmy
przed-przepªywowe).
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±ci-ach ∞.
• Wielomateriaªowe sieci przepªywowe.
4 Maksymalne skojarzenie
4.1 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).
4.2 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 R 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 R
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
4.3 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.
4.4 Algorytm naiwny
Problem maksymalnego skojarzenia wydaje si¦ by¢ 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.
Przykªad. Przebieg powy»szego algorytmu: 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 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
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 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 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
Koniec! Otrzymali±my skojarzenie o liczno±ci 4. Czy jest ono maksymalne? 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
Widzimy zatem, »e zaproponowane rozwi¡zanie naiwne jest niepoprawne i problem maksy-malnego skojarzenia wymaga nieco bardziej wyranowanego podej±cia.
Z pomoc¡ przyjdzie nam omówiony wcze±niej problem maksymalnego przepªywu.
4.5 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|).
4.6 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 R
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 4.7 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.