1 / 22

Toky v sítích Párování v grafech

Toky v sítích Párování v grafech. 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?. Síť. Síť je orientovaný graf, jehož hrany jsou ohodnoceny nezápornými reálnými čísly a ve kterém vyznačíme dva uzly

amie
Download Presentation

Toky v sítích Párování v grafech

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Toky v sítíchPárování v grafech

  2. 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?

  3. 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: HR+0 je funkce přiřazující hranám ohodnocení (kapacitu, průtok)

  4. Tok • Je dána síť N = (G, s, t, c). Tokemv síti nazveme takové ohodnocení hran f: HR+0, které splňuje • kapacitní omezení: 0≤f(h)≤c(h) pro každé hH • 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)

  5. Tok – analogická definice • Za tok považujeme funkci f: VVR • 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í

  6. Řez • Řezv síti je taková množina hran, po jejichž odstranění by v síti nezbyla žádná cesta ze zdroje do stoku • velikost řezuje 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

  7. 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:

  8. Další síťové pojmy • Rezervní kapacita hranycf(h) = c(h) – f(h) • je-li cf(h) = 0, hovoříme o nasyceníhrany h • Rezervní kapacita cestyje minimum rezervních kapacit hran na této cestě • Nasycená cestaje 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í tokv síti je takový tok, který má největší možnou velikost.

  9. Rozšiřující cesta a polocesta • Rozšiřující (též zlepšující) cestaje 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

  10. 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.

  11. 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)

  12. Věta o maximálním toku a minimálním řezu – důkaz • 12 jsme již dokázali • 31 jsme již dokázali • 23 • 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), uA, vB musí být nasycené (jinak by vA) a tedy f(u,v) = c(u,v) • odtud

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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ž SA: |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é

  21. Hledání největšího párování II. • Symetrický rozdíl množinAB = (A–B)(B–A)=(AB)–(AB) • Je-li P párování v grafu, |P|=n a C je zlepšující cesta, pak P’ = PC 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í PH • najdeme střídavou cestu C začínající ve volném vrcholu z A a končící ve volném vrcholu z B • P := PC • opakujeme dokud existuje zlepšující cesta

  22. 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é uA přidáme hranu (s,u) o kapacitě 1 • pro každé vB přidáme hranu (v,t) o kapacitě 1 • pro každou hranu hH 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í

More Related