1 %%%%%%%%%%%%%%%%%%%%%%%
\r
2 % Zápisek prvého semináøe z grafových algoritmù - ze dne ? 7.6.2006 ?
\r
3 % Téma Toky v sítích a zejména Ford-Fulkersonùv algoritmus.
\r
4 % Zapsal Radovan ©esták - radovan.sestak@gmail.com
\r
5 %%%%%%%%%%%%%%%%%%%%%%
\r
9 \prednaska{1}{Toky v sítích a FF algoritmus}{zapsal Radovan ©esták}
\r
13 V následujícím odstavci uká¾eme nìkolik tvrzení o sítích, které je
\r
14 mo¾né si pøedstavit jako sí» potrubí køí¾ící se v uzlech. Vrchol
\r
15 z kterého se kapalina ¹íøí nazveme zdroj a vrchol kde odtéká stok. Pro
\r
16 ostatní vrcholy platí, ¾e objem kapaliny pøitékající se rovná objemu
\r
17 kapaliny odtékající. Toto pravidlo, které pochází z teorie o elektrických obvodech,
\r
18 se zvykne nazývat Kirchhoffùv zákon. Hledání maximálního toku je duální úlohou k hledání
\r
19 minimálního øezu. Ford-Fulkersonùv(FF) algoritmus, který bude popsán ní¾e je základním
\r
20 algoritmem pro hledání tokù. Na úlohu hledání maximálního toku se dají pøevést mnohé
\r
21 grafové problémy a i proto existuje mnoho algoritmù a nìkteré z nich jsou pouze modifikace
\r
22 základního FF algoritmu. V dal¹í pøedná¹ce najdete Dinitzùv algoritmus pro tenhle problém.
\r
28 \:sí»: $N=(V,E,s,t,w)$ kde $V$ je mno¾ina vrcholù, $E\subseteq V\times V$,
\r
29 $s\in V$ je zdroj, $t\in V$ je stok, $w:\, E\rightarrow{R}^{+}$ jsou kapacity hran
\r
30 \:tok: $f:\, E\rightarrow{R}^{+}$kde $\forall e\in E\, f(e)\leq w(e)$ a
\r
31 $\forall v\in V,\, v\neq s,\, v\neq t\,\,\sum_{uv\in E}f(uv)=\sum_{vw\in E}f(vw)$
\r
32 \:velikost toku: $\|f\|=\sum_{sv\in E}f(sv)-\sum_{vs\in E}f(vs)$ kde $s$ je zdroj
\r
33 \:øez: $st$-øez je mno¾ina hran $C\subseteq E$ taková, ¾e v grafu $(V,\, E\setminus C)$ neexistuje
\r
35 \:separátor: $st$-separátor je mno¾ina vrcholù $S\subseteq V$ taková, ¾e v grafu
\r
36 $(V\setminus S,\, E\cap(V\setminus S)\times(V\backslash S))$ neexistuje
\r
38 \:velikost øezu: $\|c\|=\sum_{e\in c}w(e)$ je velikost øezu
\r
41 \figure{graf.eps}{Pøíklad orientovaného grafu ze zvoleným zdrojem a stokem.}{0.4\hsize}
\r
43 \s{Vìta(Ford-Fulkerson) o souvislosti tokù a øezù}
\r
44 Nech» $N=(V,E,s,t,w)$ je sí», $F$ je mno¾ina pøípustných tokù pro tuto sí» a $C$ je
\r
45 mno¾ina øezù oddìlující zdroj od stoku. Pak
\r
46 $$max_{f\in F}|f|=min_{c\in C}\|c\|$$.
\r
47 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
48 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
49 $$max_{f\in st-F}\|f\|=min_{c\in st-C}\|c\|$$
\r
50 pro graf $G=(V,E,w)$.
\r
54 \s{$max_{f}\|f\|\leq min_{c}\|c\|$:} Vìznìme libovolný øez oddìlující zdroj od stoku $c$ a uva¾me
\r
55 graf $G'=(V,E\setminus c)$, který vznikl odebráním hran nacházejících se v øezu. Buï $S$ mno¾ina
\r
56 vrcholù dosa¾itelných ze zdroje v $G'$.
\r
57 Pro libovolnej tok $f$ platí:
\r
59 $$\|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
60 velikost toku je rovna rozdílu velikostí tokù pøes hrany opou¹tìjící $S$ a pøicházející do $S$.
\r
61 $$\|f\| = \sum_{u\in V}f(su) - \sum_{u\in V}f(us)$$
\r
62 proto¾e se tok zachovává ve v¹ech vrcholech partity $S$ kromì $s$ dostáváme
\r
63 $$= \sum_{v\in S}(\sum_{u\in V}f(uv)-\sum_{u\in V}f(vu))$$
\r
64 $f(uv)$ pro $u,v\in S$ jsme jednou pøièítali a jednou odèítali
\r
65 $$= \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
67 Teï si u¾ staèí jenom uvìdomit, ¾e
\r
68 $$\|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
69 \leq \sum_{uv\in E, u\in S, v\notin S}w(uv) \leq \|c\|$$
\r
70 Poslední nerovnost je dùsledkem toho, ¾e øez obsahuje v¹echny hrany opou¹tìjící $S$.
\r
72 $max_{f}|f|\geq min_{c}|c|$: dùkaz plyne z korektnosti
\r
73 Ford-Fulkersonova algoritmu viz. algoritmus dále
\r
75 \s{Dùsledek:}Pro ka¾dou sí» s celoèíselnými kapacitami je její maximální tok celoèíselný.
\r
77 \h{Maximální párování v bipartitním grafu}
\r
78 Maximální párování v bipartitním grafu $(A\cup B,E)$ se dá najít
\r
79 pomocí maximálního toku v síti $(A\cup B\cup s\cup t,E',s,t,w)$ kde
\r
80 $w(e)=1$ a $E'=\{ uv\| u\in A, uv\in E\} \cup \{su\| u\in A\} \cup\{ut\| u\in B\}$ a
\r
81 obdobnì mù¾eme nalézt minimální vrcholové pokrytí.
\r
83 \figure{bip-graf.eps}{Bipartitní graf pro který hledáme maximální párování.}{0.2\hsize}
\r
84 \figure{bip-tok.eps}{Sí» v které najdeme maximální tok.}{0.3\hsize}
\r
88 \:neorientovaný graf G je vrcholovì k-souvislý $\Leftrightarrow$ G má alespoò
\r
89 k+1 vrcholù a neexistuje separátor s ménì ne¾ k vrcholy
\r
90 \:neorientovaný graf G je hranovì k-souvislý $\Leftrightarrow$ G má alespoò k+1 vrcholù
\r
91 a neexistuje øez s ménì ne¾ k hranami
\r
92 \:orientovaný graf je silnì souvislý $\Leftrightarrow$ existuje orientovaná cesta mezi
\r
93 v¹emi vrcholy v obou smìrech
\r
94 \:cirkulace je nulový tok t.j. $\forall v\in V, \sum f(uv)=\sum f(vu)$
\r
97 \s{Vìta:}(Menger) o souvislosti existencí disjunktních cest a souvislostí
\r
100 buï $G$ neorientovaný graf, pak:
\r
102 \:$G$ je vrcholovì k-souvislý $\Leftrightarrow$$\forall v,w\in V\,\exists$
\r
103 k vrcholovì disjunktních cest z $v$ do $w$
\r
104 \:$G$ je hranovì k-souvislý $\Leftrightarrow$$\forall v,w\in V\,\exists$
\r
105 k hranovì disjunktních cest z $v$ do $w$
\r
106 \:kdy¾ $u$ a $v$ jsou nesousední vrcholy v $G$ pak maximální poèet vrcholovì disjunktních
\r
107 cest mezi $u$ a $v$ se rovná minimálnímu poètu vrcholù z $G-{u,v}$ kterých odebrání oddìlí
\r
109 \:kdy¾ $u$ a $v$ jsou vrcholy v $G$ pak maximální poèet hranovì disjunktních
\r
110 cest mezi $u$ a $v$ se rovná minimálnímu poètu hran, kterých odebrání oddìlí $u$ od $v$
\r
112 buï $G$ orientovaný graf, pak:
\r
114 \:kdy¾ $u$ a $v$ jsou vrcholy $G$, $uv\notin E(G)$ pak maximální poèet vrcholovì disjunktních
\r
115 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
116 \:kdy¾ $u$ a $v$ jsou vrcholy $G$ pak maximální poèet hranovì disjunktních cest z $u$ do $v$ je
\r
117 rovný minimálnímu poètu hran, kterých odebrání oddìlí $u$ od $v$
\r
120 Vrcholová i hranová souvislost grafu se dá zjistit pomocí maximálního
\r
121 toku. Pro hranovou souvislost pøímo zjistíme maximální tok pro ka¾dou
\r
122 dvojici vrcholù (volba zdroje a stoku). V pøípadì neorientovaného grafu vyrobíme orientovaný graf tak, ¾e ka¾dou
\r
123 neorientovanou hranu nahradíme orientovanými v obou smìrech. Pro vrcholovou souvislost
\r
124 navíc musíme ka¾dý vrchol nahradit dvìma novými a spojit je hranou
\r
125 v obou smìrech (pod-rozdìlení vrcholu). Kapacity hran volíme 1.
\r
126 Pro nalezení tìchto cest staèí v¾dy v síti odebírat postupnì cestu
\r
127 z $s$ do $t$. Odebrání jedné cesty sní¾í tok o jedna a tedy cest
\r
129 \figure{vrchol.eps}{Vrchol který chceme pod-rozdìlit.}{0.1\hsize}
\r
130 \figure{podrozdeleni.eps}{Výsledek pod-rozdìlení vrcholu.}{0.15\hsize}
\r
133 \s{Ford-Fulkersonùv algoritmus}
\r
134 Algoritmus nepracuje pøímo s kapacitami a s toky pøes hrany, ale s rezervami
\r
135 tìchto hran. Funkce rezerv definujeme jako $r(uv)\equiv w(uv)-f(uv)+f(vu)$.
\r
136 Jestli $uv\notin E(G)$ pak $w(uv)=0$.
\r
137 Kdy¾ zmen¹ujeme rezervu hrany tak o stejnou hodnotu zvý¹íme hodnotu
\r
138 rezervy opaèné hrany. Dále pak FF cesta, je cesta pro kterou má ka¾dá hrana kladnou rezervu.
\r
141 \:nastav rezervy pro nulový tok na v¹ech hranách (rezervy se rovnají kapacitám)
\r
142 \:while $\exists$FF cesta z $s$ do $t$
\r
143 \::buï $p$ FF cesta z $s$ do $t$
\r
144 \::zvìt¹i tok zmen¹ením rezerv, o $m=min_{uv\in p}r(uv)$
\r
146 \:spoèti tok z rezerv
\r
149 Pro dùkaz korektnosti algoritmu uva¾ mno¾inu $X=\{ v,\,\exists$FF
\r
150 cesta z $s$ do $v\}$ po dobìhnutí algoritmu. Proto¾e neexistuje FF cesta z $s$ do $t$, $t\notin X$.
\r
151 Pak mno¾iny $X$ a $V\setminus X$ urèují øez tvoøený hranami spojujícími
\r
152 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
153 mají nulovou rezervu, nebo» jinak by se dala prodlou¾it FF cesta do vrcholu z $V\setminus X$. Tak¾e velikost
\r
154 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
155 FF vìty). Souèasnì tyhle hrany tvoøí $st$-øez, kterého kapacita je rovna velikosti toku. Na¹li jsme tedy øez,
\r
156 kterého velikost se rovná velikosti pøípustného toku a tím je dùkaz FF vìty ukonèen.
\r
158 Kdy¾ máme celoèíselné kapacity hran tak v ka¾dém kroku se tok zvìt¹í
\r
159 alespoò o jedna a maximální tok je z hora omezen, napøíklad souètem
\r
160 v¹ech kapacit hran. Pro racionální kapacity staèí vynásobit kapacity
\r
161 a dostaneme celoèíselné. Z toho plyne koneènost FF algoritmu pro hrany s racionálními kapacitami.
\r
162 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
163 má maximální minimum pøes rezervy tak je FF algoritmus koneèný i pro reálné kapacity hran.
\r
165 Pro FF algoritmus s jednotkovými kapacitami a vyu¾itím BFS (procházení
\r
166 do ¹íøky) na hledání FF cest je èasová slo¾itost algoritmu $O(n.m)$.
\r
167 Edmunds s Karpem dokázali, ¾e pøi volbì nejkrat¹í cesty je èasová
\r
168 slo¾itost v obecném pøípadì $O(n.m^{2})$.
\r