folyamok
TRANSCRIPT
-
7/24/2019 Folyamok
1/6
1. Halozati folyamok
Defincio: LegyenG = (V, E) egy iranytott graf, melynek minden (u, v) elenadott egy nemnegatv c(u, v) kapacitas. A grafnak kituntetjuk ket pontjat:az s termelot es a t fogyasztot. Ekkor a (G; c; s; t) negyest halozatnaknevezzuk.
Szemlelteteskeppen feltehetjuk, hogy a halozattal egy vzvezetekrendszertabrazolunk. A halozat minden egyes iranytott elet egy vezeteknek kepzelhet-juk el, amin keresztul a vz folyik. Minden egyes vezeteknek meghatarozottkapacitasa van, ami a legnagyobb vzmennyiseg, ami a vezeteken at tud foly-ni. A graf pontjai a vezetekek elagazasi pontjai, amelyekben, ha nem a
termelorol es a fogyasztorol van szo, vz nem gyulhet ossze. Vagyis a befolyovzmennyisegnek egy pontban meg kell egyeznie a kifolyo vzmennyiseggel.A halozati folyam ezen tulajdonsagat megmaradasi szabalynak nevezzuk.
Defincio: Legyen (G; c; s; t) egy halozat. Halozati folyamnak (vagycsak folyamnak) nevezzuk a kovetkezo ket tulajdonsaggal rendelkezof :ER+ fuggvenyt:Kapacitas megszortas: f(u, v) c(u, v) teljesul minden (u, v) E-re.Megmaradasi szabaly:
{f(u, v)|(u, v) E}
{f(v, u)|(v, u) E}=
0 minden u V {s, t}-re.
Mivel celunk az s pontbol a leheto legtobb vzmennyiseg eljuttatasa t-be, ezert a tovabbiakban feltehetjuk, hogy az s pontba nem lep be el, at pontbol pedig nem lep ki el. Ekkor a folyam erteke egyenlo az s-bolkilepo folyamertekek osszegevel (ami termeszetesen egyenlo a t-be belepofolyamertekek osszegevel.
Defincio: Vagasnak nevezunk egy X Vponthalmazt, melyre s Xde t / X. Az X vagas erteke az X-bol kilepo elek kapacitasainak azosszege. Az Xvagas erteket c(X)-szel jeloljuk.
1
-
7/24/2019 Folyamok
2/6
Pelda:
ts
a b
c
d e
2/5
3/8
3/6 2/4
1/5
1/1
1/4 0/2
1/22/3
Az abran egy halozati folyamra lathatunk peldat. Az elekre rt szamokkozul az elso a folyamerteket, a masodik pedig az el kapacitasat jeloli. Latha-to, hogy minden elen legfeljebb akkora a folyamertek, mint az el kapacitasa;tovabba a termelo illetve a fogyaszto kivetelevel minden pontba ami befolyik,az tovabb is folyik. A folyam erteke 6, hiszen s-bol osszesen 6 egysegnyi vzlep ki.
Szamtsuk ki az (s,b,d) vagas erteket! Ehhez az osszes olyan elnek, mely-nek a kezdopontja az (s,b,d) pontok valamelyike, a vegpontja viszont nem(!),ossze kell adni a kapacitasait. Ezek az elek az sa, sc, dc, de, bt elek, gy az(s,b,d) vagas erteke 3+6+2+1+8=20.
Azt mondjuk, hogy egy folyam maximalis, ha az erteke maximalis.Minimalis vagasnak nevezunk egy vagast, ha az erteke minimalis. Amaximalis folyamok es a minimalis vagasok kozott szoros kapcsolat all fenn;nevezetesen a maximalis folyam erteke egyenlo a minimalis vagas ertekevel!A celunk a maximalis folyam meghatarozasa. Ehhez szuksegunk lesz meg ajavto ut fogalmara:
Legyen mostfegy folyam. Legyen a grafbans = v0, v1, . . . , vk =t egy ut,amely nem feltetlenul halad az iranytas szerint. Az ut egye elet elore elnekhvjuk, ha e = (vi1, vi) valamely i-re. Hasonloan hatra elnek nevezzuk azut egy e elet, ha e= (vi, vi1) valamely i-re. Tegyuk fel, hogy az ut mindenelore elen f(e) < c(e), es minden hatraelen f(e) > 0. Az ilyen utat javto
utnak hvjuk. Ha letezik javto ut, akkor a novelhetjuk a folyam erteketa kovetkezo modon: az elore eleken megnoveljuk a folyam erteket, a hatraeleken csokkentjuk a folyamerteket ugyanazzal a mennyiseggel. 2 dolograkell figyelnunk: mikor az elore eleken novelunk, akkor a kapacitas fole nemmehetunk; mikor a hatra eleken csokkentunk, akkor 0 ala nem mehetunk.Formalisan megfogalmazva:
legyen1=min(c(e) f(e)|eeloreel), 2=min(f(e)|e hatrael) es=min(1, 2). Az elore es hatra elek defincioja miatt >0. Az elore elekennoveljuk meg a folyam erteket -nal, a hatra eleken pedig csokkentsuk a fo-
2
-
7/24/2019 Folyamok
3/6
lyam erteket -nal. Konnyen lathato, hogy gy egy olyan folyamot kaptunk,
melynek erteke -nal nagyobb a reginel.
A kovetkezo abran javto utra lathatunk egy peldat:
s
a b
t
c
d
e f
2/4
2/7
3/3
3/3 4/5 3/3
2/2
1/4
1/2
1/1 1/5
Az abran adott folyamra nezve az s a b d c e ft javtout, hiszen az sa, ab, ef, f t elek elore elek mind teltetlenek, a db, cd, ecelek pedig hatraelek, es mindegyiken pozitv a folyamertek. Az sa elen 2-velnovelhetnenk a folyamot, azabelen 5-tel novelhetnenk a folyamot, azef elen3-mal novelhetnenk a folyamot, az f t elen 4-gyel novelhetnenk a folyamot; adbelen 1-gyel csokkenthetnenk a folyamot, acdelen 4-gyel csokkenthetnenk afolyamot, az ec elen pedig 1-gyel csokkenthetnenk a folyamot; ezert a javtout minden elen 1-gyel valtoztatunk: az elore eleken 1-gyel megnoveljuk afolyamerteket, a visszaeleken pedig 1-gyel lecsokkentjuk.A javtas utan a kovetkezo folyamot kapjuk:
s
a b
t
c
d
e f
3/3
3/3 3/3
2/2
3/4
3/7
0/2
3/5
0/1
2/4
2/5
Belathato, hogy egy f folyam pontosan akkor maximalis, ha nem letezikjavto utf-re nezve. Ebbol maris kapunk egy algoritmust a maximalis folyammegkeresesere:
3
-
7/24/2019 Folyamok
4/6
Ford-Fulkerson algoritmusa maximalis folyam keresesere:
Legyen kezdetben a folyamertek minden elen 0. Amg az aktualis folyamranezve letezik javto ut, addig egy javto ut menten noveljuk a folyam erteket.Ha mar nem letezik javto ut, akkor a folyam maximalis.
Ha mar meghataroztuk a maximalis folyamot, akkor a minimalis vagastis konnyen megkaphatjuk. Azon pontok halmaza ugyanis, amelyekbe megleteziks-bol javto ut, egy minimalis vagast hataroz meg.Az algoritmus mukodeset a kovetkezo peldan kovethetjuk nyomon:
s
a b
t
c
d
e f
0/1
0/4
0/7
0/3
0/5 0/3
0/2
0/3
0/2
0/4
0/5
Kezdetben minden elen 0 a folyamertek. Ekkor peldaul az s-c-d-t ut egyjavto ut, melynek minden ele elore el. Az scesdtelek miatt 3 tudjuk novelnia folyam erteket, azaz az ut minden elen noveljuk a folyamerteket harommal.
s
a b
t
c
d
e f
0/1
0/4
0/7
0/3
0/2
0/2
0/4
0/5
3/3 3/5 3/3
A kovetkezo lepesben mondjuk megtalaljuk az s-e-c-d-b-t javto utat(termeszetesen mas javto utat is vehettunk volna). Ennek az utnak ismetminden ele elore el, es mivel az ec elen csak 1-gyel tudunk novelni, ezert azut minden elen 1-gyel noveljuk a folyamerteket.
4
-
7/24/2019 Folyamok
5/6
s
a b
t
c
d
e f
0/4
0/7
0/4
0/5
3/3 3/3
1/2
1/1
4/5
1/2
1/3
A kovetkezo lepesben vegyuk mondjuk az s-e-f-t javto utat. Ennekszinten minden ele elore el; se-n 1-gyel novelhetunk (hiszen mar folyik raj-ta 1!), ef-n 4-gyel, f t-n 5-tel, ezert mindharom elen eggyel noveljuk a fo-lyamerteket.
s
a b
t
c
d
e f
0/4
0/7
3/3 3/3
1/1
4/5
1/2
1/3
2/2
1/4
1/5
Most az s-a-b-t javto uton a bt el miatt minden elen 2-vel novelhetjuk afolyamerteket.
s
a b
t
c
d
e f
3/3 3/3
1/1
4/5
1/2
2/2
1/4
1/5
2/4
2/7
3/3
5
-
7/24/2019 Folyamok
6/6
Meg mindig letezik javto ut, nevezetesen az s-a-b-d-c-e-f-t ut. Az sa,
ab, ef es f t elek elore elek, ezeken az sa el miatt 2-vel lehetne novelni afolyamerteket; a db, cd es ec elek pedig visszaelek, ezeken pedig az ec elmiatt 1-gyel lehetne csokkenteni a folyamerteket. Igy az ut minden elen1-gyel valtoztatunk; az elore eleken 1-egyel noveljuk, a hatraeleken 1-gyelcsokkentjuk a folyamertekeket.
s
a b
t
c
d
e f
3/3
3/3 3/3
2/2
3/4
3/7
0/2
3/5
0/1
2/4
2/5
Viszont most mar nem letezik t-be javto ut, gy ez a folyam maximalis,az erteke pedig 3+3+2.
Adjunk meg egy minimalis vagast is! s-bol a-ba el tudunk jutni javtouton, hiszen az sa el elore el lenne es teltetlen. a-bolb-be is tovabb tudunkmenni javto uton, hiszen az ab el elore el lenne es teltetlen; vagyis megb-be is van javto ut sbol. b-bol t-be nem tudunk tovabb menni, hiszen a btel elore el es teltett; hasonloan b-bol d-be sem tudunk tovabbmenni, merta db el vissza el, es 0 ra jta a folyamertek. s-bol sem c-be, sem e-be nemtudunk javto uton eljutni, mert az sc es az se el is teltett. Igy javto utmar csak azs, a, bpontokba van, ezert ez a harom pont egy minimalis vagasthataroz meg. Erdemes kiszamolni, hogy ennek a vagasnak az erteke 8, amimegegyezik a maximalis folyam ertekevel. Ez altalaban is gy van:
Tetel: A maximalis folyam erteke megegyezik a minimalis vagas ertekevel.
6