From: Martin Mares Date: Thu, 26 Jan 2012 22:36:30 +0000 (+0100) Subject: Goldberg: korektury, cviceni, prepis dukazu Lemmatu N'' X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=db09518ff28f6b7857abec8cab109d8a91aff178;p=ads2.git Goldberg: korektury, cviceni, prepis dukazu Lemmatu N'' --- diff --git a/4-goldberg/4-goldberg.tex b/4-goldberg/4-goldberg.tex index 4326605..c7cffd2 100644 --- a/4-goldberg/4-goldberg.tex +++ b/4-goldberg/4-goldberg.tex @@ -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