Matematyka Dyskretna
Wykªad: Sieci Przepªywowe
Tomasz Krawczyk
krawczyk@tcs.uj.edu.pl
Kraków, semestr letni 2020/21
sieci przepªywowe
I Caªkowitoliczbowe sieci przepªywowe: poj¦cia przekroju i przepªywu.
I Twierdzenie Forda-Fulkersona o maksymalnym przepªywie i minimalnym przekroju.
I Grafy spójno±¢ w grafach.
sieci przepªywowe denicja
Sieci¡ przepªywow¡ nazywamy pi¡tk¦ S = (V , E, s, t, c), gdzie:
I ( V , E) jest grafem skierowanym o zbiorze wierzchoªków V i zbiorze kraw¦dzi E (kraw¦d¹ skierowan¡ w (V , E) prowadz¡c¡ od u do v oznaczamy przez ( u, v) ∈ E).
I s, t ∈ V s¡ dwoma wyszczególnionymi wierzchoªkami grafu (V , E),
I
wierzchoªek s, zwany ¹ródªem, mo»e by¢ tylko pocz¡tkiem pewnych kraw¦dzi z (V , E),
I
wierzchoªek t, zwany uj±ciem, mo»e by¢ tylko ko«cem pewnych kraw¦dzi z ( V , E).
I c jest funkcj¡ ze zbioru kraw¦dzi E w zbiór N > 0, zwan¡ funkcj¡
przepustowo±ci.
przepªyw
Maj¡c dan¡ sie¢ przepªywow¡ S = (V , E, s, t, c), chcemy zazwyczaj wyznaczy¢
maksymalny przepªyw caªkowitoliczbowy w tej sieci.
Funkcj¦ f : E → N
≥0nazywamy przepªywem caªkowitoliczbowym (w skrócie przepªywem) je»eli f speªnia nast¦puj¡ce warunki:
I f (u, v) 6 c(u, v) dla ka»dej kraw¦dzi (u, v) ∈ E;
warunek ten zwiemy warunek przepustowo±ci dla kraw¦dzi (u, v) ∈ E,
I P
u:(u,v)∈E
f (u, v) = P
w:(v,w)∈E
f (v, w) dla ka»dego wierzchoªka v ∈ V \ {s, t};
warunek ten zwiemy warunkiem zachowania przepªywu dla wierzchoªka v innego ni» ¹ródªo s i uj±cie t sieci S.
Warto±ci¡ funkcji przepªywu f , oznaczan¡ przez val(f ), nazywamy warto±¢:
val(f ) = X
v:(s,v)∈E
f (s, v).
przekroje
Przekrojem w sieci przepªywowej S nazywamy ka»d¡ par¦ (S, T ), gdzie S, T ( V , speªniaj¡c¡ nastepuj¡ce warunki:
I s ∈ S, t ∈ T ,
I S ∩ T = ∅, S ∪ T = V .
Maj¡c dany przekrój (S, T ) w sieci S:
I przepustowo±ci¡ przekroju (S, T ) nazywamy warto±¢ c(S, T ) zdeniowan¡ jako:
c(S, T ) = X
( u, v) ∈ E : u ∈ S, v ∈ T
c(u, v).
I maj¡c dany przepªyw f w sieci S, przepªywem przez przekrój (S, T ) nazywamy warto±¢ f (S, T ) zdeniowan¡ jako:
f (S, T ) = X ( u, v) ∈ E : u ∈ S, v ∈ T
f (u, v) − X ( v, u) ∈ E : v ∈ T , u ∈ S
f (v, u).
przekroje
Fakt Niech f b¦dzie dowoln¡ funkcj¡ przepªywu w sieci S. Dla dowlonego przekroju (S, T ) sieci S zachodz¡ nast¦puj¡ce wªasno±ci:
I f (S, T ) 6 c(S, T ).
I val(f ) = f (S, T ) (przepªyw przez ka»dy przekrój sieci jest taki sam i wynosi val(f )).
Dowód.
I Pierwsza wªasno±¢ wynika z denicji przepustowo±ci i przepªywu dla przekroju ( S, T ) oraz z zasady przepustowo±ci f (u, v) 6 c(u, v) dla ka»dej kraw¦dzi (u, v) sieci S.
I Wªasno±¢ drug¡ udowodnimy indukcj¡ po liczbie wierzchoªków w zbiorze S w przekroju (S, T ).
I
Jedynym przekrojem (S, T ) takim, »e |S| = 1, jest przekrój
( S, T ) = ({s}, V \ {s}). Z denicji val(f ) mamy val(f ) = f ({s}, V \ {s}).
przekroje
Dowód wªasno±ci drugiej (kont.)
I Niech (S, T ) b¦dzie przekrojem takim, »e |S| ≥ 2.
I
Wybierzmy x ∈ S taki, »e x 6= s.
I
Zauwa»my, »e (S
0, T
0) = ( S \ {s}, T ∪ {x}) jest przekrojem S
0takim, »e
| S
0| < | S|. Z zaªo»enie indukcyjnego, val(f ) = f (S
0, T
0).
I
Zauwa»my, »e S
0∪ T = V \ {x} oraz, »e:
f (S
0, T
0) − f (S, T ) = P (u
1,x) ∈ E
u
1∈ S
0f (u
1, x) − P (x, v
1) ∈ E
v
1∈ S
0f (x, v
1)
+ P
( u
2, x) ∈ E u
2∈ T
f (u
2, x) − P ( x, v
2) ∈ E
v
2∈ T
f (x, v
2)
= P
u:(u,x)∈E
f (u, x) − P
v:(x,v)∈E
f (x, v)
= 0,
przy czym ostatnia równo±¢ wynika z zasady zachowania przepªywu dla
wierzchoªka x. Wynika st¡d f (S, T ) = f (S
0, T
0) = val(f ), co ko«czy
dowód.
minimalne przekroje
Przekrój (S
0, T
0) sieci S nazywamy minimalnym je»eli zachodzi:
c(S
0, T
0) = min {c(S, T ) : (S, T ) przekrój w S}.
Wniosek:
Przepustowo±¢ minimalnego przekroju jest naturalnym ograniczeniem górnym na
warto±¢ funkcji przepªywu w sieci.
±cie»ki powi¦kszaj¡ce
Niech S b¦dzie sieci¡ przepªywow¡, niech f b¦dzie przepªywem w S.
cie»k¡ powi¦kszaj¡c¡ przepªyw f w sieci S prowadz¡c¡ od wierzchoªka s do wierzchoªka v
knazywamy ci¡g s = v
1, v
2, . . . , v
kspeªniaj¡c¡ dla ka»dego i ∈ [k − 1]
warunek:
I albo (v
i, v
i+1) ∈ E i f (v
i, v
i+1) < c(v
i, v
i+1) , (kraw¦d¹ (v
i, v
i+1) nazywamy wtedy kraw¦dzi¡ zgodn¡ ze ±cie»k¡ powi¦kszaj¡c¡ v
1, . . . , v
k).
I albo (v
i+1, v
i) ∈ E i f (v
i+1, v
i) > 0, (kraw¦d¹ (v
i, v
i+1) nazywamy wtedy kraw¦dzi¡ przeciwn¡ do ±cie»ki powi¦kszaj¡cej v
1, . . . , v
k).
Uwagi:
I odnosz¡c sie do ±cie»ki powi¦kszaj¡cej zazwyczaj pomijamy przepªyw f
wzgl¦dem którego ±cie»ka ta jest zdeniowana; przepªyw ten jest zazwyczaj
okre±lony przez kontekst.
±cie»ki powi¦kszaj¡ce od s do t
Je»eli istnieje ±cie»ka powi¦kszaj¡ca P prowadz¡ca od s do t, to przepªyw f mo»emy polepszy¢ o pewn¡ warto±¢ val ≥ 1:
I powi¦kszaj¡c o val przepªyw f na ka»dej kraw¦dzi (u, v) ±cie»ki P zgodnej z P, I pomniejszaj¡c o val przepªyw f na ka»dej kraw¦dzi (u, v) ±cie»ki P przeciwnej
do ±cie»ki P.
Warto±¢ val jest mo»liwie najwi¦ksz¡ liczb¡ naturaln¡ dobran¡ tak, by zmodykowany przepªyw na ka»dej kraw¦dzi byª nie mniejszy od 0 i nie wi¦kszy od przepustowo±ci tej kraw¦dzi.
Nietrudno jest sprawdzi¢, »e tak poprawiony przepªyw, nazwijmy go f
0, speªnia warunek przepustowo±ci dla ka»dej kraw¦dzi sieci i warunek przepªywu dla ka»dego wierzchoªka sieci ró»nego od ¹ródªa i uj±cia (jest wi¦c nadal przepªywem), oraz zachodzi równo±¢:
val(f
0) = val(f ) + val.
Procedur¦ opisan¡ powy»ej nazywamy powi¦kszeniem przepªywu f wzdªu» ±cie»ki
powi¦kszaj¡cej P.
maksymalny przepªyw - metoda Forda-Fulkersona
Metoda Forda-Fulkersona wyznaczania maksymalnego przepªywu w sieci S (maksymalizujacego warto±¢ val(·)):
I ustaw f (u, v) = 0 dla ka»dej kraw¦dzi (u, v) sieci S,
I dopóki istnieje ±cie»ka P powi¦kszaj¡ca przepªyw f prowadz¡ca od s do t:
I
powi¦ksz przepªyw f wzdªu» ±cie»ki P.
Okazuje si¦, »e przepªyw obliczony metod¡ Forda-Fulkersona jest przepªywem maksymalnym w S (dowód na kolejnych slajdach). Niestety zªo»ono±¢ powy»szego algorytmu mo»e zale»e¢ od warto±ci funkcji c i mo»e by¢ nieograniczona wzgl¦dem rozmiaru digrafu (V , E) w sieci S.
Jedn¡ z realizacji metody Forda-Fulkersona jest algorytm Edmondsa-Karpa. Algorytm ten spo±ród wszystkich mo»liwych ±cie»ek powi¦kszaj¡cych od s do t wybiera ±cie»k¦
najkrótszej dªugo±ci. Taki sposób wybierania ±cie»ek powi¦kszaj¡cych gwarantuje, i»
algorytm dziaªa w czasie O(|V ||E|
2) .
maksymalny przepªyw minimalny przekrój
Twierdzenie (Ford-Fulkerson, 1962)
Niech S = (V , E, s, t, c) b¦dzie sieci¡ przepªywow¡ i niech f b¦dzie przepªywem w S.
Nast¦puj¡ce warunki s¡ sobie równowa»ne:
(1) f jest przepªywem maksymalnym.
(2) W sieci S nie istnieje ±cie»ka powi¦kszaj¡ca przepªyw f prowadz¡ca od s do t.
(3) Para (S, T ), gdzie
S = {v ∈ V : istnieje ±cie»ka powi¦kszaj¡ca f od s do v}
jest przekrojem w sieci S speªniaj¡cym warunek f (S, T ) = c(S, T ).
Dowód:
I (1) > (2): istnienie ±cie»ki powi¦kszaj¡cej przepªyw f prowadz¡cej od s do t gwarantuje, »e mo»emy powi¦kszy¢ przepªyw f o co najmniej 1.
I (3) > (1): wiemy, »e zachodzi f
0( S, T ) 6 c(S, T ) dla ka»dego przepªywu f
0w
sieci S. Poniewa» f (S, T ) = c(S, T ) oraz val(f ) = f (S, T ), przepªyw f musi
by¢ maksymalny.
maksymany przepªyw minimalny przekrój
Dowód twierdzenia Forda-Fulkersona, implikacja (2)> (3):
I Poniewa» nie istnieje ±cie»ka powi¦kszaj¡ca od s do t, zbiór S nie zawiera t.
I Wprost z denicji ±cie»ek powi¦kszaj¡cych wynika, »e s ∈ S.
I Powy»sze dwa punkty oznaczaj¡, »e (S, T ) jest przekrojem. Wyka»emy teraz, »e f (S, T ) = c(S, T ). Przypomnijmy, »e:
c(S, T ) = P
( u, v) ∈ E : u ∈ S, v ∈ T
c(u, v)
f (S, T ) = P
( u, v) ∈ E : u ∈ S, v ∈ T
f (u, v) − P ( v, u) ∈ E : v ∈ T , u ∈ S
f (v, u) .
maksymalny przepªyw minimalny przekrój
Dowód twierdzenia Forda-Fulkersona, implikacja (2)> (3), kontynuacja:
I Zauwa»my teraz, »e:
I
dla ka»dej kraw¦dzi (u, v) ∈ E takiej, »e u ∈ S i v ∈ T zachodzi f (u, v) = c(u, v).
Istotnie, gdyby f (u, v) < c(u, v), ±cie»k¦ powi¦kszaj¡c¡ od s do u mogliby±my poszerzy¢ o kraw¦d¹ (u, v) otrzymuj¡c w ten sposób ±cie»k¦
powi¦kszaj¡c¡ od s do v (kraw¦d¹ (v, u) byªaby kraw¦dzi¡ zgodn¡ z t¡
±cie»k¡ powi¦kszaj¡c¡), co przeczy v /∈ S.
I