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