9 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem síťových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost (jako potrubní nebo počítačové sítě). Základní úlohou v této oblasti je problém nalezení maximálního toku v síti za podmínky respektování daných kapacit hran. Stručný přehled lekce * Definice a některé základní vlastnosti orientovaných grafů, souvislost. * Sítě s kapacitami hran, hledání maximálního toku a dualita. * Důsledky duality toku; vyšší souvislost, bipartitní párování, SRR. □ Petr Hliněný, Fl MU Brno, 2016 1/19 Fl: IB000: Toky v sítích ■r 9.1 Základní pojmy orientovaných grafů Požadavek explicitně vyjádřit směr hrany přirozeně vede na následující definici orientovaného grafu, ve kterém hrany jsou uspořádané dvojice vrcholů. Definice 9.1. Orientovaný graf je uspoř, dvojice D = (V, E), kde E C VxV\. Pojmy podgrafu a isomorfismu se přirozeně přenášejí na orientované grafy. Značení: Hrana (u,v) (zvaná také šipka) v orientovaném grafu D začíná ve vrcholu u a končí ve (míří do) vrcholu v. Opačná hrana (v, u) je různá od (u, v). Speciálně hrana tvaru (u,u) se nazývá orientovaná smyčka. Orientované grafy odpovídají relacím, které nemusí být symetrické. □ Petr Hliněný, Fl MU Brno, 2016 2/19 Fl: IB000: Toky v sítích • Orientovaná cesta délky n > O je následujícím grafem na n + 1 vrcholech n n + 1 Definice: Počet hran začínajících ve vrcholu u orientovaného grafu D nazveme výstupním stupněm ď^{u) a počet hran končících v u nazveme vstupním stupněm ď^{u). Součet všech výstupních stupňů je přirozeně roven součtu všech vstupních stupňů. Petr Hliněný, Fl MU Brno, 2016 3/19 Fl: IB000: Toky v sítích Souvislost na orientovaných grafech Uvedeme si odstupňovaně tři základní pohledy na orientovanou souvislost: • Slabá souvislost. Jedná se o tradiční souvislost na symetrizaci grafu D (tj. po „zapomenutí" směru šipek). ®-•-s>-*-<£--•-$>-® □ • Dosažitelnost (směrem „ven"). Orientovaný graf i? je dosažitelný směrem ven, pokud v něm existuje vrchol v £ V (D) takový, že každý vrchol x £ V (D) je dosažitelný orientovaným sledem z v. Petr Hliněný, Fl MU Brno, 2016 4/19 Fl: IB000: Toky v sítích Podrobným zkoumáním následujícího obrázku zjistíme, že jeho graf není dosažitelný směrem ven, neboť chybí možnost dosáhnout vrchol b úplně vpravo. Na druhou stranu po vypuštění b je zbylý graf dosažitelný ven z vrcholu a vlevo. Petr Hliněný, Fl MU Brno, 2016 5/19 Fl: IB000: Toky v sítích Souvislost na orientovaných grafech, silná • Silná souvislost. V nejsilnější verzi vyžadujeme současnou existenci spojení (cest) v obou směrech mezi dvojicí vrcholů. Tvrzení 9.2. Necht ^ je binární relace na vrcholové množině V{D) orientovaného grafu D taková, že • u ~ v právě když existuje dvojice orientovaných cest - jedna z u do v a druhá z v do u v grafu D. Pak ^ je relace ekvivalence. Definice 9.3. Silné komponenty orientovaného grafu D jsou třídy ekvivalence relace ~ uvedené v Tvrzení 9.2. Orientovaný graf D je silně souvislý pokud má nejvýše jednu silnou komponentu. Petr Hliněný, Fl MU Brno, 2016 6/19 Fl: IB000: Toky v sítích Ne, na obrázku jsou vyznačené jeho 4 silné komponenty. Zároveň uvádíme pro ilustraci obrázek kondenzace silných komponent tohoto grafu, což je acyklický orientovaný graf s vrcholy reprezentujícími zmíněné silné komponenty a směry hran mezi nimi. ^ ^ Petr Hliněný, Fl MU Brno, 2016 7/19 Fl: IB000: Toky v sítích 9.2 Definice sítě a toku Základní strukturou pro reprezentaci sítí je vážený orientovaný graf (přičemž implicitní směr hran je v tomto kontextu nezbytný). Definice 9.4. Síť je čtveřice S = (D,z,s,w), kde * D je orientovaný graf, * vrcholy z £ V (D), s G V (D) jsou zdroj a stok, * w : E(D) —> R+ je kladné ohodnocení hran, zvané kapacita hran. Poznámka: V praxi může být zdrojů a stoků více, ale v definici stačí pouze jeden zdroj a stok, z něhož / do nějž vedou hrany do ostatních zdrojů / stoků. (Dokonce pak různé zdroje a stoky mohou mít své kapacity.) Petr Hliněný, Fl MU Brno, 2016 8/19 Fl: IB000: Toky v sítích Velikost toku v síti Značení: Pro jednoduchost píšeme ve výrazech značku e —>> v pro hranu e končící ve vrcholu v a e ^— v pro hranu e začínající z v. Definice 9.5. Tok v síti S = (D, z, s, w) je funkce / : E(D) —>> Rq~ splňující * Ve G £"(-0) : O < /(e) < w(e), (respektování kapacity) * Vv G y(D),i? ^ z,s : f(e) — f(e)- (zachování substance) □ Velikost toku / je dána výrazem ||/|| = f(e) ~ f(e)- Značení: Tok a kapacitu hran v obrázku sítě budeme zjednodušeně zapisovat ve formátu F/C, kde F je hodnota toku na hraně a C je její kapacita. 2/4 ' Petr Hliněný, Fl MU Brno, 2016 9/19 Fl: IB000: Toky v sítích 9.3 Nalezení maximálního toku Naším úkolem je nalézt co největší přípustný tok v dané síti. Pro jeho nalezení existují jednoduché i velmi rychlé algoritmy. Definice 9.6. Úloha hledání maximálního toku v síti S = (D,z,s,w). Úkolem je v síti S najít tok / ze zdroje z do stoku s podle Definice 9.5 takový, který maximalizuje velikost ||/||. Tok velikosti 5 uvedený v ukázce v předchozí části nebyl optimální, neboť v této síti najdeme i tok velikosti 6: Jak však poznáme, že větší tok již v dané síti neexistuje? Petr Hliněný, Fl MU Brno, 2016 10/19 Fl: IB000: Toky v sítích r Pojem řezu v síti Definice 9.7. Rez v síti S = (D,z,s,w) je podmnožina hran X C E (D) taková, že v podgrafu D — X (tj. po odebrání hran X z D) nezbude žádná orientovaná cesta ze z do s. Velikostí řezu X rozumíme součet kapacit hran z X, tj. \\X\\ = J2eex w(e)- C =5 C =5 Věta 9.8. Maximální velikost toku v síti je rovna minimální velikosti řezu.c V uvedeném obrázku nalezneme tok velikosti 5. Vyznačený řez má také velikost 5. Petr Hliněný, Fl MU Brno, 2016 11/19 Fl: IB000: Toky v sítích ■r Nenasycené cesty v síti Definice: Mějme síť S a v ní tok /. Nenasycená cesta P (v S vzhledem k /) * je neorientovaná cesta v D mezi určenými vrcholy (obvykle ze z do s), tj. posloupnost navazujících libovolně orientovaných hran ei,e2,..., em, * kde f{ei) < w(ei) pro e^ ve směru ze z do s a f(ej) > 0 pro ej jinak. 3/4 1/2 1/1 2/3 2/4 UH>^-^-^-^--•-H5) rezerva kapacity: 7 +i +i +i +2 +2 > 0 □ * Hodnotám - w(ei) — f{ei) > 0 pro hrany e^ ve směru ze z do s - a /(ej) > 0 pro hrany ej v opačném směru říkáme rezerva kapacity hran. Nenasycená cesta je tudíž cesta s kladnými rezervami kapacit všech hran. Petr Hliněný, Fl MU Brno, 2016 12/19 Fl: IB000: Toky v sítích Metoda 9.9. Maximální tok vylepšováním nenasycených cest. Základní myšlenkou této jednoduché metody hledání maximálního toku v dané síti je prostě opakovaně vylepšovat tok podél nalezených nenasycených cest. 3/4 1/2 1/1 2/3 V4^ v z )—•---•-^=\s) rezerva kapacity: +i +i +i +2 +2 > 0 □ min. rezerva r = +1 4- P _ 4/4 2/2 0/1 1/3 3/4 □ Pro rekapitulaci, náš tok se „vylepší" následovně; * pro hrany £ E (P) ve směru ze z do s zvýšíme tok na fiei) — f{ei) +r, * pro hrany ej £ E (P) ve směru ze s do z snížíme tok na f'{ej) — f(ej) —r. Výsledný tok f pak bude opět přípustný. Petr Hliněný, Fl MU Brno, 2016 13/19 Fl: IB000: Toky v sítích Algoritmus 9.10. Ford-Fulkersonův pro tok v síti. • Vstup: Síť S = (D,z,s,w) podle Definice 9.4. • Tok /<-(0,0,...0). • Dále opakujeme následující: * Prohledáváním grafu najdeme množinu U vrcholů D, do kterých se dostaneme ze z po nenasycených cestách. * Pokud s £ U, nechť P značí nalezenou nenasycenou cestu y S ze z do s. - Zvětšíme tok / o minimální rezervu kapacity hran v P. • Opakujeme kroky výše, dokud nenastane s 0 U. • Výstup: Vypíšeme maximální tok / a také minimální řez jako množinu všech hran vedoucích z U do V(D) — U. Petr Hliněný, Fl MU Brno, 2016 14/19 Fl: IB000: Toky v sítích Důkaz správnosti Algoritmu 9.10: Pro každý tok / a každý řez X v síti S platí ||/|| < \\X\\. Jestliže po zastavení algoritmu s tokem / nalezneme v síti S vez o stejné velikosti \\X\ = ||/||, je jasné, že jsme našli maximální možný tok v síti S. (Pozor, zastavení algoritmu jsme zatím nezdůvodnili.) Takže dokažme, že po zastavení algoritmu nastane rovnost ||/|| = ||^||, kde X je vypsaný řez mezi U a zbytkem grafu D. Vezměme tok / v S bez nenasycené cesty ze z do s. Pak množina U z algoritmu neobsahuje s. /(e) w(e) U z m = o Nyní má každá hrana e ^— U (odch. z U) plný tok f(e) = w(e) a každá hrana e U (přich. do U) tok /(e) = 0, takže ii/ii = E /(e) - E /(e) = E /(e) = E ™(e) = nx Petr Hliněný, Fl MU Brno, 2016 15/19 Fl: IB000: Toky v sítích ■r Důsledky Ford-Fulkersonova algoritmu Z důkazu Algoritmu 9.10 odvodíme několik zajímavých faktů: • Pokud Algoritmus 9.10 vždy skončí, dokážeme tím i platnost Věty 9.8. • Pro celočíselné kapacity hran sítě S Algoritmus 9.10 vždy skončí. 3/4 1/2 1/1 2/3 2/4 rezerva kapacity: +i +i +i +2 +2 > 0 □ Pokud jsou kapacity hran sítě S celočíselné, opt. tok také vyjde celočíselně. Petr Hliněný, Fl MU Brno, 2016 16/19 Fl: IB000: Toky v sítích 9.4 Zobecněné použití sítí Sítě s kapacitami vrcholů: U sítě můžeme zadat kapacity vrcholů, neboli kapacitní váhová funkce je dána jako w : E(D) U V (D) -> R+. 5 □ Sítě s dolními kapacitami: Pro hrany sítě lze zadat také jejich minimální kapacity, tedy dolní meze přípustného toku, jako váhovou funkci í : E(D) —> Rq". t(e) < f(e) < w(e) Petr Hliněný, Fl MU Brno, 2016 17/19 Fl: IB000: Toky v sítích Bipartitní párování Definice: Párování y (nyní bipartitním) grafu g je podmnožina hran M C E (G) taková, že žádné dvě hrany z M nesdílejí koncový vrchol. Metoda 9.12. Nalezení bipartitního párování Pro daný bipartitní graf G s vrcholy rozdělenými do množin A, B sestrojíme sít S následovně: 1 • Hrany sítě S orientujeme od zdroje do stoku a přiřadíme jim kapacity 1. • Nyní najdeme (celočíselný) maximální tok v S Algoritmem 9.10. Do párování vložíme ty hrany grafu g, které mají nenulový tok. Petr Hliněný, Fl MU Brno, 2016 18/19 Fl: IB000: Toky v sítích ■r Výběr různých reprezentantů Definice: Nechť Mi, M2,..., jsou neprázdné množiny. Systémem různých reprezentantů množin Mi, M2,..., nazýváme takovou posloupnost různých prvků (xi, X2, • • • , Xfe), že x\ £ pro i — 1, 2,... , k. Věta 9.13. (Hall) Necht M1,M2,...,Mk jsou neprázdné množiny. Pro tyto množiny existuje systém různých reprezentantů, právě když platí VJC {1,2,..., A;} : (J M 3 > J neboli pokud sjednocení libovolné skupiny z těchto množin má alespoň tolik prvků, kolik množin je sjednoceno. Důkaz lze podat konstrukcí vhodné sítě podobné té v Metodě 9.12: • Použijí se speciální vrcholy u a v odpovídající zdroji a stoku; • další vrcholy reprezentují (zleva) množiny a (vpravo) prvky naší úlohy a • ostatní hrany mimo zdrojové a stokové (kapacity 1) vždy spojují množinu M j se všemi jejími prvky □ Petr Hliněný, Fl MU Brno, 2016 19/19 Fl: IB000: Toky v sítích