]> mj.ucw.cz Git - ga.git/blob - 1-toky/1-toky.tex
Prvni cast planarity.
[ga.git] / 1-toky / 1-toky.tex
1 \input ../sgr.tex
2
3 \prednaska{1}{Toky, øezy a Ford-Fulkersonùv algoritmus}{}
4
5 V~této kapitole nadefinujeme toky v~sítích, odvodíme základní vìty o~nich
6 a Ford-Fulkersonùv algoritmus pro hledání maximálního toku. Také uká¾eme,
7 jak na~hledání maximálního toku pøevést problémy týkající se øezù, separátorù
8 a párování. Dal¹í algoritmy budou následovat v~pøí¹tích kapitolách.
9
10 \h{Toky v sítích}
11
12 Intuitivní pohled: sí» je systém propojených potrubí, který pøepravuje tekutinu
13 ze~zdroje~$s$ (source) do~spotøebièe~$t$ (target), pøièem¾ tekutina
14 se nikde mimo tato dvì místa neztrácí ani nevzniká.
15
16 \s{Definice:}
17
18 \itemize\ibull
19 \:{\I Sí»} je uspoøádaná pìtice $(V,E,s,t,c)$, kde:
20   \itemize\ibull
21   \:$(V,E)$ je orientovaný graf,
22   \:$s\in V$ {\I zdroj,}
23   \:$t\in V$ {\I spotøebiè} neboli {\I stok} a
24   \:$c: E\rightarrow {\bb R}^+$ funkce udávající {\I kapacity} jednotlivých hran.
25   \endlist
26 \:{\I Ohodnocení} hran je libovolná funkce $f:\, E\rightarrow {\bb R}$. Pro ka¾dé ohodnocení $f$
27   mù¾eme definovat:
28   $$ f^+(v) = \sum_{e=(\cdot,w)} f(e), \quad
29      f^-(v) = \sum_{e=(w,\cdot)} f(e), \quad
30      f^\Delta(v) = f^+(v) - f^-(v)
31   $$
32   [co do~vrcholu pøiteèe, co odteèe a jaký je v~nìm pøebytek].
33 \:{\I Tok} je ohodnocení $f:\, E\rightarrow {\bb R}$, pro které platí:
34   \itemize\ibull
35   \:$\forall e: 0 \le f(e) \le w(e)$, \quad {\I (dodr¾uje kapacity)}
36   \:$\forall v\ne s,t: f^\Delta(v)=0$. \quad {\I (Kirchhoffùv zákon)}
37   \endlist
38 \:{\I Velikost toku:} $\vert f \vert = -f^\Delta(s)$.
39 \:{\I Øez (tokový):} mno¾ina vrcholù $C\subset V$ taková, ¾e $s\in C$, $t\not\in C$. Øez mù¾eme také
40   ztoto¾nit s~mno¾inami hran $C^- = E \cap (C \times \overline C)$ [tìm budeme øíkat hrany zleva doprava]
41   a $C^+ = E \cap (\overline C \times C)$ [hrany zprava doleva].
42 \:{\I Kapacita øezu:} $\vert C \vert = \sum_{e \in C^-} c(e)$ (bereme v~úvahu jen hrany zleva doprava).
43 \:{\I Tok pøes øez:}
44   $f^+(C)=\sum_{e\in C^+} f(e)$,
45   $f^-(C)=\sum_{e \in C^-} f(e)$,
46   $f^\Delta(C)=f^+(C)-f^-(C)$.
47 \:{\I Cirkulace} je nulový tok, èili $\forall v: f^\Delta(v)=0$.
48 \endlist
49
50 %%%\figure{graf.eps}{Pøíklad orientovaného grafu ze zvoleným zdrojem a stokem.}{0.4\hsize}
51
52 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é
53 velikosti) a {\I minimálního øezu} (øezu nejmen¹í mo¾né kapacity).
54
55 \s{Vìtièka:} V~ka¾dé síti existuje maximální tok a minimální øez.
56
57 \s{Dùkaz:} Existence minimálního øezu je triviální, proto¾e øezù v~ka¾dé síti je koneènì mnoho;
58 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é
59 analýzy (v~prostoru v¹ech ohodnocení hran tvoøí toky kompaktní mno¾inu, velikost toku je lineární funkce
60 a~tedy i spojitá, proèe¾ nabývá maxima). Pro racionální kapacity dostaneme tuto vìtièku jako dùsledek
61 analýzy Ford-Fulkersonova algoritmu.
62 \qed
63
64 \s{Pozorování:} Kdybychom velikost toku definovali podle spotøebièe, vy¹lo by toté¾:
65 $$\eqalign{
66 \sum_v f^\Delta(v) &= f^\Delta(s) + f^\Delta(t) \hbox{~~~(podle Kirchhoffova zákona jsou v¹echna ostatní $f^\Delta(v)=0$), ale také:} \cr
67 \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)$),}
68 }$$
69 tak¾e $\vert f\vert = -f^\Delta(s) = f^\Delta(t).$
70
71 Stejnì tak mù¾eme velikost toku zmìøit na~libovolném øezu:
72
73 \s{Lemma:} Pro ka¾dý øez $C$ platí, ¾e $\vert f\vert = -f^\Delta(C) \le \vert C \vert$.
74
75 \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\}$
76 [tedy pøesouváním vrcholù zprava doleva], a~to, jak uká¾e jednoduchý rozbor pøípadù, nezmìní $f^\Delta$.
77 Druhá èást: $-f^\Delta(C) = f^-(C) - f^+(C) \le f^-(C) \le \vert C \vert.$ \qed
78
79 Velikost ka¾dého toku mù¾eme tedy omezit kapacitou libovolného øezu. Kdybychom na¹li tok a øez stejné
80 velikosti, mù¾eme si tedy být jisti, ¾e tok je maximální a øez minimální. To není náhoda, platí toti¾
81 následující:
82
83 \s{Vìta (Ford, Fulkerson):} V~ka¾dé síti je velikost maximálního toku rovna velikosti minimálního øezu.
84
85 \s{Dùkaz:} Jednu nerovnost jsme dokázali v~pøedchozím lemmatu, druhá plyne z~duality lineárního
86 programování [max. tok a min. øez jsou navzájem duální úlohy], ale k~pìknému kombinatorickému
87 dùkazu pùjde opìt pou¾ít Ford-Fulkersonùv algoritmus.
88
89 \h{Ford-Fulkersonùv algoritmus}
90
91 Nejpøímoèaøej¹í zpùsob, jak bychom mohli hledat toky v~sítích, je zaèít s~nìjakým tokem (nulový je po~ruce v¾dy)
92 a postupnì ho zlep¹ovat tak, ¾e nalezneme nìjakou nenasycenou cestu a po¹leme po~ní \uv{co pùjde}.
93 To~bohu¾el nefunguje, ale mù¾eme tento postup trochu zobecnit a být ochotni pou¾ívat nejen hrany,
94 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
95 v~na¹em smìru simulovat odeètením od~toku v~protismìru. Trochu formálnìji:
96
97 \s{Definice:}
98
99 \itemize\ibull
100 \:{\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)$.
101   Pro úèely tohoto algoritmu budeme pøedpokládat, ¾e ke~ka¾dé hranì hrana opaèná existuje; pokud ne, dodefinujeme
102   si ji s~nulovou kapacitou.
103 \:{\I Zlep¹ující cesta} je orientovaná cesta taková, ¾e v¹echny její hrany mají nenulovou rezervu.
104 \endlist
105
106 \s{Algoritmus:}
107
108 \algo
109 \:$f \leftarrow \<nulový tok>$
110 \:while $\exists$ zlep¹ující cesta $P$ z~$s$ do~$t$
111 \::$m \leftarrow \min_{e\in P} r(e)$
112 \::zvìt¹i tok $f$ podél~$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).
113 \endalgo
114
115 \s{Analýza:} Nejdøíve si rozmysleme, ¾e pro celoèíselné kapacity algoritmus v¾dy dobìhne: v~ka¾dém kroku
116 stoupne velikost toku o~$m \ge 1$, co¾ mù¾e nastat pouze koneènìkrát. Podobnì pro racionální kapacity:
117 pøenásobíme-li v¹echny kapacity jejich spoleèným jmenovatelem, dostaneme sí» s~celoèíselnými kapacitami,
118 na~které se bude algoritmus chovat identicky a jak ji¾ víme, skonèí. Pro~iracionální kapacity obecnì
119 dobìhnout nemusí, zkuste vymyslet protipøíklad.
120
121 Uva¾me nyní situaci po~zastavení algoritmu. Funkce~$f$ je urèitì tok, proto¾e jím byla po~celou dobu
122 bìhu algoritmu. Prozkoumejme teï mno¾inu $C$ vrcholù, do~nich¾ po~zastavení algoritmu vede zlep¹ující cesta ze~zdroje.
123 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í
124 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
125 nulová. Tak¾e $f^-(C) = \vert C \vert$ a $f^+(C) = 0$, èili $\vert f\vert = \vert C \vert$.
126
127 Na¹li jsme tedy k~toku, který algoritmus vydal, øez stejné velikosti, tak¾e, jak u¾ víme,
128 tok je maximální a øez minimální. Tím jsme také dokázali Ford-Fulkersonovu vìtu\foot{Dokonce
129 jsme ji dokázali i pro reálné kapacity, proto¾e mù¾eme algoritmus spustit rovnou na maximální tok místo
130 nulového a on se ihned zastaví a vydá certifikující øez.} a existenci maximálního toku. Navíc algoritmus nikdy
131 nevytváøí z~celých èísel necelá, èim¾ získáme:
132
133 \s{Dùsledek:} Sí» s~celoèíselnými kapacitami má maximální tok, který je celoèíselný.
134
135 \s{Èasová slo¾itost} F-F algoritmu mù¾e být pro obecné sítì a ne¹ikovnou volbu zlep¹ujících
136 cest obludná, ale jak dokázali Edmonds s~Karpem, pokud budeme hledat cesty prohledáváním
137 do~¹íøky (co¾ je asi nejpøímoèaøej¹í implementace), pobì¾í v~èase $\O(m^2n)$. Pokud budou
138 v¹echny kapacity jednotkové, snadno nahlédneme, ¾e staèí $\O(nm)$. Edmondsùv a Karpùv
139 odhad nebudeme dokazovat, místo toho si v~pøí¹tí kapitole pøedvedeme efektivnìj¹í algoritmus.
140
141 \h{Maximální párování v bipartitním grafu}
142
143 Jedním z~problémù, které lze snadno pøevést na~hledání maximálního toku, je nalezení
144 {\I maximálního párování} v~bipartitním grafu\foot{Párování je mno¾ina hran taková, ¾e ¾ádné
145 dvì nemají spoleèný vrchol. Maximálním míníme vzhledem k~poètu hran, nikoliv vzhledem k~inkluzi.}.
146
147 Bipartitní graf $(A\cup B, E)$ pøevedeme na sí» obsahující v¹echny pùvodní vrcholy
148 a navíc dva nové vrcholy $s$ a~$t$, dále v¹echny pùvodní hrany orientované z~$A$ do~$B$,
149 nové hrany z~$s$ do~v¹ech vrcholù partity~$A$ a ze~v¹ech vrcholù partity~$B$ do~$t$.
150 Kapacity v¹ech hran nastavíme na jednièky:
151
152 \figure{bipartitni.eps}{Bipartitní graf a z~nìj odvozená sí» (v¹echny kapacity jsou jednièky).}{0.4\hsize}
153
154 Nyní si v¹imneme, ¾e ke~ka¾dému párování existuje celoèíselný tok stejné velikosti a naopak.
155 Tak¾e najdeme maximální celoèíselný tok (tøeba F-F algoritmem) a do~párování umístíme
156 právì hrany, po~kterých nìco teèe.
157
158 Podobnì mù¾eme najít souvislost mezi øezy v~této síti a {\I vrcholovými pokrytími}
159 zadaného grafu -- to jsou mno¾iny vrcholù takové, ¾e se dotýkají ka¾dé hrany.
160 Tak z~F-F vìty získáme:
161
162 \s{Vìta (König):} V~ka¾dém bipartitním grafu je velikost maximálního párování
163 rovna velikosti minimálního vrcholového pokrytí.
164
165 \h{Øezy, separátory a $k$-souvislost}
166
167 \s{Definice:} Pro ka¾dý neorientovaný graf $G$ a libovolné jeho vrcholy $s,t$ zavedeme:
168 \itemize\ibull
169 \:{\I $st$-øez} je mno¾ina hran $F$ taková, ¾e v~grafu $G-F$ jsou
170   vrcholy $s,t$ v~rùzných komponentách souvislosti.
171 \:{\I $st$-separátor} je mno¾ina vrcholù $W$ taková, ¾e $s,t\not\in W$ a v~grafu $G-W$
172   jsou vrcholy $s,t$ v~rùzných komponentách souvislosti.
173 \:{\I Øez} je mno¾ina hran, která je $xy$-øezem pro nìjakou dvojici vrcholù $x,y$.
174 \:{\I Separátor} je mno¾ina vrcholù, která je $xy$-separátorem pro nìjakou dvojici vrcholù $x,y$.
175 \:$G$ je {\I hranovì $k$-souvislý,} pokud $\vert V\vert > k$ a v¹echny øezy v~$G$
176   mají alespoò~$k$ hran.
177 \:$G$ je {\I vrcholovì $k$-souvislý,} pokud $\vert V\vert > k$ a v¹echny separátory v~$G$
178   mají alespoò~$k$ vrcholù.
179 \endlist
180
181 V¹imnìte si, ¾e nesouvislý graf má øez i separátor velikosti~0, tak¾e vrcholová i hranová 1-souvislost
182 splývají s~obyèejnou souvislostí pro v¹echny grafy o~alespoò dvou vrcholech. Hranovì 2-souvislé
183 jsou právì (netriviální) grafy bez {\I mostù,} vrcholovì 2-souvislé jsou ty bez {\I artikulací.}
184
185 Pro orientované grafy mù¾eme $st$-øezy a $st$-separátory definovat analogicky
186 (toti¾, ¾e po~odstranìní pøíslu¹né mno¾iny hran èi vrcholù neexistuje orientovaná
187 cesta z~$s$ do~$t$), globální øezy a separátory ani vícenásobná souvislost se obvykle
188 nedefinují.
189
190 \s{Poznámka:} Minimální orientované $st$-øezy podle této definice a minimální tokové øezy
191 podle definice ze~zaèátku kapitoly splývají: ka¾dý tokový øez~$C$ odpovídá $st$-øezu stejné
192 velikosti tvoøenému hranami v~$C^-$; naopak pro~minimální $st$-øez musí být mno¾ina
193 vrcholù dosa¾itelných z~$s$ po~odebrání øezu z~grafu tokovým øezem, opìt stejné velikosti.
194 [Velikost mìøíme souètem kapacit hran.] Dává tedy rozumný smysl øíkat obojímu stejnì.
195 Podobnì se chovají i neorientované grafy, pokud do~\uv{tokového} øezu poèítáme
196 hrany v~obou smìrech.
197
198 Analogií tokù je pak existence nìjakého poètu disjunktních cest (vrcholovì nebo hranovì)
199 mezi vrcholy~$s$ a~$t$. Analogií F-F~vìty pak budou známé Mengerovy vìty:
200
201 \s{Vìta (Mengerova, lokální hranová orientovaná):}
202 Buï $G$ orientovaný graf a $s,t$ nìjaké jeho vrcholy. Pak je velikost minimálního
203 $st$-øezu rovna maximálnímu poètu hranovì disjunktních $st$-cest.\foot{orientovaných
204 cest z~$s$ do~$t$}
205
206 \s{Dùkaz:} Z~grafu sestrojíme sí» tak, ¾e $s$~bude zdroj, $t$~spotøebiè a v¹em
207 hranám nastavíme kapacitu na~jednotku. Øezy v~této síti odpovídají øezùm v~pùvodním
208 grafu. Podobnì ka¾dý systém hranovì disjunktních $st$-cest odpovídá toku stejné
209 velikosti a naopak ke~ka¾dému celoèíselnému toku dovedeme najít systém disjunktních
210 cest (hladovì tok rozkládáme na~cesty a prùbì¾nì odstraòujeme cirkulace, které
211 objevíme). Pak pou¾ijeme F-F vìtu.
212 \qed
213
214 \s{Vìta (Mengerova, lokální vrcholová orientovaná):}
215 Buï $G$ orientovaný graf a $s,t$ nìjaké jeho vrcholy takové, ¾e $st\not\in E$.
216 Pak je velikost minimálního $st$-separátoru rovna maximálnímu poètu vrcholovì
217 disjunktních $st$-cest.\foot{Tím myslíme cesty disjunktní a¾ na~krajní vrcholy.}
218
219 \s{Dùkaz:} Podobnì jako v~dùkazu pøedchozí vìty zkonstruujeme vhodnou sí».
220 Tentokrát ov¹em rozdìlíme ka¾dý vrchol na~vrcholy $v^+$ a $v^-$, v¹echny hrany, které
221 pùvodnì vedly do~$v$, pøepojíme do~$v^+$, hrany vedoucí z~$v$ povedou z~$v^-$
222 a pøidáme novou hranu z~$v^+$ do~$v^-$. V¹echny hrany budou mít jednotkové kapacity.
223 Toky nyní odpovídají vrcholovì disjunktním cestám, øezy v~síti separátorùm.
224 \qed
225
226 %\figure{vrchol.eps}{Vrchol který chceme podrozdìlit.}{0.1\hsize}
227 %\figure{podrozdeleni.eps}{Výsledek podrozdìlení vrcholu.}{0.15\hsize}
228
229 Podobnì dostaneme neorientované lokální vìty (neorientovanou hranu nahradíme
230 orientovanými v~obou smìrech) a z~nich pak i globální varianty popisující
231 $k$-souvislost grafù:
232
233 \s{Vìta (Mengerova, globální hranová neorientovaná):}
234 Neorientovaný graf~$G$ je hranovì $k$-souvislý právì tehdy, kdy¾ mezi ka¾dými
235 dvìma vrcholy existuje alespoò~$k$ hranovì disjunktních cest.
236
237 \s{Vìta (Mengerova, globální vrcholová neorientovaná):}
238 Neorientovaný graf~$G$ je vrcholovì $k$-souvislý právì tehdy, kdy¾ mezi ka¾dými dvìma
239 vrcholy existuje alespoò~$k$ vrcholovì disjunktních cest.
240
241 \bye