]> mj.ucw.cz Git - ads2.git/commitdiff
Goldberg: korektury, cviceni, prepis dukazu Lemmatu N''
authorMartin Mares <mj@ucw.cz>
Thu, 26 Jan 2012 22:36:30 +0000 (23:36 +0100)
committerMartin Mares <mj@ucw.cz>
Thu, 26 Jan 2012 22:36:30 +0000 (23:36 +0100)
4-goldberg/4-goldberg.tex

index 4326605cf850a1a185d2ef886a44e02e870acf3d..c7cffd2f2677fe835dc84e5e451b648561509ab5 100644 (file)
@@ -2,15 +2,15 @@
 
 \prednaska{4}{Goldbergùv algoritmus}{}
 
-Pøedstavíme si je¹tì jeden algoritmus pro~hledání maximálního toku v~síti,
-který bude daleko jednodu¹¹í ne¾ Dinicùv algoritmus z~pøedchozí pøedná¹ky
+Pøedstavíme si je¹tì jeden algoritmus pro~hledání maximálního toku v~síti.
+Bude daleko jednodu¹¹í ne¾ Dinicùv algoritmus z~pøedchozí kapitoly
 a po pár snadných úpravách bude mít stejnou nebo dokonce lep¹í èasovou
 slo¾itost. Jednoduchost algoritmu bude ale vykoupena trochu slo¾itìj¹ím
 rozborem jeho správnosti a efektivity.
 
 \h{Vlny a pøebytky}
 
-\s{Znaèení} z~minulých pøedná¹ek, které se nám bude hodit:
+\s{Znaèení} z~minulých kapitol, které se nám bude hodit:
 
 \itemize\ibull
 \:{\I sí»} $S=(V,E,z,s,c)$: $V$ je mno¾ina vrcholù, $E$ mno¾ina hran,
@@ -31,7 +31,7 @@ hran, kter
 z~nìj stane tok, a~to dokonce maximální.
 
 \s{Definice:} Funkce $f:E \rightarrow {\bb R}_0^+$ je {\I vlna} v~síti~$S$,
-splòuje-li následující dvì podmínky:
+splòuje-li obì následující podmínky:
 
 \itemize\ibull
 \:$\forall e \in E : f(e) \leq c(e)$ (vlna nepøekroèí kapacity hran),
@@ -58,7 +58,7 @@ r'(vu) &= r(vu) + \delta \cr
 Rádi bychom postupným pøevádìním v¹echny pøebytky buï pøepravili do spotøebièe
 nebo, pokud je vlna pøíli¹ velká, je pøelili zpìt do zdroje. Chceme se ov¹em vyhnout
 pøelévání pøebytkù tam a zase zpìt, tak¾e vrcholùm pøiøadíme {\I vý¹ky} -- to budou
-nìjaká pøirozená èísla.
+nìjaká pøirozená èísla $h(v)$.
 
 Pøebytek pak budeme ochotni pøevádìt pouze z~vy¹¹ího vrcholu do~ni¾¹ího. Pokud se
 stane, ¾e nalezneme vrchol s~pøebytkem, ze kterého nevede ¾ádná nenasycená hrana
@@ -68,23 +68,24 @@ ne
 Získáme tak následující algoritmus:
 
 \algo{Goldberg}
-\:Nastavíme poèáteèní vý¹ky (zdroj ve~vý¹ce~$n$, ostatní ve~vý¹ce~0):
+\algin Sí».
+\:Nastavíme poèáteèní vý¹ky: \cmt{zdroj ve~vý¹ce~$n$, ostatní ve~vý¹ce~0}
 \::$h(z)\leftarrow n$
 \::$h(v)\leftarrow 0$ pro v¹echny $v\ne z$
-\:Vytvoøíme poèáteèní vlnu (v¹echny hrany ze~$z$ na maximum, jinde~0):
+\:Vytvoøíme poèáteèní vlnu: \cmt{v¹echny hrany ze~$z$ na maximum, jinde~0}
 \::$f\leftarrow \hbox{v¹ude nulová funkce}$
 \::$f(zv)\leftarrow c(zv)$, kdykoliv $zv\in E$
 \:Dokud $\exists u \in V \setminus \{z,s\}: f^{\Delta}(u)>0$:
 \::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$.
 \::V~opaèném pøípadì {\I zvedneme} $u$:~$h(u) \leftarrow h(u) + 1$.
-\:Vrátíme tok~$f$ jako výsledek.
+\algout Maximální tok~$f$.
 \endalgo
 
 \h{Analýza algoritmu}
 
 Algoritmus je jednoduchý, ale na první pohled není vidìt ani to, ¾e se v¾dy
 zastaví, nato¾ ¾e by mìl vydat maximální tok. Postupnì o~nìm doká¾eme nìkolik
-invariantù a lemmat a postupnì se dobereme k~dùkazu správnosti a èasové slo¾itosti.
+invariantù a lemmat a pomocí nich se dobereme k~dùkazu správnosti a èasové slo¾itosti.
 
 \s{Invariant A (základní):}
 \numlist \ndotted
@@ -105,8 +106,8 @@ od~zdroje a stoku. V
 \qeditem
 \endlist
 
-\s{Invariant S (o~Spádu):} Neexistuje hrana $uv \in E: r(uv)>0$ \& $h(u)
-> h(v)+1$ (nenasycená hrana se~spádem vìt¹ím ne¾ jedna).
+\s{Invariant S (o~Spádu):} Neexistuje hrana~$uv$, která by mìla kladnou rezervu
+a spád $h(u) - h(v)$ vìt¹í ne¾~1.
 
 \proof Indukcí dle bìhu algoritmu.
 Na zaèátku mají v¹echny hrany ze~zdroje rezervu nulovou a~v¹echny ostatní vedou
@@ -115,14 +116,12 @@ dv
 
 \itemize\ibull
 \:Zvednutím vrcholu~$u$, ze~kterého vede hrana~$uv$ s~kladnou rezervou
-a~spádem 1. Tento pøípad nemù¾e nastat, nebo» hranu zvedáme pouze
-tehdy, kdy¾ neexistuje vrchol~$v$ takový, ¾e hrana~$uv$ má kladnou
-rezervu a~spád alespoò 1. Takový vrchol v~na¹em pøípadì existuje, proto
-se~místo zvednutí vrcholu~$u$ po¹le pøebytek po~hranì~$uv$.
+a~spádem 1. Tento pøípad nemù¾e nastat, nebo» algoritmus by dal pøednost
+pøevedení pøebytku po~této hranì pøed zvednutím.
 \:Zvìt¹ením rezervy hrany se~spádem vìt¹ím ne¾ 1. Toto také nemù¾e
 nastat, nebo» rezervu bychom mohli zvìt¹it jedinì tak, ¾e bychom
 poslali nìco v~protismìru -- a~to nesmíme, jeliko¾ bychom pøevádìli
-pøebytek z~ni¾¹ího vrcholu na~vy¹¹í.
+pøebytek z~ni¾¹ího vrcholu do~vy¹¹ího.
 \qeditem
 \endlist
 
@@ -145,14 +144,14 @@ co
 \qed
        
 \s{Lemma C (Cesta do zdroje):} Mìjme vrchol~$v$, jeho¾ pøebytek $f^{\Delta}(v)$ je kladný.
-Pak existuje nenasycená cesta z~vrcholu~$v$ do~zdroje.
+Pak existuje nenasycená cesta z~tohoto vrcholu do~zdroje.
 
 \proof
 Buï~$v$ vrchol s~kladným pøebytkem.
 Uva¾me mno¾inu $A := \{ u \in V \mid \hbox{existuje nenasycená cesta z~$v$ do~$u$} \}$.
 Uká¾eme, ¾e tato mno¾ína obsahuje zdroj.
 
-Pou¾ijeme u¾ mírnì okoukaný dùkazový trik: seèteme pøebytky ve~v¹ech vrcholech mno¾iny~$A$.
+Pou¾ijeme u¾ mírnì okoukaný trik: seèteme pøebytky ve~v¹ech vrcholech mno¾iny~$A$.
 V¹echny hrany le¾ící celé uvnitø~$A$ nebo celé venku pøispìjí dohromady nulou.
 Nenulou mohou pøispìt pouze hrany vedoucí ven z~$A$ nebo naopak zvenku dovnitø.
 Získáme:
@@ -164,15 +163,15 @@ $$
 $$
 
 Uka¾me si, proè je první svorka rovna nule. Mìjme hranu~$ab$ ($a\in A$, $b \in V \setminus A$).
-Ta musí mít nulovou rezervu -- jinak by toti¾ i vrchol~$b$ patøil do~$a$.
+Ta musí mít nulovou rezervu -- jinak by toti¾ i vrchol~$b$ patøil do~$A$.
 Proto po hranì $ba$ nemù¾e nic téci.
 
 \figure{Goldberg01.eps}{Obrázek k dùkazu lemmatu C}{0.2\hsize}
 
 Druhá svorka je evidentnì nezáporná, proto¾e je to souèet nezáporných ohodnocení hran.
 
-Proto $\sum_{u \in A}{f^\Delta(u) \le 0}$. Zároveò v¹ak v~$A$ je aspoò jeden
-vrchol s~kladným pøebytkem, toti¾~$v$, proto v~$A$ musí být také nìjaký vrchol
+Proto $\sum_{u \in A}{f^\Delta(u) \le 0}$. Zároveò v¹ak v~$A$ le¾í aspoò jeden
+vrchol s~kladným pøebytkem, toti¾~$v$, tudí¾ v~$A$ musí být také nìjaký vrchol
 se~záporným pøebytkem -- a~jediný takový je zdroj. Tím je dokázáno, ¾e $z$ le¾í v~$A$,
 tedy ¾e vede nenasycená cesta z~vrcholu~$v$ do~zdroje.
 \qed
@@ -220,7 +219,7 @@ mus
 zvednout -- nejprve na~úroveò~$v$ a~pak je¹tì o~1 vý¹e.
 
 Ukázali jsme tedy, ¾e mezi ka¾dými dvìma nasycenými pøevedeními musel být vrchol~$u$
-zvednut alespoò dvakrát. Podle lemmatu~V se to mohlo stát maximálnì $2n$-krát za celý
+zvednut alespoò dvakrát. Podle lemmatu~V se~$u$ mohlo zvedat maximálnì $2n$-krát za celý
 výpoèet, tak¾e v¹ech nasycených pøevedení po~hranì~$uv$ je nejvý¹e~$n$ a po~v¹ech hranách
 dohromady nejvý¹e~$nm$.
 \qed
@@ -259,16 +258,15 @@ p
 Zbývá vyøe¹it, jak sí» a vý¹ky reprezentovat, abychom dokázali rychle hledat
 vrcholy s~pøebytkem a nenasycené hrany vedoucí s~kopce.
 
-Budeme si~pamatovat seznam~$P$ v¹ech vrcholù s~kladným pøebytkem. Neboli
-$$P = \{ v \in V \setminus \{z,s\} ~\vert~ f^{\Delta}(v) > 0 \}.$$
+Budeme si~pamatovat seznam~$P$ v¹ech vrcholù s~kladným pøebytkem.
 Kdy¾ mìníme pøebytek nìjakého vrcholu, mù¾eme tento seznam v~konstantním èase
 aktualizovat -- buïto vrchol do seznamu pøidat nebo ho naopak odebrat. (K~tomu se
 hodí, aby si vrcholy pamatovaly ukazatel na svou polohu v~seznamu~$P$).
 V~konstantním èase také umíme odpovìdìt, zda existuje nìjaký vrchol s~pøebytkem.
 
-Dále si pro ka¾dý vrchol $u \in V$ budeme pamatovat seznam~$L(u)$. Ten bude
+Dále si pro ka¾dý vrchol $u \in V$ budeme udr¾ovat seznam~$L(u)$. Ten bude
 obsahovat v¹echny nenasycené hrany, které vedou z~$u$ dolù (mají spád alespoò 1).
-Opìt pøi zmìnách rezerv mù¾eme tyto seznamy v~konstantním èase aktualizovat.
+Opìt pøi zmìnách rezerv mù¾eme tyto seznamy v~konstantním èase upravit.
 
 Jednotlivé operace budou mít tyto slo¾itosti:
 
@@ -309,22 +307,23 @@ p
 provede $\O(n^3)$ nenasycených pøevedení.
 
 \proof
-Dokazovat budeme opìt pomocí potenciálové metody. Nejprve definujeme {\I nejvy¹¹í hladinu s~pøebytkem}:
+Dokazovat budeme opìt pomocí potenciálové metody. Vrcholy rozdìlíme do~hladin
+podle vý¹ky. Speciálnì nás bude zajímat {\I nejvy¹¹í hladina s~pøebytkem}:
 $$H := \max \{ h(v) \mid v \neq z,s ~\&~ f^\Delta(v) > 0\}.$$
 Rozdìlíme bìh algoritmu na~{\I fáze}. Ka¾dá fáze konèí tím, ¾e~se~$H$ zmìní.
 Jak se~mù¾e zmìnit? Buï se~$H$ zvý¹í, co¾ znamená, ¾e~nìjaký vrchol s~pøebytkem
-v~nejvy¹¹í hladinì byl o~1 zvednut, nebo se~$H$ sní¾í. My víme, ¾e zvednutí je
-v~celém algoritmu $\O(n^2)$. Zároveò si~mù¾eme uvìdomit, ¾e~$H$ je nezáporný
-potenciál, kdy sní¾ení i~zvý¹ení ho zmìní o~1, tedy poèet sní¾ení bude stejný
-jako poèet zvý¹ení, a~proto obojího je~$\O(n^2)$. Tudí¾ poèet fází je
-také~$\O(n^2)$.
+v~nejvy¹¹í hladinì byl o~1 zvednut, nebo se~$H$ sní¾í. U¾ víme, ¾e v~prùbìhu
+výpoètu nastane $\O(n^2)$ zvednutí, co¾ shora omezuje poèet zvý¹ení~$H$.
+Zároveò si~mù¾eme uvìdomit, ¾e~$H$ je nezáporný potenciál a sni¾uje se i zvy¹uje
+pøesnì o~1. Poèet sní¾ení bude proto omezen poètem zvý¹ení. Tím pádem nastane
+v¹eho v¹udy $\O(n^2)$ fází.
 
-Je dùle¾ité, ¾e~bìhem jedné fáze provedeme nejvý¹e jedno nenasycené pøevedení
+Bìhem jedné fáze pøitom provedeme nejvý¹e jedno nenasycené pøevedení
 z~ka¾dého vrcholu. Po~ka¾dém nenasyceném pøevedení po~hranì $uv$ se~toti¾
 vynuluje pøebytek v~$u$ a~aby se~provedlo dal¹í nenasycené pøevedení
 z~vrcholu~$u$, muselo by nejdøíve být co~pøevádìt. Muselo by tedy do~$u$ nìco
 pøitéci. My ale víme, ¾e pøevádíme pouze shora dolù a~$u$ je v~nejvy¹¹í hladinì
-(to zajistí právì to vylep¹ení algoritmu), tedy nejdøíve by musel být nìjaký
+(to zajistí právì ono vylep¹ení algoritmu), tedy nejdøíve by musel být nìjaký
 jiný vrchol zvednut. Tím by se~ale zmìnilo~$H$ a~skonèila by tato fáze.
 
 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)$.
@@ -337,72 +336,84 @@ Tento odhad je hezk
 \s{Poznámka:} Tato èasová slo¾itost je výhodná napøíklad pro~øídké grafy. Ty mají toti¾ pomìrnì malý poèet hran.
 
 \proof
-Rozdìlme si~fáze na~dva druhy: laciné a~drahé podle toho, kolik se~v~nich
-provede nenasycených pøevedení. Zvolme si~nìjaké nezáporné~$k$. Zatím nebudeme
-urèovat jeho hodnotu. Uvidíme, ¾e~èasová slo¾itost algoritmu bude závislá
-na~tomto parametru~$k$. Proto jeho hodnotu zvolíme a¾ pozdìji a~to tak, aby
-byla slo¾itost co nejni¾¹í.
+Zaveïme fáze stejnì jako v~dùkazu pøedchozí verze lemmatu a rozdìlme je
+na~dva druhy: laciné a~drahé podle toho, kolik se~v~nich provede nenasycených
+pøevedení. Pro ka¾dý druh fází pøitom odhadneme celkový poèet pøevedení
+jiným zpùsobem.
 
+Nech» $k$~je nìjaké kladné èíslo, jeho¾ hodnotu urèíme pozdìji.
 {\I Laciné fáze} budou ty, bìhem nich¾ se~provede nejvý¹e~$k$ nenasycených
-pøevedení. {\I Drahé fáze} budou ty ostatní, tedy takové, bìhem nich¾
+pøevedení. {\I Drahé fáze} budou ty ostatní, tedy takové, ve~kterých
 se~provede více jak~$k$ nenasycených pøevedení.
 
-Teï potøebujeme odhadnout, kolik nás budou stát oba typy fází. Zaènìme s~tìmi
-jednodu¹¹ími -- s~lacinými. Víme, ¾e~v¹ech fází je~$\O(n^2)$. Tìch laciných
-bude tedy urèitì také~$O(n^2)$. Nenasycených pøevedení se~bìhem jedné laciné
-fáze provede nejvíce~$k$. Tedy celkem se~bìhem laciných fází provede~$\O(n^2k)$
-nenasycených pøevedení.
+Teï potøebujeme odhadnout, kolik nás budou stát oba typy fází. Zaènìme tìmi
+jednodu¹¹ími -- lacinými. Jejich poèet shora odhadneme poètem v¹ech fází,
+tedy~$\O(n^2).$ Nenasycených pøevedení se~bìhem jedné laciné fáze provede
+nejvíce~$k$. Bìhem v¹ech laciných fází dohromady jich proto bude $\O(n^2k)$.
 
-Pro~poèet nenasycených pøevedení v~drahých fázích si~zaveïme nový potenciál
-definovaný následovnì:
-$$\Phi := \sum_{\scriptstyle{v \ne z,s} \atop \scriptstyle{f^{\Delta}(v) \ne 0}} {p(v) \over k},$$
-kde~$p(v)$ je poèet takových vrcholù~$u$, které nejsou vý¹e ne¾~$v$. Neboli
+Pro~poèet nenasycených pøevedení v~drahých fázích si~zaveïme nový potenciál:
+$$\Psi := \sum_{\scriptstyle{v \ne z,s} \atop \scriptstyle{f^{\Delta}(v) \ne 0}} p(v),$$
+kde~$p(v)$ je poèet vrcholù~$u$, které nejsou vý¹e ne¾~$v$. Neboli:
 $$p(v) = \vert \{ u \in V \mid h(u) \leq h(v) \} \vert.$$
-Tedy platí, ¾e~$p(v)$ je v¾dy nezáporné a~nejvý¹e má hodnotu~$n$. Dále víme,
-¾e~$\Phi$ bude v¾dy nezáporné (nebo» je to souèet nezáporných èlenù) a~nejvý¹e
-bude nabývat hodnoty~$n^2 / k$. Rozmysleme si, jak nám ovlivní tento
-potenciál na¹e tøi operace:
+Tedy platí, ¾e~$p(v)$ je v¾dy nezáporné nikdy nepøesáhne poèet v¹ech vrcholù~$n$.
+Proto~$\Psi$ bude také v¾dy nezáporné a nepøekroèí $n^2$. Rozmysleme si, jak
+bude potenciál ovlivòován operacemi algoritmu:
 
 \itemize\ibull
-\:{\I Zvednutí}: Za~ka¾dý zvednutý vrchol pøibude nejvý¹e~$n / k$ (tento
-vrchol mù¾e být nadzvednut nejvý¹e nad~v¹echny ostatní vrcholy) a~mo¾ná nìco
-ubude (napø. kdy¾ vrchol vyzvedneme na~úroveò k~ostatním).
-\:{\I Nasycené pøevedení} po~hranì $uv$: Mù¾e vynulovat pøebytek
-ve~vrcholu~$u$, pak se~$\Phi$ sní¾í. Mù¾e zvý¹it pøebytek ve~$v$ z~nuly, pak
-se~$\Phi$ zvý¹í. Ale nejvý¹e se~zvý¹í o~$n / k$, nebo» do~$\Phi$ pøibude
-jen jeden sèítanec za~vrchol $v$ a~ten pøispìje nejvý¹e hodnotou~$n / k$
-(pod ním mù¾e být nejvíce~$n$ vrcholù).
-\:{\I Nenasycená pøevedení} po~hranì $uv$ v~drahých fázích: Tato operace
-vynuluje pøebytek v~$u$, tedy~$\Phi$ klesne alespoò o~$p(u) / k$. Zároveò
-mù¾e zvý¹it pøebytek ve~$v$ z~nuly, ale~$\Phi$ stoupne nejvý¹e o~$p(v) / k$.
-Celkem tedy~$\Phi$ klesne alespoò o~$p(u) - p(v) / k$.
+\:{\I Inicializace:} Poèáteèní potenciál je nejvý¹e~$n^2$.
+\:{\I Zvednutí vrcholu~$v$}: Hodnota $p(v)$ se zvý¹í nejvý¹e o~$n$
+a v¹echna ostatní~$p(w)$ se buïto nezmìní, nebo klesnou o~1. Bez ohledu
+na pøebytky vrcholù se tedy potenciál zvý¹í nejvý¹e~o~$n$.
+\:{\I Nasycené pøevedení} po~hranì $uv$: Hodnoty $p(\ldots)$ se nezmìní,
+ale mìní se pøebytky -- vrcholu~$u$ se sni¾uje, vrcholu~$v$ zvy¹uje.
+Z~potenciálu proto mù¾e zmizet èlen $p(u)$ a naopak pøibýt $p(v)$.
+Potenciál~$\Psi$ tedy vzroste nejvý¹e o~$n$.
+\:{\I Nenasycené pøevedení} po~hranì $uv$: Hodnoty $p(\ldots)$ se opìt
+nemìní. Pøebytek v~$u$ se vynuluje, co¾ sní¾í~$\Psi$ o~$p(u)$. Pøebytek~$v$
+se naopak zvý¹í, tak¾e pokud byl pøedtím nulový, $\Psi$~se zvý¹í o~$p(v)$.
+Celkovì tedy $\Psi$ klesne alespoò o~$p(u)-p(v)$.
+
+Teï vyu¾ijeme toho, ¾e~pokud pøevádíme po~hranì~$uv$, má tato hrana spád~1.
+Výraz $p(u)-p(v)$ tedy udává poèet vrcholù na~hladinì $h(u)$, co¾ je nejvy¹¹í
+hladina s~pøebytkem. Z~pøedchozího dùkazu víme, ¾e tìchto vrcholù je alespoò
+tolik, kolik je nenasycených pøevedení bìhem dané fáze.
+
+Z~toho plyne, ¾e nenasycená pøevedení provedená bìhem drahých fází sní¾í
+potenciál alespoò o~$k$. Ty v~laciných fázích ho nesni¾ují tak výraznì,
+ale urèitì ho nezvý¹í.
 \endlist
 
-Uvìdomme si, ¾e~pokud pøevádíme po~hranì~$uv$, tak platí, ¾e~$h(u) = h(v) + 1$.
-Pak~$p(u) - p(v)$ je pøesnì poèet vrcholù na~hladinì~$H$. Tìch je alespoò
-tolik, kolik je nenasycených pøevedení bìhem jedné fáze (to jsme dokázali ji¾
-v~lemmatu N'), a~my jsme si~nadefinovali, ¾e v~drahé fázi je poèet nenasycených
-pøevedení alespoò~$k$. Tedy~$p(u) - p(v) > k$. Proto bìhem jednoho nenasyceného
-pøevedení~$\Phi$ klesne alespoò o~${k / k} = 1$. Nenasycená pøevedení
-potenciál nezvy¹ují.
-
-Potenciál~$\Phi$ se~mù¾e zvìt¹it pouze pøi~operacích zvednutí a~nasycené
-pøevedení. Zvednutí se~provede celkem~$\O(n^2)$ a~ka¾dé zvý¹í potenciál nejvý¹e
-o~$n / k$. Nasycených pøevedení se provede celkem~$\O(nm)$ a~ka¾dé zvý¹í
-potenciál takté¾ nejvý¹e o~$n / k$. Celkem se~tedy~$\Phi$ zvý¹í nejvý¹e
-o $${n \over k} \cdot \O(n^2) + {n \over k} \cdot \O(nm) = \O \left({n^3 \over k} + {n^2m
-\over k}\right).$$
-
-Teï vyu¾ijeme toho, ¾e~$\Phi$ je nezáporný potenciál, tedy kdy¾ ka¾dé
-nenasycené pøevdení v~drahé fázi sní¾í~$\Phi$ alespoò o~1, tak v¹ech
-nenasycených pøevdení v~drahých fázích je~$\O({n^3 / k} + {n^2m / k})$.
-U¾ jsme ukázali, ¾e~nenasycených pøevední v~laciných fázích je~$\O(n^2k)$.
-Proto celkem v¹ech nenasycených pøevedení je $$\O \left(n^2k + {n^3 \over k}
-+ {n^2m \over k} \right) = \O \left(n^2k + {n^2m \over k} \right)$$ (nebo»
-pro~souvislé grafy platí, ¾e~$m \geq n \Rightarrow n^2m \geq n^3$). A~my
-chceme, aby jich bylo co nejménì. Tato funkce má minimum tehdy, kdy¾ $n^2k
-= {n^2m \over k}$, èili $k = \sqrt{m}$.
-
-Proto v¹ech nenasycených pøevedení je $\O(n^2\sqrt{m})$.
+Potenciál~$\Psi$ se~tedy mù¾e zvìt¹it pouze pøi~operacích inicializace, zvednutí a~nasyceného
+pøevedení. Inicializace pøispìje~$n^2$. V¹ech zvednutí se~provede celkem~$\O(n^2)$ a~ka¾dé zvý¹í potenciál nejvý¹e
+o~$n$. Nasycených pøevedení se provede celkem~$\O(nm)$ a~ka¾dé zvý¹í
+potenciál takté¾ nejvý¹e o~$n$. Celkem se~tedy~$\Psi$ zvý¹í nejvý¹e
+o $$n^2 + n \cdot \O(n^2) + n \cdot \O(nm) = \O(n^3 + n^2m).$$
+
+Teï vyu¾ijeme toho, ¾e~$\Psi$ je nezáporný potenciál, tedy kdy¾ ho ka¾dé
+nenasycené pøevedení v~drahé fázi sní¾í~$\Psi$ alespoò o~$k$, mù¾e takových
+pøevedení nastat nejvý¹e $\O(n^3/k + n^2m/k)$. To nyní seèteme s~odhadem
+pro laciné fáze a dostaneme, ¾e v¹ech nenasycených pøevedení probìhne
+$$\O \left(n^2k + {n^3 \over k} + {n^2m \over k} \right) = \O \left(n^2k + {n^2m \over k} \right)$$
+(vyu¾ili jsme toho, ¾e v~souvislých grafech je $m\ge n$, a~tedy $n^2m \ge n^3$).
+
+Tento odhad ov¹em platí pro libovolnou volbu~$k$. Proto zvolíme takové~$k$,
+aby byl co nejni¾¹í. Jeliko¾ první èlen s~rostoucím~$k$ roste a druhý klesá,
+asymptotické minimum nastane tam, kde se tyto èleny vyrovnají, tedy kdy¾
+$n^2k = n^2m / k$.
+
+Nastavíme tedy $k=\sqrt{m}$ a získáme ký¾ený odhad $\O(n^2\sqrt{m})$.
 \qed
+
+\exercises
+
+\ex{Rozeberte chování Goldbergova algoritmu na sítích s~jednotkovými kapacitami.
+Bude rychlej¹í ne¾ ostatní algoritmy?}
+
+\ex{Navrhnìte implementaci vylep¹eného Goldbergova algoritmu se zvedáním nejvy¹¹ího
+vrcholu s~pøebytkem. Sna¾te se dosáhnout èasové slo¾itosti $\O(n^2\sqrt m)$.}
+
+\ex{Co by se stalo, kdybychom v~inicializaci algoritmu umístili zdroj o~1 ní¾e?}
+
+\endexercises
+
 \bye