toky v sítích párování v grafech
Post on 20-Mar-2016
81 Views
Preview:
DESCRIPTION
TRANSCRIPT
Teoretická informatikaTomáš Foltýnekfoltynek@pef.mendelu.cz
Toky v sítíchPárování v grafech
Teoretická informatika
Opakování
• Co je to obarvení grafu?• Jaké způsoby barvení grafu znáte?• Co je to platónské těleso?• Kolik platónských těles existuje?
strana 2
Teoretická informatika
Síť
• Síť je orientovaný graf, jehož hrany jsou ohodnoceny nezápornými reálnými čísly a ve kterém vyznačíme dva uzly– zdroj – obvykle značíme s– stok (nor) – obvykle značíme t
• Formálně: Síť je čtveřice (G, s, t, c), kde– G je orientovaný graf– s je uzel grafu G, do nějž nevchází žádné hrany– t je uzel grafu G, z nějž nevychází žádné hrany– c: HR+
0 je funkce přiřazující hranám ohodnocení (kapacitu, průtok)
Teoretická informatika
Tok
• Je dána síť N = (G, s, t, c). Tokem v síti nazveme takové ohodnocení hran f: HR+
0, které splňuje– kapacitní omezení: 0≤f(h)≤c(h) pro každé hH– zachování toku: pro každý uzel kromě zdroje a stoku je
součet toků ve vstupních hranách roven součtu toků ve výstupních hranách
• Velikost toku |f| je součet toků výstupních hran zdroje (vstupních hran stoku)
strana 4
)()(
)()(:},{vHhvHh
hfhftsUv
Teoretická informatika
Tok – analogická definice
• Za tok považujeme funkci f: VVR• Není-li mezi uzly u a v hrana, položíme f(u,v) = 0• Pro každou dvojici uzlů platí, že
f(u,v) = -f(v,u)– je-li v hraně tok f, je v protisměrné hraně tok –f
• Pak zákon zachování toku platí zvlášť pro kladné a záporné toky
• Navíc platí
strana 5
0)(:},{)(
vHh
hftsUv
Teoretická informatika
Řez
• Řez v síti je taková množina hran, po jejichž odstranění by v síti nezbyla žádná cesta ze zdroje do stoku– velikost řezu je rovna součtu kapacit hran v řezu
• Analogická definice řezu je rozklad množiny uzlů na dvě disjunktní podmnožiny, z nichž jedna obsahuje zdroj a druhá stok– velikost řezu je rovna součtu kapacit hran spojujících uzly
v různých třídách rozkladu• Velikost řezu značíme
– c(H), je-li H množina hran tvořící řez– c(A,B) jsou-li A, B třídy rozkladu tvořící řez
• Počet všech možných řezů je 2|V|-2
strana 6
Teoretická informatika
Velikost toku a velikost řezu
• Věta: Je-li f tok a (V,W) řez, pak platí|f| ≤ c(V,W)– Tedy: Pro každý tok a každý řez platí, že
velikost toku není větší než velikost řezu• Důkaz:
strana 7
HVWvwHWVwvHWVwv
vwfwvfwvcWVc)(),()(),()(),(
),(),(),(),(
||)(...)(
fhfsHh
Teoretická informatika
Další síťové pojmy• Rezervní kapacita hrany
cf(h) = c(h) – f(h)– je-li cf(h) = 0, hovoříme o nasycení hrany h
• Rezervní kapacita cesty je minimum rezervních kapacit hran na této cestě
• Nasycená cesta je cesta s nulovou rezervní kapacitou– tj. některé hrana je nasycená
• Rezervní síť je podgraf tvořený pouze hranami s kladnou rezervní kapacitou
• Maximální tok v síti je takový tok, který má největší možnou velikost.
strana 8
Teoretická informatika
Rozšiřující cesta a polocesta
• Rozšiřující (též zlepšující) cesta je cesta z s do t taková, že pro každou hranu platí, že cf(h)>0
• Rozšiřující (též zlepšující) polocesta je cesta z s do t v symetrizaci sítě taková, že– pro každou hranu ve směru cesty platí, že f(h) < c(h)– pro každou hranu proti směru cesty platí, že f(h) > 0
• Tok po hraně ve směru cesty lze snížit, tok po hraně proti směru cesty lze zvýšit.
• Rezerva hrany je rovna– rezervní kapacitě hrany, tj. c(h) – f(h) pro hrany ve směru cesty– toku přiřazenému hraně, tj. f(h) pro hrany proti směru cesty
strana 9
Teoretická informatika
Maximální tok a rozšiřující polocesta
• Věta: Velikost toku v síti je maximální právě tehdy, když v rezervní síti neexistuje rozšiřující polocesta
• Důkaz : Kdyby existovala rozšiřující cesta, bylo by možné navýšit tok o rezervní kapacitu této cesty, tudíž by tok nebyl maximální
• Důkaz : Pokud by tok nebyl maximální, bylo by možné nalézt tok větší. Označme rozdíl velikosti toků d. Je-li však možné tok zvýšit o d, musí existovat rozšiřující cesta s rezervní kapacitou d.
strana 10
Teoretická informatika
Věta o maximálním toku a minimálním řezu• Věta: Maximální velikost toku v síti je
rovna minimální velikosti řezu• Zobecnění: Následující tvrzení jsou
ekvivalentní– f je maximální tok– v síti neexistuje zlepšující cesta– existuje řez (S,T) takový, že |f| = c(S,T)
strana 11
Teoretická informatika
Věta o maximálním toku a minimálním řezu – důkaz• 12 jsme již dokázali• 31 jsme již dokázali• 23
– nechť A je množina uzlů dosažitelná ze zdroje po nenasycených hranách
– B = U – A– protože platí 2, stok patří do B– (A,B) je tedy řez– všechny hrany (u,v), uA, vB musí být nasycené (jinak
by vA) a tedy f(u,v) = c(u,v)– odtud
strana 12
),()()(|| BAchchffHBAhHBAh
Teoretická informatika
Hledání maximálního toku v síti
• Fordův-Fulkersonův algoritmus• U každé hrany udržujeme dvojici (tok, kapacita)• Nalezneme rezervní polocestu ze zdroje do stoku• Identifikujeme nejmenší rezervu hrany na této
cestě – to je rezerva polocesty• Na hranách ve směru cesty zvýšíme tok o • Na hranách proti směru cesty snížíme tok o • Opakujeme tak dlouho, dokud existuje rezervní
cesta
strana 13
Teoretická informatika
Edmonds-Karpův algoritmus I.
• Zefektivnění Fordova-Fulkersonova algoritmu
• Nejnižšího počtu iterací dosáhneme, hledáme-li rezervní tok na nejkratší možné polocestě (vzhledem k počtu hran)
• Edmonds-Karpův algoritmus k nalezení nejkratší rezervní cesty využívá prohledávání grafu do šířky
strana 14
Teoretická informatika
Edmonds-Karpův algoritmus II.• Inicializace
– nastav tok ve všech hranách na nulu• Iterace
– Najdi nejkratší rezervní cestu Moorovým algoritmem• Každý uzel dostane značku (p,,d,)
– p = předchůdce– + = hrana je ve směru cesty (následník)– – = hrana je proti směru cesty (předchůdce)– d = vzdálenost od zdroje = rezerva cesty
• Při zpracování uzlu i dostane každý neoznačkovaný– následník j značku (i,+,di+1,min(,cij-fij))– předchůdce j značku (i,-,di+1,min(,fij))
– Zvyš/sniž tok všech hran rezervní cesty o její rezervu– Opakuj, dokud existuje rezervní cesta
strana 15
Teoretická informatika
Goldbergův algoritmus I.• U každého uzlu udržujeme jeho výšku• Ke každé hraně přidáme protisměrnou hranu s nulovou
kapacitou– Vždy platí, že f(u,v) = -f(v,u)
• Vlna splňuje kapacitní omezení hran, nemusí splňovat zákon zachování toku– v uzlech jsou povoleny přebytky– uzel s přebytkem je aktivní
• Dvě operace– zvednutí uzlu = zvýšení výšky tak, aby byl o 1 výš než nejnižší
z následníků na rezervních hranách– protlačení vlny = zvýšení toku hrany o minimum z rezervní
kapacity a přebytku počátku
Teoretická informatika
Goldbergův algoritmus II.
• Nastav v(s) = |U|, výšku ostatních uzlů na 0• Nasyť všechny hrany vedoucí ze zdroje
– koncové uzly se stávají aktivními– přidej je do fronty
• Dokud není fronta aktivních uzlů prázdná– odeber uzel z fronty– existuje-li nižší následník na rezervní hraně, protlač
tok po této hraně– jinak zvedni uzel– je-li zel stále aktivní, přidej jej na konec fronty
Teoretická informatika
Párování v grafech
• Párování v grafu je množina hran, z nichž žádné dvě nemají společný uzel
• Jedná se tedy o dvojice sousedních uzlů• Maximální párování je takové párování, k němuž
nelze přidat další hranu• Největší párování je takové párování, které má
největší možnou velikost• Perfektní (kompletní) párování je párování
pokrývající všechny uzly• V hranově ohodnoceném grafu má smysl hledat
maximální párování s nejvyšším/nejnižším ohodnocením
Teoretická informatika
Aplikace: Přiřazovací problém
• Je dána množina pracovníků a množina úkolů– dvě množiny uzlů v bipartitním grafu
• Hrany vyjadřují schopnost pracovníka splnit daný úkol– obvykle se jedná o úplný bipartitní graf
• Ohodnocení hran vyjadřuje čas/cenu/zisk/…• Hledáme maximální párování (každý pracovník bude
zaúkolován a každý úkol bude řešen)• s maximálním/minimálním součtem ohodnocení• Zvláštní případ dopravního problému
Teoretická informatika
Hledání největšího párování I.
• Hallův teorém: Je dán bipartitní graf G = ((A,B),H). Párování pokrývající celou množinu A existuje právě tehdy, když SA: |V(S)||S|
• Je dáno párování P v grafu G. Střídavá cesta je taková cesta, jejíž hrany střídavě leží a neleží v párování P.
• Volný uzel je takový uzel, který není incidentní s žádnou hranou z párování
• Zlepšující cesta je taková střídavá cesta, jejíž oba krajní uzly jsou volné
Teoretická informatika
Hledání největšího párování II.
• Symetrický rozdíl množinAB = (A–B)(B–A)=(AB)–(AB)
• Je-li P párování v grafu, |P|=n a C je zlepšující cesta, pak P’ = PC je rovněž párování a platí, že |P’|=n+1
• Algoritmus hledání maximálního párování pomocí střídavých cest– najdeme libovolné párování PH– najdeme střídavou cestu C začínající ve volném vrcholu z A
a končící ve volném vrcholu z B– P := PC– opakujeme dokud existuje zlepšující cesta
Teoretická informatika
Maximální párování pomocí toku• Předpokládejme bipartitní graf G = ((A,B),H)
– orientace hran je vždy z uzlu ležícího v A do uzlu ležícího v B
• Graf G rozšíříme na síť přidáním nových uzlů s a t• pro každé uA přidáme hranu (s,u) o kapacitě 1• pro každé vB přidáme hranu (v,t) o kapacitě 1• pro každou hranu hH nastavíme c(h)=L
– kde L je libovolné velké číslo• najdeme maximální tok z s do t• tok jednoznačně určuje maximální párování
top related