]> mj.ucw.cz Git - ads2.git/blob - 4-goldberg/4-goldberg.tex
Goldberg: Prepis
[ads2.git] / 4-goldberg / 4-goldberg.tex
1 \input lecnotes.tex
2
3 \prednaska{4}{Goldbergùv algoritmus}{}
4
5 Pøedstavíme si je¹tì jeden algoritmus pro~hledání maximálního toku v~síti,
6 který bude daleko jednodu¹¹í ne¾ Dinicùv algoritmus z~pøedchozí pøedná¹ky
7 a po pár snadných úpravách bude mít stejnou nebo dokonce lep¹í èasovou
8 slo¾itost. Jednoduchost algoritmu bude ale vykoupena trochu slo¾itìj¹ím
9 rozborem jeho správnosti a efektivity.
10
11 \h{Vlny a pøebytky}
12
13 \s{Znaèení} z~minulých pøedná¹ek, které se nám bude hodit:
14
15 \itemize\ibull
16 \:{\I sí»} $S=(V,E,z,s,c)$: $V$ je mno¾ina vrcholù, $E$ mno¾ina hran,
17 $z$~{\I zdroj,} $s$~{\I spotøebiè} a $c$~funkce udávající {\I kapacity} hran.
18 \:$n$ udává poèet vrcholù grafu, $m$~poèet jeho hran.
19 \:$f^\Delta(v)$ je {\I pøebytek} vrcholu~$v$ pøi ohodnocení hran funkcí~$f$,
20 tedy souèet hodnot~$f$ na hranách vedoucích do~$v$ minus souèet na hranách
21 vedoucích z~$v$ ven.
22 \:$r(uv) = c(uv) - f(uv) + f(vu)$ je {\I rezerva} hrany~$uv$; ta øíká, kolik
23 jednotek toku mù¾eme po této hranì je¹tì poslat, a~to buï pøiètením po smìru
24 hrany nebo odeètením proti smìru. Hranám s~kladnou rezervou øíkáme {\I nenasycené,}
25 stejnì øíkáme cestám slo¾eným ze~samých takových hran.
26 \endlist
27
28 Pøedchozí algoritmy zaèínaly s~nulovým tokem a postupnì ho zlep¹ovaly,
29 a¾ se stal maximálním. Goldbergùv algoritmus naproti tomu zaène s~ohodnocením
30 hran, které ani nemusí být tokem, a~postupnì ho upravuje a zmen¹uje, a¾ se
31 z~nìj stane tok, a~to dokonce maximální.
32
33 \s{Definice:} Funkce $f:E \rightarrow {\bb R}_0^+$ je {\I vlna} v~síti~$S$,
34 splòuje-li následující dvì podmínky:
35
36 \itemize\ibull
37 \:$\forall e \in E : f(e) \leq c(e)$ (vlna nepøekroèí kapacity hran),
38 \:$\forall v \in V \setminus \{z, s\} : f^\Delta(v) \geq 0$ (pøebytek ve~vrcholech je nezáporný).
39 \endlist
40
41 Ka¾dý tok je tedy vlnou, ale opaènì tomu tak být nemusí -- potøebujeme se
42 postupnì zbavit nenulových pøebytkù ve~v¹ech vrcholech kromì zdroje a spotøebièe.
43 K~tomu nám bude slou¾it následující operace:
44
45 \s{Definice:} {\I Pøevedení pøebytku} po hranì~$uv$, pøièem¾ $f^\Delta(u)>0$ a $r(uv)>0$,
46 provedeme tak, ¾e po hranì~$uv$ po¹leme $\delta = \min(f^\Delta(u), r(uv))$ jednotek toku,
47 podobnì jako v~pøedchozích algoritmech buï pøiètením po smìru nebo odeètením proti smìru.
48
49 \s{Pozorování:} Pøevedení zmìní pøebytky a rezervy následovnì:
50
51 $$\eqalign{
52 f'^\Delta(u) &= f^\Delta(u) - \delta \cr
53 f'^\Delta(v) &= f^\Delta(v) + \delta \cr
54 r'(uv) &= r(uv) - \delta \cr
55 r'(vu) &= r(vu) + \delta \cr
56 }$$
57
58 Rádi bychom postupným pøevádìním v¹echny pøebytky buï pøepravili do spotøebièe
59 nebo, pokud je vlna pøíli¹ velká, je pøelili zpìt do zdroje. Chceme se ov¹em vyhnout
60 pøelévání pøebytkù tam a zase zpìt, tak¾e vrcholùm pøiøadíme {\I vý¹ky} -- to budou
61 nìjaká pøirozená èísla.
62
63 Pøebytek pak budeme ochotni pøevádìt pouze z~vy¹¹ího vrcholu do~ni¾¹ího. Pokud se
64 stane, ¾e nalezneme vrchol s~pøebytkem, ze kterého nevede ¾ádná nenasycená hrana
65 smìrem dolù, budeme tento vrchol {\I zvedat} -- tedy zvy¹ovat mu vý¹ku po jedné,
66 ne¾ se dostane dostateènì vysoko, aby z~nìj pøebytek mohl odtéci.
67
68 Získáme tak následující algoritmus:
69
70 \s{Algoritmus (Goldbergùv):}
71
72 \algo
73 \:Nastavíme poèáteèní vý¹ky (zdroj ve~vý¹ce~$n$, ostatní ve~vý¹ce~0):
74 \::$h(z)\leftarrow n$
75 \::$h(v)\leftarrow 0$ pro v¹echny $v\ne z$
76 \:Vytvoøíme poèáteèní vlnu (v¹echny hrany ze~$z$ na maximum, jinde~0):
77 \::$f\leftarrow \hbox{v¹ude nulová funkce}$
78 \::$f(zv)\leftarrow c(zv)$, kdykoliv $zv\in E$
79 \:Dokud $\exists u \in V \setminus \{z,s\}: f^{\Delta}(u)>0$:
80 \::Pokud $\exists v \in V: uv \in E,~r(uv)>0$ a~$h(u)>h(v)$, \hfil\break {\I pøevedeme pøebytek} po~hranì~$uv$.
81 \::V~opaèném pøípadì {\I zvedneme} $u$:~$h(u) \leftarrow h(u) + 1$.
82 \:Vrátíme tok~$f$ jako výsledek.
83 \endalgo
84
85 \h{Analýza algoritmu}
86
87 Algoritmus je jednoduchý, ale na první pohled není vidìt ani to, ¾e se v¾dy
88 zastaví, nato¾ ¾e by mìl vydat maximální tok. Postupnì o~nìm doká¾eme nìkolik
89 invariantù a lemmat a postupnì se dobereme k~dùkazu správnosti a èasové slo¾itosti.
90
91 \s{Invariant A (základní):}
92 \numlist \ndotted
93 \:Funkce~$f$ je v~ka¾dém kroku algoritmu vlna.
94 \:Vý¹ka $h(v)$ ¾ádného vrcholu~$v$ nikdy neklesá.
95 \:$h(z)=n$ a~$h(s)=0$ po~celou dobu bìhu algoritmu.
96 \endlist
97
98 \proof Indukcí dle poètu prùchodù cyklem (7. -- 9. krok algoritmu):
99
100 \itemize\ibull
101 \:Po inicializaci algoritmu je v¹e v~poøádku: pøebytky v¹ech vrcholù mimo zdroj
102 jsou nezáporné, vý¹ky souhlasí.
103 \:Pøi pøevedení pøebytku: Z~definice pøevedení pøímo plyne, ¾e neporu¹uje
104 kapacity a nevytváøí záporné pøebytky. Vý¹ky se nemìní.
105 \:Pøi zvednutí vrcholu: Tehdy se naopak mìní jen vý¹ky, ale pouze u~vrcholù rùzných
106 od~zdroje a stoku. Vý¹ky navíc pouze rostou.
107 \qeditem
108 \endlist
109
110 \s{Invariant S (o~Spádu):} Neexistuje hrana $uv \in E: r(uv)>0$ \& $h(u)
111 > h(v)+1$ (nenasycená hrana se~spádem vìt¹ím ne¾ jedna).
112
113 \proof Indukcí dle bìhu algoritmu.
114 Na zaèátku mají v¹echny hrany ze~zdroje rezervu nulovou a~v¹echny ostatní vedou
115 mezi vrcholy s~vý¹kou 0. V~prùbìhu výpoètu by se~tento invariant mohl pokazit pouze
116 dvìma zpùsoby:
117
118 \itemize\ibull
119 \:Zvednutím vrcholu~$u$, ze~kterého vede hrana~$uv$ s~kladnou rezervou
120 a~spádem 1. Tento pøípad nemù¾e nastat, nebo» hranu zvedáme pouze
121 tehdy, kdy¾ neexistuje vrchol~$v$ takový, ¾e hrana~$uv$ má kladnou
122 rezervu a~spád alespoò 1. Takový vrchol v~na¹em pøípadì existuje, proto
123 se~místo zvednutí vrcholu~$u$ po¹le pøebytek po~hranì~$uv$.
124 \:Zvìt¹ením rezervy hrany se~spádem vìt¹ím ne¾ 1. Toto také nemù¾e
125 nastat, nebo» rezervu bychom mohli zvìt¹it jedinì tak, ¾e bychom
126 poslali nìco v~protismìru -- a~to nesmíme, jeliko¾ bychom pøevádìli
127 pøebytek z~ni¾¹ího vrcholu na~vy¹¹í.
128 \qeditem
129 \endlist
130
131 \s{Lemma K (o~Korektnosti):} Kdy¾ se~algoritmus zastaví, je~$f$ maximální tok.
132
133 \proof 
134 Nejprve uká¾eme, ¾e {\I $f$ je tok:} Omezení na kapacity splòuje tok stejnì
135 jako vlna, tak¾e postaèí dokázat, ¾e platí Kirchhoffùv zákon. Ten po¾aduje,
136 aby pøebytky ve~v¹ech vrcholech kromì zdroje a spotøebièe byly nulové. To ov¹em
137 musí být, proto¾e nenulový pøebytek by musel být kladný a algoritmus by se dosud
138 nezastavil.
139
140 Zbývá zdùvodnit, ¾e {\I $f$ je maximální:} Pro spor pøedpokládejme, ¾e tomu tak není.
141 Ze~správnosti Fordova-Fulkersonova algoritmu plyne, ¾e tehdy musí existovat nenasycená
142 cesta ze~zdroje do~stoku. Uva¾me libovolnou takovou cestu. Zdroj je stále ve~vý¹ce~$n$
143 a~spotøebiè ve~vý¹ce 0 (viz invariant A). Tato cesta tedy pøekonává spád~$n$,
144 ale mù¾e mít nejvý¹e~$n-1$ hran. Proto se v~ní nachází alespoò jedna hrana se~spádem
145 alespoò~2. Jeliko¾ je tato hrana souèástí nenasycené cesty, musí být sama nenasycená,
146 co¾ je spor s~invariantem~S. Tok je tedy maximální.
147 \qed
148         
149 \s{Lemma C (Cesta do zdroje):} Mìjme vrchol~$v$, jeho¾ pøebytek $f^{\Delta}(v)$ je kladný.
150 Pak existuje nenasycená cesta z~vrcholu~$v$ do~zdroje.
151
152 \proof
153 Buï~$v$ vrchol s~kladným pøebytkem.
154 Uva¾me mno¾inu $A := \{ u \in V \mid \hbox{existuje nenasycená cesta z~$v$ do~$u$} \}$.
155 Uká¾eme, ¾e tato mno¾ína obsahuje zdroj.
156
157 Pou¾ijeme u¾ mírnì okoukaný dùkazový trik: seèteme pøebytky ve~v¹ech vrcholech mno¾iny~$A$.
158 V¹echny hrany le¾ící celé uvnitø~$A$ nebo celé venku pøispìjí dohromady nulou.
159 Nenulou mohou pøispìt pouze hrany vedoucí ven z~$A$ nebo naopak zvenku dovnitø.
160 Získáme:
161 $$
162         \sum_{u \in A}f^{\Delta}(u) =
163         \underbrace{ \sum_{ba \in E(V\setminus A,A)} f(ba) }\limits_{=0} -
164         \underbrace{ \sum_{ab \in E(A,V\setminus A)} f(ab) }\limits_{\geq 0}
165         \leq~0.
166 $$
167
168 Uka¾me si, proè je první svorka rovna nule. Mìjme hranu~$ab$ ($a\in A$, $b \in V \setminus A$).
169 Ta musí mít nulovou rezervu -- jinak by toti¾ i vrchol~$b$ patøil do~$a$.
170 Proto po hranì $ba$ nemù¾e nic téci.
171
172 \figure{Goldberg01.eps}{Obrázek k dùkazu lemmatu C}{0.2\hsize}
173
174 Druhá svorka je evidentnì nezáporná, proto¾e je to souèet nezáporných ohodnocení hran.
175
176 Proto $\sum_{u \in A}{f^\Delta(u) \le 0}$. Zároveò v¹ak v~$A$ je aspoò jeden
177 vrchol s~kladným pøebytkem, toti¾~$v$, proto v~$A$ musí být také nìjaký vrchol
178 se~záporným pøebytkem -- a~jediný takový je zdroj. Tím je dokázáno, ¾e $z$ le¾í v~$A$,
179 tedy ¾e vede nenasycená cesta z~vrcholu~$v$ do~zdroje.
180 \qed
181
182 \s{Invariant V (Vý¹ka):} Pro ka¾dý vrchol~$v$ je $h(v)\leq 2n$.
183
184 \proof
185 Kdyby existoval vrchol~$v$ s~vý¹kou $h(v) > 2n$, mohl se do této vý¹ky
186 dostat pouze zvednutím z~vý¹ky alespoò~$2n$. Tehdy musel mít kladný pøebytek $f^\Delta(v)>0$
187 (jinak by nemohl být zvednut). Dle lemmatu C musela existovat nenasycená cesta z~$v$ do~zdroje.
188 Tato cesta nicménì pøekonávala spád alespoò~$n$, ale mohla mít nejvý¹e~\hbox{$n-1$} hran (na cestách
189 se vrcholy neopakují). Tudí¾ musela obsahovat nenasycenou hranu se~spádem alespoò~2, co¾ je
190 spor s~invariantem~S.
191 \qed
192
193 \s{Lemma Z (poèet Zvednutí):} Bìhem výpoètu nastane nejvý¹e $2n^{2}$ zvednutí.
194
195 \proof
196 Z~pøedchozího invariantu plyne, ¾e ka¾dý vrchol mohl být zvednut nejvý¹e $2n$-krát.
197 Vrcholù je~$n$.
198 \qed
199
200 Teï nám je¹tì zbývá urèit poèet provedených pøevedení. Bude se~nám hodit, kdy¾ pøevedení rozdìlíme na~dva druhy:
201
202 \s{Definice:} Øekneme, ¾e pøevedení po hranì~$uv$ je {\I nasycené}, pokud po~pøevodu
203 rezerva $r(uv)$ klesla na~nulu. V~opaèném pøípadì je {\I nenasycené}, a~tehdy urèitì
204 klesne pøebytek $f^\Delta(u)$ na~nulu (to se nicménì mù¾e stát i pøi nasyceném pøevedení).
205
206 \s{Lemma S (naSycená pøevedení):} Poèet v¹ech nasycených pøevedení je nejvý¹~$nm$.
207
208 \proof
209 Pro ka¾dou hranu~$uv$ spoèítejme poèet nasycených pøevedení (tedy takových
210 pøevedení, ¾e po~nich klesne rezerva hrany na~nulu). Abychom dvakrát nasycenì
211 pøevedli pøebytek (nebo jeho èást) z~vrcholu~$u$ do~vrcholu~$v$, tak jsme
212 museli~$u$ mezitím alespoò dvakrát zvednout:
213
214 Po~prvním nasyceném pøevedení z~vrcholu~$u$ do~vrcholu~$v$ se~vynulovala
215 rezerva hrany~$uv$. Uvìdomme si, ¾e pøi~této operaci muselo být~$u$ vý¹e
216 ne¾~$v$, a~dokonce víme, ¾e bylo vý¹e pøesnì o~1 (viz invariant~S). Ne¾ nastane
217 dal¹í pøevedení po~této hranì, musíme její rezervu z~nuly opìt zvý¹it.
218 Jediný zpùsob, jak toho lze dosáhnout, je pøevést èást pøebytku z~$v$ zpátky do~$u$.
219 K~tomu se~musí~$v$ dostat (alespoò o~1) vý¹e ne¾~$u$. Po~pøelití bude rezerva~$uv$
220 opìt kladná. A~abychom provedli nasycené pøevedení znovu ve~smìru z~$u$ do~$v$,
221 musíme zase~$u$ dostat (alespoò o~1) vý¹e ne¾~$v$. Proto musíme~$u$ alespoò o~2
222 zvednout -- nejprve na~úroveò~$v$ a~pak je¹tì o~1 vý¹e.
223
224 Ukázali jsme tedy, ¾e mezi ka¾dými dvìma nasycenými pøevedeními musel být vrchol~$u$
225 zvednut alespoò dvakrát. Podle lemmatu~V se to mohlo stát maximálnì $2n$-krát za celý
226 výpoèet, tak¾e v¹ech nasycených pøevedení po~hranì~$uv$ je nejvý¹e~$n$ a po~v¹ech hranách
227 dohromady nejvý¹e~$nm$.
228 \qed
229
230 \s{Lemma N (Nenasycená pøevedení):} Poèet v¹ech nenasycených pøevedení je~$\O(n^2m)$.
231
232 \proof
233 Dùkaz provedeme potenciálovou metodou. Uva¾ujme následující potenciál:
234 $$ \Phi := \sum_{\scriptstyle{v \ne z,s} \atop \scriptstyle{f^{\Delta}(v) > 0}} h(v). $$
235 Nyní se~podívejme, jak se~ná¹ potenciál bìhem algoritmu vyvíjí:
236
237         \itemize\ibull
238         \:Na poèátku je $ \Phi = 0 $.
239         \:Bìhem celého algoritmu je $ \Phi \ge 0 $, nebo» potenciál je souètem nezáporných èlenù.
240         \:Zvednutí vrcholu zvý¹í $\Phi$ o~jednièku. (Aby byl vrchol zvednut, musel mít kladný
241         pøebytek, tak¾e vrchol do~sumy ji¾ pøispíval. Teï jen pøispìje èíslem o~1 vy¹¹ím.)
242         Ji¾ víme, ¾e za~celý prùbìh algoritmu je v¹ech zvednutí maximálnì~$2n^2$, proto
243         zvedáním vrcholù zvý¹íme potenciál dohromady nejvý¹e o~$2n^2$.
244         \:Nasycené pøevedení zvý¹í~$\Phi$ nejvý¹e o~$2n$, proto¾e buï po~pøevodu hranou~$uv$
245         v~$u$ zùstal nìjaký pøebytek, tak¾e se~mohl potenciál zvý¹it nejvý¹e o~$h(v) \leq 2n$,
246         nebo je pøebytek v~$u$ po~pøevodu nulový a~potenciál se~dokonce o~jedna sní¾il.
247         Podle lemmatu~S nastane nejvý¹e~$nm$ takových nasycených pøevedení a ta celkovì
248         potenciál zvý¹í maximálnì o~$2n^2m$.
249         \:Koneènì kdy¾ pøevádíme po~hranì~$uv$ nenasycenì, tak od~potenciálu
250         urèitì odeèteme vý¹ku vrcholu~$u$ (nebo» se~vynuluje pøebytek
251         ve~vrcholu~$u$) a~mo¾ná pøièteme vý¹ku vrcholu~$v$. Jen¾e $h(v) = h(u)
252         - 1$, a~proto nenasycené pøevedení potenciál v¾dy sní¾í alespoò o~jedna.
253         \endlist
254
255 \>Potenciál celkovì stoupne o~nejvy¹e $2n^2 + 2n^2m = \O(n^2m)$, klesá pouze pøi nenasycených
256 pøevedeních a poka¾dé alespoò o~1. Proto je v¹ech nenasycených pøevedení $\O(n^2m)$.
257 \qed
258
259 \h{Implementace}
260
261 Zbývá vyøe¹it, jak sí» a vý¹ky reprezentovat, abychom dokázali rychle hledat
262 vrcholy s~pøebytkem a nenasycené hrany vedoucí s~kopce.
263
264 Budeme si~pamatovat seznam~$P$ v¹ech vrcholù s~kladným pøebytkem. Neboli
265 $$P = \{ v \in V \setminus \{z,s\} ~\vert~ f^{\Delta}(v) > 0 \}.$$
266 Kdy¾ mìníme pøebytek nìjakého vrcholu, mù¾eme tento seznam v~konstantním èase
267 aktualizovat -- buïto vrchol do seznamu pøidat nebo ho naopak odebrat. (K~tomu se
268 hodí, aby si vrcholy pamatovaly ukazatel na svou polohu v~seznamu~$P$).
269 V~konstantním èase také umíme odpovìdìt, zda existuje nìjaký vrchol s~pøebytkem.
270
271 Dále si pro ka¾dý vrchol $u \in V$ budeme pamatovat seznam~$L(u)$. Ten bude
272 obsahovat v¹echny nenasycené hrany, které vedou z~$u$ dolù (mají spád alespoò 1).
273 Opìt pøi zmìnách rezerv mù¾eme tyto seznamy v~konstantním èase aktualizovat.
274
275 Jednotlivé operace budou mít tyto slo¾itosti:
276
277 \itemize\ibull
278 \:{\I Inicializace} algoritmu -- trivialnì $\O(m)$.
279 \:{\I Výbìr vrcholu} s~kladným pøebytkem a nalezení nenasycené hrany vedoucí dolù -- $\O(1)$
280   (staèí se podívat na poèátky pøíslu¹ných seznamù).
281 \:{\I Pøevedení pøebytku} po~hranì~$uv$ -- zmìny rezerv $r(uv)$ a $r(vu)$ zpùsobí pøepoèítání
282   seznamù~$L(u)$ a~$L(v)$, zmìny pøebytkù $f^\Delta(u)$ a~$f^\Delta(v)$ mohou zpùsobit
283   zmìnu v~seznamu~$P$. V¹e v~èase $\O(1)$.
284 \:{\I Zvednutí vrcholu~$u$} -- musíme obejít v¹echny hrany do~$u$ a~z~$u$, kterých je nejvý¹e~$2n$,
285   porovnat vý¹ky a~pøípadnì tyto hrany~$uv$ odebrat ze~seznamu~$L(v)$ resp. pøidat
286   do~$L(u)$. To trvá $\O(n)$.
287 \endlist
288
289 Vidíme, ¾e ka¾dé zvednutí je sice drahé, ale je jich zase pomìrnì málo. Naopak
290 pøevádìní pøebytkù je èastá operace, tak¾e je výhodné, ¾e trvá konstantní èas.
291
292 \s{Vìta:} Goldbergùv algoritmus najde maximální tok v~èase $\O(n^2m)$.
293
294 \proof
295 Inicializace algoritmu trvá $\O(m)$. Pak algoritmus provede nejvý¹e~$2n^2$ zvednutí
296 (viz lemma~Z), nejvý¹e $nm$ nasycených pøevedení (lemma~N) a nejvý¹e $n^2m$ nenasycených
297 pøevedení. Vynásobením slo¾itostmi jednotlivých operací dostaneme èas $\O(n^3 + nm + n^2m) = \O(n^2m)$.
298 Podle lemmatu~K po~zastavení vydá maximální tok.
299 \qed
300
301 \h{Vylep¹ení Goldbergova algoritmu}
302
303 Základní verze Goldbervova algoritmu tedy dosáhla stejné slo¾itosti jako Dinicùv algoritmus.
304 Nyní uká¾eme, ¾e pokud budeme volit vrchol, ze~kterého budeme pøevádìt pøebytek, ¹ikovnìji
305 -- toti¾ jako nejvy¹¹í z~vrcholù s~nenulovým pøebytkem~--, slo¾itost se je¹tì zlep¹í.
306
307 V~èasové slo¾itosti pùvodního algoritmu byl nejvýznamnìj¹í èlen $\O(n^2m)$ za~nenasycená
308 pøevedení. Pokusme se jejich poèet ve~vylep¹eném algoritmu odhadnout tìsnìji.
309
310 \s{Lemma N' (Nenasycená pøevedení):} Goldbergùv algoritmus s~volbou nejvy¹¹ího vrcholu
311 provede $\O(n^3)$ nenasycených pøevedení.
312
313 \proof
314 Dokazovat budeme opìt pomocí potenciálové metody. Nejprve definujeme {\I nejvy¹¹í hladinu s~pøebytkem}:
315 $$H := \max \{ h(v) \mid v \neq z,s ~\&~ f^\Delta(v) > 0\}.$$
316 Rozdìlíme bìh algoritmu na~{\I fáze}. Ka¾dá fáze konèí tím, ¾e~se~$H$ zmìní.
317 Jak se~mù¾e zmìnit? Buï se~$H$ zvý¹í, co¾ znamená, ¾e~nìjaký vrchol s~pøebytkem
318 v~nejvy¹¹í hladinì byl o~1 zvednut, nebo se~$H$ sní¾í. My víme, ¾e zvednutí je
319 v~celém algoritmu $\O(n^2)$. Zároveò si~mù¾eme uvìdomit, ¾e~$H$ je nezáporný
320 potenciál, kdy sní¾ení i~zvý¹ení ho zmìní o~1, tedy poèet sní¾ení bude stejný
321 jako poèet zvý¹ení, a~proto obojího je~$\O(n^2)$. Tudí¾ poèet fází je
322 také~$\O(n^2)$.
323
324 Je dùle¾ité, ¾e~bìhem jedné fáze provedeme nejvý¹e jedno nenasycené pøevedení
325 z~ka¾dého vrcholu. Po~ka¾dém nenasyceném pøevedení po~hranì $uv$ se~toti¾
326 vynuluje pøebytek v~$u$ a~aby se~provedlo dal¹í nenasycené pøevedení
327 z~vrcholu~$u$, muselo by nejdøíve být co~pøevádìt. Muselo by tedy do~$u$ nìco
328 pøitéci. My ale víme, ¾e pøevádíme pouze shora dolù a~$u$ je v~nejvy¹¹í hladinì
329 (to zajistí právì to vylep¹ení algoritmu), tedy nejdøíve by musel být nìjaký
330 jiný vrchol zvednut. Tím by se~ale zmìnilo~$H$ a~skonèila by tato fáze.
331
332 Proto poèet v¹ech nenasycených pøevedení bìhem jedné fáze je nejvý¹e~$n$. A ji¾ jsme dokázali, ¾e~fází je~$\O(n^2)$. Tedy poèet v¹ech nenasycených pøevedení je~$\O(n^3)$.
333 \qed
334
335 Tento odhad je hezký, ale stále není tìsný a~algoritmus se~chová lépe. Doka¾me si~je¹tì jeden tìsnìj¹í odhad na~poèet nenasycených pøevedení.
336
337 \s{Lemma N'' (Nenasycená pøevedení):} Poèet nenasycených pøevedení je~$\O(n^2 \sqrt{m})$.
338
339 \s{Poznámka:} Tato èasová slo¾itost je výhodná napøíklad pro~øídké grafy. Ty mají toti¾ pomìrnì malý poèet hran.
340
341 \proof
342 Rozdìlme si~fáze na~dva druhy: laciné a~drahé podle toho, kolik se~v~nich
343 provede nenasycených pøevedení. Zvolme si~nìjaké nezáporné~$k$. Zatím nebudeme
344 urèovat jeho hodnotu. Uvidíme, ¾e~èasová slo¾itost algoritmu bude závislá
345 na~tomto parametru~$k$. Proto jeho hodnotu zvolíme a¾ pozdìji a~to tak, aby
346 byla slo¾itost co nejni¾¹í.
347
348 {\I Laciné fáze} budou ty, bìhem nich¾ se~provede nejvý¹e~$k$ nenasycených
349 pøevedení. {\I Drahé fáze} budou ty ostatní, tedy takové, bìhem nich¾
350 se~provede více jak~$k$ nenasycených pøevedení.
351
352 Teï potøebujeme odhadnout, kolik nás budou stát oba typy fází. Zaènìme s~tìmi
353 jednodu¹¹ími -- s~lacinými. Víme, ¾e~v¹ech fází je~$\O(n^2)$. Tìch laciných
354 bude tedy urèitì také~$O(n^2)$. Nenasycených pøevedení se~bìhem jedné laciné
355 fáze provede nejvíce~$k$. Tedy celkem se~bìhem laciných fází provede~$\O(n^2k)$
356 nenasycených pøevedení.
357
358 Pro~poèet nenasycených pøevedení v~drahých fázích si~zaveïme nový potenciál
359 definovaný následovnì:
360 $$\Phi := \sum_{\scriptstyle{v \ne z,s} \atop \scriptstyle{f^{\Delta}(v) \ne 0}} {p(v) \over k},$$
361 kde~$p(v)$ je poèet takových vrcholù~$u$, které nejsou vý¹e ne¾~$v$. Neboli
362 $$p(v) = \vert \{ u \in V \mid h(u) \leq h(v) \} \vert.$$
363 Tedy platí, ¾e~$p(v)$ je v¾dy nezáporné a~nejvý¹e má hodnotu~$n$. Dále víme,
364 ¾e~$\Phi$ bude v¾dy nezáporné (nebo» je to souèet nezáporných èlenù) a~nejvý¹e
365 bude nabývat hodnoty~$n^2 / k$. Rozmysleme si, jak nám ovlivní tento
366 potenciál na¹e tøi operace:
367
368 \itemize\ibull
369 \:{\I Zvednutí}: Za~ka¾dý zvednutý vrchol pøibude nejvý¹e~$n / k$ (tento
370 vrchol mù¾e být nadzvednut nejvý¹e nad~v¹echny ostatní vrcholy) a~mo¾ná nìco
371 ubude (napø. kdy¾ vrchol vyzvedneme na~úroveò k~ostatním).
372 \:{\I Nasycené pøevedení} po~hranì $uv$: Mù¾e vynulovat pøebytek
373 ve~vrcholu~$u$, pak se~$\Phi$ sní¾í. Mù¾e zvý¹it pøebytek ve~$v$ z~nuly, pak
374 se~$\Phi$ zvý¹í. Ale nejvý¹e se~zvý¹í o~$n / k$, nebo» do~$\Phi$ pøibude
375 jen jeden sèítanec za~vrchol $v$ a~ten pøispìje nejvý¹e hodnotou~$n / k$
376 (pod ním mù¾e být nejvíce~$n$ vrcholù).
377 \:{\I Nenasycená pøevedení} po~hranì $uv$ v~drahých fázích: Tato operace
378 vynuluje pøebytek v~$u$, tedy~$\Phi$ klesne alespoò o~$p(u) / k$. Zároveò
379 mù¾e zvý¹it pøebytek ve~$v$ z~nuly, ale~$\Phi$ stoupne nejvý¹e o~$p(v) / k$.
380 Celkem tedy~$\Phi$ klesne alespoò o~$p(u) - p(v) / k$.
381 \endlist
382
383 Uvìdomme si, ¾e~pokud pøevádíme po~hranì~$uv$, tak platí, ¾e~$h(u) = h(v) + 1$.
384 Pak~$p(u) - p(v)$ je pøesnì poèet vrcholù na~hladinì~$H$. Tìch je alespoò
385 tolik, kolik je nenasycených pøevedení bìhem jedné fáze (to jsme dokázali ji¾
386 v~lemmatu N'), a~my jsme si~nadefinovali, ¾e v~drahé fázi je poèet nenasycených
387 pøevedení alespoò~$k$. Tedy~$p(u) - p(v) > k$. Proto bìhem jednoho nenasyceného
388 pøevedení~$\Phi$ klesne alespoò o~${k / k} = 1$. Nenasycená pøevedení
389 potenciál nezvy¹ují.
390
391 Potenciál~$\Phi$ se~mù¾e zvìt¹it pouze pøi~operacích zvednutí a~nasycené
392 pøevedení. Zvednutí se~provede celkem~$\O(n^2)$ a~ka¾dé zvý¹í potenciál nejvý¹e
393 o~$n / k$. Nasycených pøevedení se provede celkem~$\O(nm)$ a~ka¾dé zvý¹í
394 potenciál takté¾ nejvý¹e o~$n / k$. Celkem se~tedy~$\Phi$ zvý¹í nejvý¹e
395 o $${n \over k} \cdot \O(n^2) + {n \over k} \cdot \O(nm) = \O \left({n^3 \over k} + {n^2m
396 \over k}\right).$$
397
398 Teï vyu¾ijeme toho, ¾e~$\Phi$ je nezáporný potenciál, tedy kdy¾ ka¾dé
399 nenasycené pøevdení v~drahé fázi sní¾í~$\Phi$ alespoò o~1, tak v¹ech
400 nenasycených pøevdení v~drahých fázích je~$\O({n^3 / k} + {n^2m / k})$.
401 U¾ jsme ukázali, ¾e~nenasycených pøevední v~laciných fázích je~$\O(n^2k)$.
402 Proto celkem v¹ech nenasycených pøevedení je $$\O \left(n^2k + {n^3 \over k}
403 + {n^2m \over k} \right) = \O \left(n^2k + {n^2m \over k} \right)$$ (nebo»
404 pro~souvislé grafy platí, ¾e~$m \geq n \Rightarrow n^2m \geq n^3$). A~my
405 chceme, aby jich bylo co nejménì. Tato funkce má minimum tehdy, kdy¾ $n^2k
406 = {n^2m \over k}$, èili $k = \sqrt{m}$.
407
408 Proto v¹ech nenasycených pøevedení je $\O(n^2\sqrt{m})$.
409 \qed
410 \bye