1. Toky v sítích (zapsala Markéta Popelová)

Podobné dokumenty
2.Tokyvsítích. Čajovod

1. Toky, řezy a Fordův-Fulkersonův algoritmus

5 Orientované grafy, Toky v sítích

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

1. Toky v sítích Toky v sítích

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Základy teorie množin

1 Lineární prostory a podprostory

10 Přednáška ze

PŘEDNÁŠKA 2 POSLOUPNOSTI

Základy matematické analýzy

1. Toky v sítích Toky v sítích

0. Ukázka použití maker (zapsal Martin Mareš) 1. Toky v sítích (zapsala Markéta Popelová)

Lineární algebra : Báze a dimenze

Dnešní látka Variačně formulované okrajové úlohy zúplnění prostoru funkcí. Lineární zobrazení.

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

NMAF 051, ZS Zkoušková písemná práce 16. ledna 2009

Kreslení grafů na plochy Tomáš Novotný

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

Dijkstrův algoritmus

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

PLANARITA A TOKY V SÍTÍCH

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

Úvod do informatiky. Miroslav Kolařík

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Vzorové řešení 6. série

Důkaz Heineho Borelovy věty. Bez újmy na obecnosti vezmeme celý prostor A = M (proč? úloha 1). Implikace. Nechť je (M, d) kompaktní a nechť.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

TGH10 - Maximální toky

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Toky v sítích. Ruský petrobaron vlastní ropná naleziště na Sibiři a trubky vedoucí do Evropy. Trubky vedou mezi nalezišti, uzlovými

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

9. přednáška 26. listopadu f(a)h < 0 a pro h (0, δ) máme f(a 1 + h, a 2,..., a m ) f(a) > 1 2 x 1

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Úvod do řešení lineárních rovnic a jejich soustav

Báze a dimenze vektorových prostorů

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

55. ročník matematické olympiády

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

Vrcholová barevnost grafu

Úlohy nejmenších čtverců

6. série. Všehochuť úloha Dokažte, že rovnice x x 9 99 =0. má dva různé reálné iracionální kořeny.

Přednáška 6, 7. listopadu 2014

III přednáška Toky v sítích

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

Lineární algebra Kapitola 1 - Základní matematické pojmy

2. LIMITA A SPOJITOST FUNKCE

Těleso racionálních funkcí

Přednáška 11, 12. prosince Část 5: derivace funkce

Úlohy klauzurní části školního kola kategorie A

4 Pojem grafu, ve zkratce

2. přednáška 8. října 2007

Číselné posloupnosti

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

1 Nenulové toky. 1.1 Úvod. 1.2 Definice

1 Linearní prostory nad komplexními čísly

Operace s maticemi

Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1]

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Limita posloupnosti a funkce

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Úvod do informatiky. Miroslav Kolařík

[1] x (y z) = (x y) z... (asociativní zákon), x y = y x... (komutativní zákon).

Lineární algebra : Lineární prostor

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2

Cvičení z Lineární algebry 1

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

Hypergrafové removal lemma a Szemérediho

Vlastnosti regulárních jazyků

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

Pomocný text. Polynomy

11. Skalární součin a ortogonalita p. 1/16

Definice 1 eulerovský Definice 2 poloeulerovský

Řešení 1. série. Řešení S-I-1-1 Nejdříve si uvědomme, že platí následující vztahy. h = 1 2 v d, h = 1 2 s k,

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

16. Goniometrické rovnice

M - Kvadratické rovnice

Zavedení a vlastnosti reálných čísel

f(c) = 0. cn pro f(c n ) > 0 b n pro f(c n ) < 0

8 Přednáška z

Učební texty k státní bakalářské zkoušce Matematika Skalární součin. študenti MFF 15. augusta 2008

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Necht L je lineární prostor nad R. Operaci : L L R nazýváme

Lineární algebra : Polynomy

Lineární algebra : Úvod a opakování

Numerické řešení nelineárních rovnic

Úvod do teorie her

Zimní semestr akademického roku 2014/ prosince 2014

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Riemannův určitý integrál

To je samozřejmě základní pojem konvergence, ale v mnoha případech je příliš obecný a nestačí na dokazování některých užitečných tvrzení.

M - Kvadratické rovnice a kvadratické nerovnice

Transkript:

1. Toky v sítích (zapsala Markéta Popelová) První motivační úloha: Rozvod čajovodu do všech učeben. Představme si, že by v budově fakulty na Malé Straně existoval čajovod, který by rozváděl čaj do každé učebny. Znázorněme si to orientovaným grafem, kde by jeden významný vrchol představoval čajovar a druhý učebnu, ve které sedíme. Hrany mezi vrcholy by představovaly větvící se trubky, které mají čaj rozvádět. Jak rozvést co nejefektivněji dostatek čaje do dané učebny? Čajovod Druhá motivační úloha: Přenos dat. Jinýmpříklademmůžebýtpočítačovásíťnapřenosdat,kterásesestávázpřenosových linek spojených pomocí routerů. Data se sice obvykle přenášejí po paketech, ale to můžeme při dnešních rychlostech přenosu zanedbat a považovat data za spojitá. Jak přenášet data mezi dvěma počítači v síti co nejrychleji? Definice:Síťjeuspořádanápětice(V, E, z, s, c),kdeplatí: (V, E)jeorientovanýgraf. c:e Ê + 0 jekapacitahran. z, s V jsoudvavrcholygrafu,kterýmříkámezdrojastok(spotřebič). Grafjesymetrický,tedy u, v V : uv E vu E(tutopodmínku simůžemezvolitbezújmynaobecnosti,neboťvždymůžemedografu přidat hranu, která v něm ještě nebyla, a dát jí nulovou kapacitu). π 2π 9 6 z 6 8 s 2 1 2 5 4 3 Příklad sítě. Čísla představují kapacity jednotlivých hran. 1 2010-02-09

Definice:Tokjefunkce f: E Ê + 0 taková,žeplatí: 1.Tokpokaždéhranějeomezenjejíkapacitou: e E: f(e) c(e). 2. Kirchhoffův zákon: v V \ {z, s}: f(uv)= f(vu). u:uv E u:vu E Neboliprokaždývrcholkromězdrojeastokuplatí,žeto,codonějpřitéká, jestejněvelkéjakoto,coznějodtéká. Poznámka: Pro zjednodušení zaveďme speciální značení: f + (v)= u:uv E f(uv)(to,codovrcholupřitéká) f (v)= u:vu E f(vu)(to,cozvrcholuodtéká) f (v)=f + (v) f (v)(rozdíltěchtohodnot) Pak můžeme Krichhoffův zákon zapsat jednoduše jako: v V \ {z, s}: f (v)=0. Poznámka: V angličtině se obvykle zdroj značí s a stok t jako source a target. π (π) π (2π) 2 (9) π + 2 (6) 6(6) 2 2 (8) z s w(f) = π + 11 2 1 2 (2) 1 2 (1 2 ) 1(3) 9 2 (5) 7 2 (4) Příklad toku. Čísla představují toky po hranách, v závorkách jsou kapacity. Pozorování: Nějaký tok vždy existuje. V libovolné síti můžeme vždy zvolit funkci nulovou(po žádné hraně nic nepoteče). Tato funkce splňuje podmínky toku, a tedy takovýto nulový tok je zcela korektní. Definice: Velikost toku f je rozdíl součtu velikostí toku na hranách vedoucích do s asoučtuvelikostítokunahranáchvedoucíchzs.neboliodtoho,codostokupřitéká odečteme to, co ze stoku odtéká. f := f (s). Cíl: Budeme chtít najít v zadané síti tok, jehož velikost je maximální. 2 2010-02-09

Otázka: Má vůbec smysl mluvit o maximálním toku? Bude vždy existovat? Nevybírámezdetotižzkonečněmnohapřípadůanaprvnípohledneníjasné,žesupremum množiny všech toků bude zároveň i maximum této množiny. Odpověď: Ano, pro každou síť existuje maximální tok. Toto poměrně překvapivé tvrzení můžeme nahlédnout za pomoci matematické analýzy. Nástin důkazu je takový, že množina toků je kompaktní a velikost toku je spojitá(dokonce lineární) funkcezmnožinytokůdo Ê.Protonabývávelikosttokunamnožiněvšechtoků svého maxima. Poznámka: Pro naše případy předpokládejme, že kapacity jsou racionální. Poměrně námtozjednodušípráciapřílišnámtoneublíží,neboťprácesreálnýmičíslyje stejně pro informatika poměrně zapeklitá. Prvnířešení:Hledejmecestu Pze zdo stakovou,že e P: f(e) < c(e)(povšech jejích hranách teče ostře méně, než jim dovolují jejich kapacity). Pak zjevně můžeme tok upravit tak, aby se jeho velikost zvětšila. Zvolme ε:=min(c(e) f(e)). e P Novýtok f pakdefinujmejako f (e) := f(e)+ǫ.kapacitynepřekročíme(ǫje největší možná hodnota, abychom tok zvětšili, ale nepřekročili kapacitu ani jedné zhrancesty P)aKirchhoffovyzákonyzůstanouneporušeny,neboťzdrojastok nezahrnujíakaždémujinémuvrcholunacestě P sepřítok f + (v)iodtok f (v) zvětšípřesněoǫ. Otázka: Najdeme takto ovšem opravdu maximální tok? Odpověď: Nemusíme. Např. na obrázku je vidět, že když najdeme nejdříve cestu přes hranuskapacitou1(naobrázkutučně)aužhodnotutokunatétohraněnesnížíme, tak dosáhneme velikost toku nejvýše 19. Ale maximální tok této sítě má velikost 20. Čísla představují kapacity jednotlivých hran. Zde by ovšem situaci zachránilo, kdybychom poslali tok velikosti 1 proti směru prostřední hrany to můžeme udělat třeba odečtením jedničky od toku po směru hrany. Někdy je tedy potřeba poslat něco i v protisměru. Definujme si rezervu hrany. Tanámříká,kolikmůžemedanýmsměremještěposlat.Využijemezde,žesíťje symetrická. Definice:Rezervahrany uvje r(uv):= c(uv) f(uv)+f(vu). 3 2010-02-09

Ukažme si nyní algoritmus, který rezervy využívá, a dokažme, že je konečný a že najde maximální tok každé racionální sítě. Algoritmus(Fordův-Fulkersonův) 1. f libovolnýtok,např.všudenulový( e E: f(e) 0). 2.Dokud Pcestaze zdo staková,že e P: r(e) >0,opakujeme: 3. ε min{r(e) e P }. 4. Provšechnyhrany uv P: 5. δ min{f(vu), ε} 6. f(vu) f(vu) δ 7. f(uv) f(uv)+ε δ 8. Prohlásíme f za maximální tok. Problém: Zastaví se Fordův-Fulkersonův algoritmus? Pro celočíselné kapacity se v každém kroku zvětší velikost toku alespoň o 1. Algoritmus se tedy zastaví po nejvíce tolika krocích, jako je nějaká horní závora pro velikost maximálního toku např. součet kapacit všech hran vedoucích do stoku c(us). u:us E Pro racionální kapacity využijeme jednoduchý trik kapacity vynásobíme společným jmenovatelem a převedeme na původní případ. Uvědomme si, že algoritmus nikde kapacity hran ale ani toky na hranách nedělí, takže už zůstanou celočíselné. A tak jsme převedli racionální kapacity na celočíselné, pro které už víme, že se algoritmus zastaví. Na síti s iracionálními kapacitami se algoritmus chová mnohdy divoce, nemusí se zastavit ale dokonce ani konvergovat ke správnému výsledku. K zamyšlení: Zkuste vymyslet příklad takové sítě. Otázka: Vydá algoritmus maximální tok? Odpověď: Vydá. Abychom si to dokázali, zaveďme si řezy a použijme je jako certifikát maximality nalezeného toku. Definice:Řez jeuspořádanádvojicemnožinvrcholů(a, B)taková,že AaBjsou disjunktní, pokrývají všechny vrcholy, A obsahuje zdroj a B obsahuje stok. Neboli A B=, A B= V, z A, s B. Definice:Hranyřezu E(A, B):= E A B. Poznámka:Řezysedajídefinovatvícezpůsoby,jednazdefinicje,žeřezjemnožina hran grafu takových, že po jejich odebrání se graf rozpadne na více komponent. Tuto definicisplňujeitanaše,alenenaopak. Definice: Kapacita řezu je c(a, B):= c(e). 4 2010-02-09

Definice:Tokpřesřezje f(a, B):= f(e) e E(B,A) f(e). Pozorování:Prokaždýtok fakaždýřez(a, B)platí,že f(a, B) c(a, B). Důkaz: f(a, B)= e (A,B) f(e) e E(B,A) f(e) f(e) Lemmátko:Prokaždýtok faprokaždýřez(a, B)platí f(a, B)= f. Důkaz: Indukcí a obrázkem. c(e)=c(a, B). Začnemesřezem(V \ {s}, {s}).protentořezlemmaplatízdefinicevelikosti toku. Dále budu postupně přesouvat vrcholy z množiny B do množiny A. Libovolný řez může být takto vytvořen z toho triviálního. Představmesi,žemámejižlibovolnýřez(A, B)apřesouvámevrchol vza do B.Tedy A = A \ {v}ab = B {v}. Uvědommesi,ževšechnyhranyjednohotypu(např.vedoucízAdo v)sechovají stejně, takže stačí uvažovat hrany pouze 4 typů(+ ostatní hrany(ty, které přesun neovlivní) označíme ε): α hranyvedoucízado v β hranyvedoucízvdo B γ hranyvedoucízvdo A δ hranyvedoucízbdo v Přesunvrcholu vzado B. Předpřesunem(v A)se f(a, B)skládázε+β δ.popřesunu(v B) se f(a, B )skládázε+α γ.rozdíltěchtohodnotje α+δ β γ. Nicméně z Kirchhoffova zákonu o vrcholu v(což není ani zdroj ani stok) víme, že α+δ β γ= f (v)=0,neboť α+δjeto,codo vpřitéká,aβ+ γjeto, cozvvytéká.tedytokpřesřezpředpřesunemjestejněvelkýjakotokpřesřez po přesunu. Pokud lemma platilo před přesunem, musí platit i po přesunu. Důsledek:Prokaždýtok fařez(a, B)platí,že f =f(a, B) c(a, B). 5 2010-02-09

Pozorování:Pokudnajdemedvojicitok fařez(a, B)takovou,žeplatí f =c(a, B), paktok fjemaximálnía řez(a, B)minimální. Věta: Pokud se Fordův-Fulkersonův algoritmus zastaví, tak vydá maximální tok. Důkaz: NechťseFordův-Fulkersonůvalgoritmuszastaví.Definujme A={v V; cestaze zdo vjdoucípohranáchsr>0}ab= V \ A. Uvědommesi,že(A, B)jeřez,neboť z A(ze zdo zexistujecestadélky0) a s B(kdyby s B,takbymuselaexistovatcestaze zdo sskladnourezervou, tudíž by algoritmus neskončil, nýbrž tuto cestu vzal a stávající tok vylepšil). Dálevíme,ževšechnyhranyřezumajínulovourezervu,neboli uv E(A, B): r(uv)=0(kdybymělahrana uvrezervunenulovou,tedykladnou,takbyvrchol v patřildo A).ProtopovšechhranáchřezuvedoucíchzAdo Btečetolik,kolikjsou kapacitytěchtohran,apohranáchvedoucíchz Bdo Anetečenic,tedy f(uv)=c(uv) a f(vu)=0.mámeřez(a, B)takový,že f(a, B)=c(A, B).Toznamená,žejsme našli maximální tok a minimální řez. Zformulujme si, co jsme zjistili a dokázali o algoritmu pánů Forda a Fulkersona. Věta: Pro síť s racionálními kapacitami se Fordův-Fulkersonův algoritmus zastaví a vydá maximální tok a minimální řez. Věta:(Fordova-Fulkersonova) Důkaz: min c(a, B)=max f. (A,B)řez f tok Jižvíme,žemin (A,B) c(a, B) max f f.stačítedydokázat,ževždyexistují tok f ařez(a, B)takové,že c(a, B)= f.proracionálníkapacitynámfordův- Fulkersonův algoritmus takový tok(maximální) a řez(minimální) vydá. Jak je to ale s reálnými kapacitami? Využijeme tvrzení, že maximální tok existuje vždy. Pak můžeme spustit Fordův-Fulkersonův algoritmus rovnou na tento maximální tok(místo nulového). Algoritmus se nutně ihned zastaví, neboť neexistuje cesta, která by měla alespoň jednu hranu s kladnou rezervou. A my víme, že pokud se algoritmus zastaví,takvydáminimálnířez.protoiprosíťsreálnýmikapacitamiplatí,žeexistuje maximálnítok faminimálnířez(a, B)ac(A, B)= f. Věta: Síť s celočíselnými kapacitami má aspoň jeden z maximálních toků celočíselný a Fordův-Fulkersonův algoritmus takový tok najde. Důkaz: Když dostane Fordův-Fulkersonův algoritmus celočíselnou síť, tak najde maximální tok a ten bude zase celočíselný(algoritmus nikde nedělí). To, že umíme najít celočíselné řešení není úplně samozřejmé.(u jiných problémů takové štěstí mít nebudeme.) Ukažme si rovnou jednu aplikaci, která právě celočíselný tok využije. Aplikace: Hledání maximálního párování v bipartitních grafech. 6 2010-02-09

Definice:Množinahran F Esenazývápárování,jestližežádnédvěhranytéto množinynemajíspolečnýanijedenvrchol.neboli e, f F: e f=. Definice: Párování je maximální, pokud obsahuje největší možný počet hran. Mějme bipartitní graf G =(V, E). V něm hledáme maximální párování. Sestrojmesisíťtakovou,ževezmemevrcholy V grafu Gapřidámeknimdvaspeciální vrcholy z(zdroj)as(stok)azezdrojepřidámehranydovšechvrcholůlevépartity a ze všech vrcholů pravé partity povedeme hrany do stoku. Všechny kapacity nastavme na 1. Hrany bipartitního grafu zorientujme z levé partity do pravé. Nyní stačí jen na tuto síť spustit Fordův-Fulkersonův algoritmus(nebo libovolný jiný algoritmus, který najde maximální celočíselný tok) a až doběhne, tak prohlásit hrany s tokem 1 za maximální párování. Hledání maximálního párování v bipartitním grafu. Existuje totiž bijekce mezi párováním a celočíselnými toky při zachování velikosti. Z každého toku na výše zmíněném grafu(viz obrázek) lze sestrojit párování o stejné velikosti(velikost toku zde odpovídá počtu hran bipartitního grafu, po kterých poteče 1) a naopak. Důležité je si uvědomit, že definice toku(omezení toku kapacitou a Kirchhoffovy zákony) nám zaručují, že hrany s nenulovým tokem(tedy jedničkovým) budou tvořit párování(nestane se, že by dvě hrany začínaly nebo končily ve stejném vrcholu, neboť by se nutně porušila jedna ze dvou podmínek definice toku). Potom i maximální tok bude odpovídat maximálnímu párování a naopak. V bipartitním grafu najdeme maximální párování v čase O(n (m+n)). Fordův- Fulkersonův algoritmus stráví jednou iterací čas O(m + n)(za prohledání do šířky) a při jednotkových kapacitách bude iterací nejvýše n, protože každou se tok zvětší alespoňo1avšechnytokyjsouomezenéřezemkolemzdroje,kterýmákapacitu nejvýše n. Výsledná časová složtost hledání maximálního párování bude tedy O(n (m+n)). 7 2010-02-09