]> mj.ucw.cz Git - ga.git/commitdiff
Nulta revize toku.
authorMartin Mares <mj@ucw.cz>
Fri, 27 Oct 2006 16:20:02 +0000 (18:20 +0200)
committerMartin Mares <mj@ucw.cz>
Fri, 27 Oct 2006 16:20:02 +0000 (18:20 +0200)
1-toky/1-toky.tex
sgr.tex

index 334827c90fecf1567d0749ec069d403eb83383d7..159d0fe490634f5fe2fb0444ea7ba036984ff055 100644 (file)
-%%%%%%%%%%%%%%%%%%%%%%%\r
-% Zápisek prvého semináøe z grafových algoritmù - ze dne ? 7.6.2006 ?\r
-% Téma Toky v sítích a zejména Ford-Fulkersonùv algoritmus.\r
-% Zapsal Radovan ©esták - radovan.sestak@gmail.com\r
-%%%%%%%%%%%%%%%%%%%%%%\r
-\r
 \input ../sgr.tex\r
 \r
-\prednaska{1}{Toky v sítích a FF algoritmus}{zapsal Radovan ©esták}\r
+\prednaska{1}{Toky, øezy a Ford-Fulkersonùv algoritmus}{zapsal Radovan ©esták}\r
 \r
-\h{Toky v sítích}\r
+V~této kapitole nadefinujeme toky v~sítích, øezy a související pojmy a uká¾eme\r
+Ford-Fulkersonùv algoritmus na nalezení maximálního toku. Dal¹í algoritmy budou\r
+následovat v~pøí¹tích kapitolách.\r
+\r
+\todo{Tady (nebo nìkde jinde poblí¾) by mìly být zavedeny základní znaèky.}\r
 \r
-V následujícím odstavci uká¾eme nìkolik tvrzení o sítích, které je\r
-mo¾né si pøedstavit jako sí» potrubí køí¾ící se v uzlech. Vrchol\r
-z kterého se kapalina ¹íøí nazveme zdroj a vrchol kde odtéká stok. Pro\r
-ostatní vrcholy platí, ¾e objem kapaliny pøitékající se rovná objemu\r
-kapaliny odtékající. Toto pravidlo, které pochází z teorie o elektrických obvodech,\r
-se zvykne nazývat Kirchhoffùv zákon. Hledání maximálního toku je duální úlohou k hledání \r
-minimálního øezu. Ford-Fulkersonùv(FF) algoritmus, který bude popsán ní¾e je základním \r
-algoritmem pro hledání tokù. Na úlohu hledání maximálního toku se dají pøevést mnohé\r
-grafové problémy a i proto existuje mnoho algoritmù a nìkteré z nich jsou pouze modifikace \r
-základního FF algoritmu. V dal¹í pøedná¹ce najdete Dinitzùv algoritmus pro tenhle problém.\r
+\todo{Co je $V$, $E$, $m$, $n$ \dots}\r
 \r
+\h{Toky v sítích}\r
+\r
+Intuitivní pohled: sí» je systém propojených potrubí, který pøepravuje tekutinu\r
+ze~zdroje~$s$ (source) do~spotøebièe~$t$ (target), pøièem¾ tekutina\r
+se nikde mimo tato dvì místa neztrácí ani nevzniká.\r
 \r
 \s{Definice:}\r
 \r
 \itemize\ibull\r
-\:sí»: $N=(V,E,s,t,w)$ kde $V$ je mno¾ina vrcholù, $E\subseteq V\times V$,\r
-$s\in V$ je zdroj, $t\in V$ je stok, $w:\, E\rightarrow{R}^{+}$ jsou kapacity hran\r
-\:tok: $f:\, E\rightarrow{R}^{+}$kde $\forall e\in E\, f(e)\leq w(e)$ a\r
-$\forall v\in V,\, v\neq s,\, v\neq t\,\,\sum_{uv\in E}f(uv)=\sum_{vw\in E}f(vw)$\r
-\:velikost toku: $\|f\|=\sum_{sv\in E}f(sv)-\sum_{vs\in E}f(vs)$ kde $s$ je zdroj\r
-\:øez: $st$-øez je mno¾ina hran $C\subseteq E$ taková, ¾e v grafu $(V,\, E\setminus C)$ neexistuje\r
-cesta z s do t\r
-\:separátor: $st$-separátor je mno¾ina vrcholù $S\subseteq V$ taková, ¾e v grafu\r
-$(V\setminus S,\, E\cap(V\setminus S)\times(V\backslash S))$ neexistuje\r
-cesta z s do t\r
-\:velikost øezu: $\|c\|=\sum_{e\in c}w(e)$ je velikost øezu\r
+\:{\I Sí»} je uspoøádaná pìtice $(V,E,s,t,c)$, kde:\r
+  \itemize\ibull\r
+  \:$(V,E)$ je orientovaný graf,\r
+  \:$s\in V$ {\I zdroj,}\r
+  \:$t\in V$ {\I stok,} a\r
+  \:$c: E\rightarrow {\bb R}^+$ funkce udávající {\I kapacity} jednotlivých hran.\r
+  \endlist\r
+\:{\I Ohodnocení} hran je libovolná funkce $f:\, E\rightarrow {\bb R}$. Pro ka¾dé ohodnocení $f$\r
+  mù¾eme definovat:\r
+  $$ f^+(v) = \sum_{e=(\cdot,w)} f(e), \quad\r
+     f^-(v) = \sum_{e=(w,\cdot)} f(e), \quad\r
+     f^\Delta(v) = f^+(v) - f^-(v)\r
+  $$\r
+  [intuitivnì: co do~vrcholu pøiteèe, co odteèe a jaký je v~nìm pøebytek].\r
+\:{\I Tok} je ohodnocení $f:\, E\rightarrow {\bb R}$, pro které platí:\r
+  \itemize\ibull\r
+  \:$\forall e: 0 \le f(e) \le w(e)$, \quad {\I (dodr¾uje kapacity)}\r
+  \:$\forall v\ne s,t: f^\Delta(v)=0$. \quad {\I (Kirchhoffùv zákon)}\r
+  \endlist\r
+\:{\I Velikost toku:} $\vert f \vert = -f^\Delta(s)$.\r
+\:{\I Øez (tokový):} mno¾ina vrcholù $C\subset V$ taková, ¾e $s\in C$, $t\not\in C$. Øez mù¾eme také\r
+  ztoto¾nit s~mno¾inami hran $E \cap (C \times \overline C)$ [tìm budeme øíkat hrany zleva doprava a budeme\r
+  je znaèit $C^-$] a $E \cap (\overline C \times C)$ [hrany zprava doleva, tedy $C^+$].\r
+\:{\I Kapacita øezu:} $\vert C \vert = \sum_{e \in C^-} c(e)$ (bereme v~úvahu jen hrany zleva doprava).\r
+\:{\I Tok pøes øez:} $f^-(C)=\sum_{e \in C^-} f(e)$, $f^+(C)=\sum_{e\in C^+} f(e)$, $f^\Delta(C)=f^+(C)-f^-(C)$.\r
+\:{\I Cirkulace} je nulový tok, èili $\forall v: f^\Delta(v)=0$.\r
 \endlist\r
 \r
 \figure{graf.eps}{Pøíklad orientovaného grafu ze zvoleným zdrojem a stokem.}{0.4\hsize}\r
 \r
-\s{Vìta(Ford-Fulkerson) o souvislosti tokù a øezù}\r
-Nech» $N=(V,E,s,t,w)$ je sí», $F$ je mno¾ina pøípustných tokù pro tuto sí» a $C$ je\r
-mno¾ina øezù oddìlující zdroj od stoku. Pak \r
-$$max_{f\in F}|f|=min_{c\in C}\|c\|$$. \r
-Vìta platí pro v¹echny výbìry zdrojù a stokù $\forall s,t\in V, s\neq t$ nech» $st-F$ je mno¾ina\r
-v¹ech tokù ze zdroje $s$ do stoku $t$ a $st-C$ je mno¾ina v¹ech øezù oddìlujících $s$ od $t$. Pak\r
-$$max_{f\in st-F}\|f\|=min_{c\in st-C}\|c\|$$\r
-pro graf $G=(V,E,w)$.\r
+Základním problémem, kterým se budeme zabývat, je hledání {\I maximálního toku} (tedy toku nejvìt¹í mo¾né\r
+velikosti) a {\I minimálního øezu} (øezu nejmen¹í mo¾né kapacity).\r
 \r
-\s{Dùkaz vìty:}\r
+\s{Vìtièka:} V~ka¾dé síti existuje maximální tok a minimální øez.\r
 \r
-\s{$max_{f}\|f\|\leq min_{c}\|c\|$:} Vìznìme libovolný øez oddìlující zdroj od stoku $c$ a uva¾me\r
-graf $G'=(V,E\setminus c)$, který vznikl odebráním hran nacházejících se v øezu. Buï $S$ mno¾ina \r
-vrcholù dosa¾itelných ze zdroje v $G'$.\r
-Pro libovolnej tok  $f$ platí: \r
+\s{Dùkaz:} Existence minimálního øezu je triviální, proto¾e øezù v~ka¾dé síti je koneènì mnoho;\r
+pro toky v~sítích s~reálnými kapacitami to ov¹em není samozøejmost a je k~tomu potøeba trocha matematické\r
+analýzy (v~prostoru v¹ech ohodnocení hran tvoøí toky kompaktní mno¾inu, velikost toku je lineární funkce,\r
+a~tedy i spojitá, proèe¾ nabývá maxima). Pro racionální kapacity dostaneme tuto vìtièku jako dùsledek\r
+analýzy Ford-Fulkersonova algoritmu.\r
 \r
-$$\|f\| =  \sum_{uv\in E, u\in S, v\notin S}f(uv) - \sum_{uv\in E, u\in S, v\notin S}f(vu)$$\r
-velikost toku je rovna rozdílu velikostí tokù pøes hrany opou¹tìjící $S$ a pøicházející do $S$.\r
-$$\|f\| = \sum_{u\in V}f(su) - \sum_{u\in V}f(us)$$\r
-proto¾e se tok zachovává ve v¹ech vrcholech partity $S$ kromì $s$ dostáváme\r
-$$= \sum_{v\in S}(\sum_{u\in V}f(uv)-\sum_{u\in V}f(vu))$$\r
-$f(uv)$ pro $u,v\in S$ jsme jednou pøièítali a jednou odèítali\r
-$$= \sum_{uv\in E, u\in S, v\notin S}f(uv) - \sum_{uv\in E, u\in S, v\notin S}f(vu)$$\r
+\s{Pozorování:} Kdybychom velikost toku definovali podle spotøebièe, vy¹lo by toté¾:\r
+$$\eqalign{\r
+\sum_v f^\Delta(v) &= f^\Delta(s) + f^\Delta(t) \hbox{~~~(podle Kirchhoffova zákona), ale také:} \cr\r
+\sum_v f^\Delta(v) &= \sum_e f(e) - f(e) = 0 \hbox{~~~(ka¾dá hrana pøispìje k~jednomu $f^+(v)$ a k~jednomu $f^-(v)$),}\r
+}$$\r
+tak¾e $\vert f\vert = -f^\Delta(s) = f^\Delta(t).$\r
 \r
-Teï si u¾ staèí jenom uvìdomit, ¾e \r
-$$\|f\| = \sum_{uv\in E, u\in S, v\notin S}f(uv)- \sum_{uv\in E, u\in S, v\notin S}f(vu) \leq \sum_{uv\in E, u\in S, v\notin S}f(uv)\r
-\leq \sum_{uv\in E, u\in S, v\notin S}w(uv) \leq \|c\|$$\r
-Poslední nerovnost je dùsledkem toho, ¾e øez obsahuje v¹echny hrany opou¹tìjící $S$.\r
+Stejnì tak mù¾eme velikost toku zmìøit na~libovolném øezu:\r
 \r
-$max_{f}|f|\geq min_{c}|c|$: dùkaz plyne z korektnosti\r
-Ford-Fulkersonova algoritmu viz. algoritmus dále\r
+\s{Lemma:} Pro ka¾dý øez $C$ platí, ¾e $\vert f\vert = -f^\Delta(C) \le \vert C \vert$.\r
 \r
-\s{Dùsledek:}Pro ka¾dou sí» s celoèíselnými kapacitami je její maximální tok celoèíselný.\r
+\s{Dùkaz:} První èást indukcí: ka¾dý øez mù¾eme získat postupným pøidáváním vrcholù do~triviálního øezu $\{s\}$\r
+[tedy pøesouváním vrcholu zprava doleva], a~to, jak uká¾e jednoduchý rozbor pøípadù, nezmìní $f^\Delta$.\r
+Druhá èást: $-f^\Delta(C) = f^-(C) - f^+(C) \le f^-(c) \le \vert C \vert.$ \qed\r
 \r
-\h{Maximální párování v bipartitním grafu}\r
-Maximální párování v bipartitním grafu $(A\cup B,E)$ se dá najít\r
-pomocí maximálního toku v síti $(A\cup B\cup s\cup t,E',s,t,w)$ kde\r
-$w(e)=1$ a $E'=\{ uv\| u\in A, uv\in E\} \cup \{su\| u\in A\} \cup\{ut\| u\in B\}$ a\r
-obdobnì mù¾eme nalézt minimální vrcholové pokrytí.\r
+Velikost ka¾dého toku mù¾eme tedy omezit kapacitou libovolného øezu. Kdybychom na¹li tok a øez stejné\r
+velikosti, mù¾eme si tedy být jisti, ¾e tok je maximální a øez minimální. To není náhoda, platí toti¾\r
+následující vìta:\r
 \r
-\figure{bip-graf.eps}{Bipartitní graf pro který hledáme maximální párování.}{0.2\hsize}\r
-\figure{bip-tok.eps}{Sí» v které najdeme maximální tok.}{0.3\hsize}\r
+\s{Vìta (Ford, Fulkerson):} V~ka¾dé síti je velikost maximálního toku rovna velikosti minimálního øezu.\r
 \r
-\s{Definice}\r
-\itemize\ibull\r
-\:neorientovaný graf G je vrcholovì k-souvislý $\Leftrightarrow$ G má alespoò\r
-k+1 vrcholù a neexistuje separátor s ménì ne¾ k vrcholy\r
-\:neorientovaný graf G je hranovì k-souvislý $\Leftrightarrow$ G má alespoò k+1 vrcholù\r
-a neexistuje øez s ménì ne¾ k hranami\r
-\:orientovaný graf je silnì souvislý $\Leftrightarrow$ existuje orientovaná cesta mezi\r
-v¹emi vrcholy v obou smìrech\r
-\:cirkulace je nulový tok t.j.  $\forall v\in V, \sum f(uv)=\sum f(vu)$\r
-\endlist\r
+\s{Dùkaz:} Jednu nerovnost jsme dokázali v~pøedchozím lemmatu, druhá plyne z~duality lineárního\r
+programování [max. tok a min. øez jsou navzájem duální úlohy], ale k~pìknému kombinatorickému\r
+dùkazu pùjde opìt pou¾ít Ford-Fulkersonùv algoritmus.\r
 \r
-\s{Vìta:}(Menger) o souvislosti existencí disjunktních cest a souvislostí\r
-grafù\r
+\h{Ford-Fulkersonùv algoritmus}\r
+\r
+Nejpøímoèaøej¹í zpùsob, jak hledat toky v~sítích, je zaèít s~nìjakým tokem (nulový je po~ruce v¾dy)\r
+a postupnì ho zlep¹ovat tak, ¾e nalezneme nìjakou nenasycenou cestu a po¹leme po~ní \uv{co pùjde}.\r
+To~bohu¾el nefunguje, ale mù¾eme tento postup trochu zobecnit a být ochotni pou¾ívat nejen hrany,\r
+pro~které je $f(e) < c(e)$, ale také hrany, po~kterých nìco teèe v~protismìru a my mù¾eme tok\r
+v~na¹em smìru simulovat odeètením od~toku v~protismìru. Trochu formálnìji:\r
+\r
+\s{Definice:}\r
 \r
-buï $G$ neorientovaný graf, pak:\r
-\itemize\ibull\r
-\:$G$ je vrcholovì k-souvislý $\Leftrightarrow$$\forall v,w\in V\,\exists$\r
-k vrcholovì disjunktních cest z $v$ do $w$\r
-\:$G$ je hranovì k-souvislý $\Leftrightarrow$$\forall v,w\in V\,\exists$\r
-k hranovì disjunktních cest z $v$ do $w$\r
-\:kdy¾ $u$ a $v$ jsou nesousední vrcholy v $G$ pak maximální poèet vrcholovì disjunktních\r
-cest mezi $u$ a $v$ se rovná minimálnímu poètu vrcholù z $G-{u,v}$ kterých odebrání oddìlí\r
-$u$ od $v$ \r
-\:kdy¾ $u$ a $v$ jsou vrcholy v $G$ pak maximální poèet hranovì disjunktních\r
-cest mezi $u$ a $v$ se rovná minimálnímu poètu hran, kterých odebrání oddìlí $u$ od $v$\r
-\endlist\r
-buï $G$ orientovaný graf, pak:\r
 \itemize\ibull\r
-\:kdy¾ $u$ a $v$ jsou vrcholy $G$, $uv\notin E(G)$ pak maximální poèet vrcholovì disjunktních\r
-cest z $u$ do $v$ je rovný minimálnímu poètu vrcholù z $G-{u,v}$ kterých odebrání oddìlí $u$ od $v$\r
-\:kdy¾ $u$ a $v$ jsou vrcholy $G$ pak maximální poèet hranovì disjunktních cest z $u$ do $v$ je\r
-rovný minimálnímu poètu hran, kterých odebrání oddìlí $u$ od $v$\r
+\:{\I Rezerva} hrany $e=(v,w)$ pøi toku~$f$ se definuje jako $r(e) = (c(e) - f(e)) + f(e^\prime)$, kde $e^\prime=(w,v)$.\r
+  Pro úèely tohoto algoritmu budeme pøedpokládat, ¾e ke~ka¾dé hranì hrana opaèná existuje; pokud ne, dodefinujeme\r
+  si ji s~nulovou kapacitou.\r
+\:{\I Zlep¹ující cesta} je orientovaná cesta taková, ¾e v¹echny její hrany mají nenulovou rezervu.\r
 \endlist\r
 \r
-Vrcholová i hranová souvislost grafu se dá zjistit pomocí maximálního\r
-toku. Pro hranovou souvislost pøímo zjistíme maximální tok pro ka¾dou\r
-dvojici vrcholù (volba zdroje a stoku). V pøípadì neorientovaného grafu vyrobíme orientovaný graf tak, ¾e ka¾dou\r
-neorientovanou hranu nahradíme orientovanými v obou smìrech. Pro vrcholovou souvislost\r
-navíc musíme ka¾dý vrchol nahradit dvìma novými a spojit je hranou\r
-v obou smìrech (pod-rozdìlení vrcholu). Kapacity hran volíme 1.\r
-Pro nalezení tìchto cest staèí v¾dy v síti odebírat postupnì cestu\r
-z $s$ do $t$. Odebrání jedné cesty sní¾í tok o jedna a tedy cest\r
-musíme nalézt $k$.\r
-\figure{vrchol.eps}{Vrchol který chceme pod-rozdìlit.}{0.1\hsize}\r
-\figure{podrozdeleni.eps}{Výsledek pod-rozdìlení vrcholu.}{0.15\hsize}\r
-\r
-\r
-\s{Ford-Fulkersonùv algoritmus}\r
-Algoritmus nepracuje pøímo s kapacitami a s toky pøes hrany, ale s rezervami\r
-tìchto hran. Funkce rezerv definujeme jako $r(uv)\equiv w(uv)-f(uv)+f(vu)$.\r
-Jestli $uv\notin E(G)$ pak $w(uv)=0$.\r
-Kdy¾ zmen¹ujeme rezervu hrany tak o stejnou hodnotu zvý¹íme hodnotu\r
-rezervy opaèné hrany. Dále pak FF cesta, je cesta pro kterou má ka¾dá hrana kladnou rezervu.\r
+\s{Algoritmus:}\r
 \r
 \algo\r
-\:nastav rezervy pro nulový tok na v¹ech hranách (rezervy se rovnají kapacitám)\r
-\:while $\exists$FF cesta z $s$ do $t$\r
-\::buï $p$ FF cesta z $s$ do $t$\r
-\::zvìt¹i tok zmen¹ením rezerv, o $m=min_{uv\in p}r(uv)$ \r
-\:end while\r
-\:spoèti tok z rezerv\r
+\:$f \leftarrow 0$\r
+\:while $\exists$ zlep¹ující cesta $P$ z~$s$ do~$t$\r
+\::$m=\min_{e\in P} r(P)$\r
+\::zvìt¹i tok $f$ podle~$P$ o~$m$ (ka¾dé hranì $e\in P$ zvìt¹i $f(e)$, pøípadnì zmen¹i $f(e^\prime)$, podle toho, co jde)\r
 \endalgo\r
 \r
-Pro dùkaz korektnosti algoritmu uva¾ mno¾inu $X=\{ v,\,\exists$FF\r
-cesta z $s$ do $v\}$ po dobìhnutí algoritmu. Proto¾e neexistuje FF cesta z $s$ do $t$, $t\notin X$.\r
-Pak mno¾iny $X$ a $V\setminus X$ urèují øez tvoøený hranami spojujícími\r
-vrcholy z rùzných mno¾in $c=\{uv: uv\in E, u\in X, v\in V\setminus X\}$. V¹echny hrany $uv\in c$\r
-mají nulovou rezervu, nebo» jinak by se dala prodlou¾it FF cesta do vrcholu z $V\setminus X$. Tak¾e velikost\r
-toku se rovná souètu kapacit hran z $X$ do $V\setminus X$ (tohle tvrzení jsme dokázali pøi dùkazu opaèné implikace\r
-FF vìty). Souèasnì tyhle hrany tvoøí $st$-øez, kterého kapacita je rovna velikosti toku. Na¹li jsme tedy øez, \r
-kterého velikost se rovná velikosti pøípustného toku a tím je dùkaz FF vìty ukonèen. \r
-\r
-Kdy¾ máme celoèíselné kapacity hran tak v ka¾dém kroku se tok zvìt¹í\r
-alespoò o jedna a maximální tok je z hora omezen, napøíklad souètem\r
-v¹ech kapacit hran. Pro racionální kapacity staèí vynásobit kapacity\r
-a dostaneme celoèíselné.  Z toho plyne koneènost FF algoritmu pro hrany s racionálními kapacitami.\r
-Táto varianta FF algoritmu není obecnì koneèná pøi reálných kapacitách. Volíme-li ov¹em zlep¹ující cestu, která\r
-má maximální minimum pøes rezervy tak je FF algoritmus koneèný i pro reálné kapacity hran.\r
-\r
-Pro FF algoritmus s jednotkovými kapacitami a vyu¾itím BFS (procházení\r
-do ¹íøky) na hledání FF cest je èasová slo¾itost algoritmu $O(n.m)$.\r
-Edmunds s Karpem dokázali, ¾e pøi volbì nejkrat¹í cesty je èasová\r
-slo¾itost v obecném pøípadì $O(n.m^{2})$.\r
+\s{Analýza:} Nejdøíve si rozmysleme, ¾e pro celoèíselné kapacity algoritmus v¾dy dobìhne: v~ka¾dém kroku\r
+stoupne velikost toku o~$m \ge 1$, co¾ mù¾e nastat pouze koneènìkrát. Podobnì pro racionální kapacity:\r
+pøenásobíme-li v¹echny kapacity jejich spoleèným jmenovatelem, dostaneme sí» s~celoèíselnými kapacitami,\r
+na~které se bude algoritmus chovat identicky a jak ji¾ víme, skonèí. Pro~iracionální kapacity obecnì\r
+dobìhnout nemusí, zkuste vymyslet protipøíklad.\r
+\r
+Uva¾me nyní situaci po~zastavení algoritmu. Funkce~$f$ je urèitì tok, proto¾e jím byla po~celou dobu\r
+bìhu algoritmu. Prozkoumejme teï mno¾inu $C$ vrcholù, do~nich¾ po~zastavení algoritmu vede zlep¹ující cesta ze~zdroje.\r
+Jistì $s\in C$, $t\not\in C$, tak¾e tato mno¾ina je øez. Navíc pro ka¾dou hranu $e\in C^-$ musí\r
+být $f(e)=c(e)$ a pro ka¾dou $e\in C^+$ je $f(e)=0$, proto¾e jinak by rezerva hrany~$e$ nebyla\r
+nulová. Tak¾e $f^-(C) = \vert C \vert$ a $f^+(C) = 0$, èili $\vert f\vert = \vert C \vert$.\r
+\r
+Na¹li jsme tedy k~toku, který algoritmus vydal, øez stejné velikosti, tak¾e jak u¾ víme,\r
+tok je maximání a øez minimální. Tím jsme také dokázali Ford-Fulkersonovu vìtu (dokonce\r
+i pro obecné reálné kapacity, proto¾e mù¾eme algoritmus spustit na maximální tok místo nulového\r
+a on se ihned zastaví a vydá certifikující øez). Navíc algoritmus nikdy nevytváøí z~celých\r
+èísel necelá, èim¾ získáme:\r
+\r
+\s{Dùsledek:} Sí» s~celoèíselnými kapacitami má maximální tok, který je celoèíselný.\r
+\r
+\s{Èasová slo¾itost} F-F algoritmu mù¾e být pro obecné sítì a ne¹ikovnou volbu zlep¹ujících\r
+cest obludná, ale jak dokázali Edmonds s~Karpem, pokud budeme hledat cesty prohledáváním\r
+do~¹íøky (co¾ je asi nejpøímoèaøej¹í implementace), pobì¾í v~èase $O(m^2n)$. Pokud budou\r
+v¹echny kapacity jednotkové, snadno nahlédneme, ¾e staèí $O(nm)$.\r
+\r
+\h{Maximální párování v bipartitním grafu}\r
+\r
+Jedním z~problémù, které lze snadno pøevést na~hledání maximálního toku, je nalezení\r
+maximálního {\I párování} v~bipartitním grafu (to je mno¾ina hran taková, ¾e ¾ádné\r
+dvì nemají spoleèný vrchol).\r
+\r
+Bipartitní graf $(A\cup B, E)$ pøevedeme na sí» obsahující v¹echny pùvodní vrcholy\r
+plus dva nové vrcholy $s$ a~$t$, v¹echny pùvodní hrany orientované z~$A$ do~$B$,\r
+nové hrany z~$s$ do~v¹ech vrcholù partity~$A$ a ze~v¹ech vrcholù partity~$B$ do~$t$.\r
+Kapacity v¹ech hran nastavíme na jednièky.\r
+\r
+Nyní si v¹imneme, ¾e ke~ka¾dému párování existuje celoèíselný tok stejné velikosti a naopak.\r
+Tak¾e najdeme maximální celoèíselný tok (tøeba F-F algoritmem) a do~párování umístíme\r
+právì hrany, po~kterých nìco teèe.\r
+\r
+Podobnì mù¾eme najít souvislost mezi øezy v~této síti a {\I vrcholovými pokrytími}\r
+zadaného grafu -- to jsou mno¾iny vrcholù takové, ¾e se dotýkají ka¾dé hrany.\r
+Tak z~F-F vìty získáme:\r
+\r
+\s{Vìta (König):} V~ka¾dém bipartitním grafu je velikost maximálního párování\r
+rovna velikosti minimálního vrcholového pokrytí.\r
+\r
+\figure{bip-graf.eps}{Bipartitní graf pro který hledáme maximální párování.}{0.2\hsize}\r
+\figure{bip-tok.eps}{Sí», ve~které najdeme maximální tok.}{0.3\hsize}\r
+\r
+\h{Øezy, separátory a $k$-souvislost}\r
+\r
+\s{Definice:} Pro ka¾dý neorientovaný graf $G$ a libovolné jeho vrcholy $s,t$ zavedeme:\r
+\itemize\ibull\r
+\:{\I $st$-øez} je mno¾ina hran $F$ taková, ¾e v~grafu $G-F$ budou\r
+  vrcholy $s,t$ v~rùzných komponentách souvislosti.\r
+\:{\I $st$-separátor} je mno¾ina vrcholù $W$ taková, ¾e $s,t\not\in W$ a v~grafu $G-W$\r
+  budou vrcholy $s,t$ v~rùzných komponentách souvislosti.\r
+\:{\I Øez} je mno¾ina hran, která je $xy$-øezem pro nìjakou dvojici vrcholù $x,y$.\r
+\:{\I Separátor} je mno¾ina vrcholù, která je $xy$-separátorem pro nìjakou dvojici vrcholù $x,y$.\r
+\:$G$ je {\I hranovì $k$-souvislý,} pokud $\vert V\vert > k$ a v¹echny øezy v~$G$\r
+  mají více ne¾~$k$ hran.\r
+\:$G$ je {\I vrcholovì $k$-souvislý,} pokud $\vert V\vert > k$ a v¹echny separátory v~$G$\r
+\endlist\r
+\r
+V¹imnìte si, ¾e nesouvislý graf má øez i separátor velikosti~0, tak¾e vrcholová i hranová 1-souvislost\r
+splývají s~obyèejnou souvislostí pro v¹echny grafy o~alespoò dvou vrcholech. Hranovì 2-souvislé\r
+jsou právì (netriviální) grafy bez {\I mostù,} vrcholovì 2-souvislé jsou ty bez {\I artikulací.}\r
+\r
+Pro orientované grafy mù¾eme $st$-øezy a $st$-separátory definovat analogicky\r
+(toti¾, ¾e po~odstranìní pøíslu¹né mno¾iny hran èi vrcholù nemá existovat orientovaná\r
+cesta z~$s$ do~$t$), globální øezy a separátory ani vícenásobná souvislost se obvykle\r
+nedefinují.\r
+\r
+\s{Pozorování:} Minimální orientované $st$-øezy podle této definice a minimální tokové øezy\r
+podle definice ze~zaèátku kapitoly splývají: ka¾dý tokový øez~$C$ odpovídá $st$-øezu stejné\r
+velikosti tvoøenému hranami v~$C^-$; naopak pro~minimální $st$-øez musí být mno¾ina\r
+vrcholù dosa¾itelných z~$s$ po~odebrání øezu z~grafu tokovým øezem, opìt stejné velikosti.\r
+[Velikost mìøíme souètem kapacit hran.] Dává tedy rozumný smysl øíkat obojímu stejnì.\r
+Podobnì se chovají i neorientované grafy, pokud do~\uv{tokového} øezu poèítáme\r
+hrany v~obou smìrech.\r
+\r
+Analogií tokù je pak existence nìjakého poètu disjunktních cest (vrcholovì nebo hranovì)\r
+mezi vrcholy~$s$ a~$t$. Analogií F-F~vìty pak budou známé Mengerovy vìty:\r
+\r
+\s{Vìta (Mengerova, lokální hranová orientovaná):}\r
+Buï $G$ orientovaný graf a $s,t$ nìjaké jeho vrcholy. Pak je velikost minimálního\r
+$st$-øezu rovna maximálnímu poètu hranovì disjunktních $st$-cest.\foot{orientovaných\r
+cest z~$s$ do~$t$}\r
+\r
+\s{Dùkaz:} TODO\r
+\r
+\s{Vìta (Mengerova, lokální vrcholová orientovaná):}\r
+Buï $G$ orientovaný graf a $s,t$ nìjaké jeho vrcholy takové, ¾e $st\not\in E$.\r
+Pak je velikost minimálního $st$-separátoru rovna maximálnímu poètu vrcholovì\r
+disjunktních $st$-cest.\foot{Tím myslíme cesty disjunktní a¾ na~krajní vrcholy.}\r
+\r
+\s{Dùkaz:} TODO\r
+\r
+\figure{vrchol.eps}{Vrchol který chceme podrozdìlit.}{0.1\hsize}\r
+\figure{podrozdeleni.eps}{Výsledek podrozdìlení vrcholu.}{0.15\hsize}\r
+\r
+Podobnì dostaneme neorientované lokální vìty a z~nich pak i globální varianty\r
+popisující $k$-souvislost grafù:\r
+\r
+\s{Vìta (Mengerova, globální hranová neorientovaná):}\r
+Neorientovaný graf~$G$ je hranovì $k$-souvislý právì tehdy, kdy¾ mezi ka¾dými\r
+dvìma vrcholy existuje alespoò~$k$ hranovì disjunktních cest.\r
+\r
+\s{Vìta (Mengerova, globální vrcholová neorientovaná):}\r
+Neorientovaný graf~$G$ je vrcholovì $k$-souvislý právì tehdy, kdy¾ mezi ka¾dými dvìma\r
+vrcholy existuje alespoò~$k$ vrcholovì disjunktních cest.\r
 \r
 \bye\r
diff --git a/sgr.tex b/sgr.tex
index 042aec1ece4908ac50116999b695b4d528737da4..9759e48804f2da69d0298125cd67079928d986b3 100644 (file)
--- a/sgr.tex
+++ b/sgr.tex
 
 % Vlozeni obrazku {obrazek}{popisek}{sirka}
 \def\figure#1#2#3{\bigskip\vbox{\centerline{\epsfxsize=#3\epsfbox{#1}}\smallskip\centerline{#2}}\bigskip}
+
+% Todo
+\def\todo#1{\leftline{\bf TODO: \it #1}}
+
+% Blackboard bold font
+\newfam\bbfam
+\font\bbten=bbold10
+\textfont\bbfam=\bbten
+\def\bb{\bbten\fam\bbfam}