Toky nyní odpovídají vrcholově disjunktním cestám, řezy v~síti separátorům.
\qed
-\figure{vertex-split.epdf}{Rozdělení vrcholu}{\epsfxsize}
+\figure{vertex-split.epdf}{Rozdělení vrcholu}{}
Podobně dostaneme neorientované lokální věty (neorientovanou hranu nahradíme
orientovanými v~obou směrech) a z~nich pak i globální varianty popisující
nové hrany z~$s$ do~všech vrcholů partity~$A$ a ze~všech vrcholů partity~$B$ do~$t$.
Kapacity všech hran nastavíme na jedničky:
-\fig{bipartitni.epdf}{0.4\hsize}
+\fig{bipartitni.epdf}{width 0.4\hsize}
Nyní si všimneme, že párování v~původním grafu odpovídají celočíselným tokům v~této síti
a že velikost toku je rovna velikosti párování. Stačí tedy nalézt maximální celočíselný
\s{Příklad:}
-\figure{baraba.epdf}{Suffixy slova \uv{baraba}: trie, suffixový strom, ST s~dolarem}{\epsfxsize}
+\figure{baraba.epdf}{Suffixy slova \uv{baraba}: trie, suffixový strom, ST s~dolarem}{}
\>Nyní jak je to s~konstrukcí suffixových stromů:
\finalfix{
\smallskip
-\figure{planar1.epdf}{Před nakreslením zpětných hran \dots}{\epsfxsize}
-\figure{planar2.epdf}{\dots\ po něm (čtverečky jsou externí vrcholy)}{\epsfxsize}
+\figure{planar1.epdf}{Před nakreslením zpětných hran \dots}{}
+\figure{planar2.epdf}{\dots\ po něm (čtverečky jsou externí vrcholy)}{}
}
Všimněme si, že pokud vede z~nějakého už nakresleného vrcholu ještě nenakreslená hrana,
sloučit několik bloků do~jednoho, jak je vidět z~obrázků.
\separatefix{
-\figure{planar1.epdf}{Před nakreslením zpětných hran \dots}{\epsfxsize}
-\figure{planar2.epdf}{\dots\ po něm (čtverečky jsou externí vrcholy)}{\epsfxsize}
+\figure{planar1.epdf}{Před nakreslením zpětných hran \dots}{}
+\figure{planar2.epdf}{\dots\ po něm (čtverečky jsou externí vrcholy)}{}
}
Bude se nám hodit, že čas potřebný na~tuto operaci je přímo úměrný počtu
\endalgo
\finalfix{\vskip-3pt}
-\figure{dinic-cistasit.epdf}{Pročištěná síť rozdělená do vrstev}{0.4\hsize}
+\figure{dinic-cistasit.epdf}{Pročištěná síť rozdělená do vrstev}{width 0.4\hsize}
\finalfix{\vskip-6pt}
\s{Složitost algoritmu:}
délka alespoň $l+2$. Tím je věta dokázána. \qed
% posunut dále, aby vyšla sazba
-\figure{dinic-neprocistenasit.epdf}{Nepročištěná síť. Obsahuje zpětné hrany, hrany uvnitř vrstvy a slepé uličky.}{0.45\hsize}
+\figure{dinic-neprocistenasit.epdf}{Nepročištěná síť. Obsahuje zpětné hrany, hrany uvnitř vrstvy a slepé uličky.}{width 0.45\hsize}
% HACK
\vskip -10pt
-\figure{dinic-cestashranouzpet.epdf}{Cesta užívající novou zpětnou hranu}{0.4\hsize}
+\figure{dinic-cestashranouzpet.epdf}{Cesta užívající novou zpětnou hranu}{width 0.4\hsize}
\h{Poznámky}
kapacity je $\O(m^{3/2})$. Tím jsme si pomohli pro řídké grafy.
\vbox{
-\inlinefig{dinic-vrcholrez.epdf}{0.2\hsize}
+\inlinefig{dinic-vrcholrez.epdf}{width 0.2\hsize}
\s{Jednotkové kapacity a jeden ze stupňů roven 1:}
Úlohu hledání maximálního párování v~bipartitním grafu, případně hledání
vrcholově disjunktních cest v~obecném grafu lze převést (viz předchozí kapitola)
radix-sortu neboli přihrádkového třídění. Pro jistotu si ho připomeňme. Algoritmus nejprve setřídí čísla podle poslední
(nejméně významné) cifry, poté podle předposlední, předpředposlední a tak dále.
-%\figure{dinic-sort.epdf}{Kroky postupného třídění podle řádů}{0.4\hsize}
+%\figure{dinic-sort.epdf}{Kroky postupného třídění podle řádů}{width 0.4\hsize}
V našem případě budeme postupně budovat sítě čím dál podobnější zadané
síti a v~nich počítat toky, až nakonec získáme tok pro ni.
Přitom po~každém posunu zavoláme Dinicův algoritmus, aby dopočítal maximální tok.
Pomocí předchozího odhadu ukážeme, že jeden takový krok nebude příliš drahý.
-\figure{dinic-scaling-original.epdf}{Původní síť, na hranách jsou jejich kapacity v binárním zápisu}{0.3\hsize}
+\figure{dinic-scaling-original.epdf}{Původní síť, na hranách jsou jejich kapacity v binárním zápisu}{width 0.3\hsize}
Označme $k$ index nejvyššího bitu v~zápisu kapacit v~zadané síti ($k = \lfloor \log_2C \rfloor$).
Postupně budeme budovat sítě $G_i$ s~kapacitami $c_i(e) = \lfloor {c(e) / 2^{k-i}} \rfloor$.
$G_0$ je nejořezanější síť, kde každá hrana má kapacitu rovnou nejvyššímu bitu v~binárním zápisu
její skutečné kapacity, až $G_k$ je původní síť $G$.
-\figure{dinic-scaling-g.epdf}{Sítě $G_0$, $G_1$ a $G_2$, jak vyjdou pro síť z~předchozího obrázku}{0.9\hsize}
+\figure{dinic-scaling-g.epdf}{Sítě $G_0$, $G_1$ a $G_2$, jak vyjdou pro síť z~předchozího obrázku}{width 0.9\hsize}
\>Přitom pro kapacity v~jednotlivých sítích platí:
\proof Buď $W$ minimální $xz$-řez.
-\fig{4-ght-rez.epdf}{\epsfxsize}
+\fig{4-ght-rez.epdf}{}
\noindent Vrchol $y$ musí být v~jedné z~komponent, Pokud je v~komponentě s~$x$, pak $r(y,z) \le d(W)$,
protože $\d(W)$ je také $yz$-řez. Pokud v~té druhé, analogicky platí $r(x,y) \le d(W)$.
vrcholy z~$U$. Pak existuje množina vrcholů $W \subseteq U$ taková, že $\d(W)$ je minimální $uv$-řez.
\foot{To důležité a netriviální je, že celá $W$ leží v~$U$.}
-\fig{4-ght-htl.epdf}{\epsfxsize}
+\fig{4-ght-htl.epdf}{}
\proof Nechť je $\d(X)$ minimální $uv$-řez.
BÚNO můžeme předpokládat, že $s\in U$ a $t\not\in U$, $u\in X$ a $v\not\in X$ a $s\in X$.
do $v_1$ \<nejlevnější> hrana, která z~něj vedla do množiny $V\setminus W$, případně žádná, pokud
do této množiny žádná hrana nevedla.}
-\fig{4-ght-g1g2-before.epdf}{0.45\hsize}
-\fig{4-ght-g1g2-after.epdf}{0.9\hsize}
+\fig{4-ght-g1g2-before.epdf}{width 0.45\hsize}
+\fig{4-ght-g1g2-after.epdf}{width 0.9\hsize}
\finalfix{\bigskip}
Dále vytvoříme množiny vrcholů $R_1=R \cap \overline W$ a $R_2=R \cap W$. Dle indukčního
$s$ a $t$. Přitom ale separuje $r_1$ a $r_2$, takže musí separovat buď $s$ a $r_1$, nebo $t$ a $r_2$.
BÚNO nechť $X$ separuje $s$ a $r_1$.
-\fig{4-ght-rezx.epdf}{12cm}
+\fig{4-ght-rezx.epdf}{width 12cm}
Podívejme se nyní na \PGHT{} $T_1$ (víme, že ten je korektní) a nalezněme v~něm nejlevnější hranu $e$ na cestě spojující $s$ a $r_1$.
Tato hrana definuje řez $\d(U)$, což je minimální $sr_1$-řez, podle HTL i v~celém~$G$. Protože $\d(X)$ je $sr_1$-řez,
Stačí si uvědomit, že přidáním $e^\prime$ do~$T$ vznikne kružnice (konkrétně $T[e^\prime] + e^\prime$)
a vynecháním libovolné hrany z~této kružnice získáme opět kostru.
-\figure{mst2.epdf}{Kostra $T$, cesta $T[e]$ a výsledek operace $\<swap>(T,e',e)$}{\epsfxsize}
+\figure{mst2.epdf}{Kostra $T$, cesta $T[e]$ a výsledek operace $\<swap>(T,e',e)$}{}
-\figure{mst1.epdf}{Jeden krok důkazu swapovacího lemmatu}{\epsfxsize}
+\figure{mst1.epdf}{Jeden krok důkazu swapovacího lemmatu}{}
\s{Lemma o~swapování:}
Máme-li libovolné kostry $T$ a $T'$, pak lze z~$T$ dostat $T'$ konečným počtem operací \<swap>.
získáme ještě lehčí kostru, což není možné.
\qed
-\figure{mst-rb.epdf}{Situace v~důkazu Modrého a Červeného lemmatu}{\epsfxsize}
+\figure{mst-rb.epdf}{Situace v~důkazu Modrého a Červeného lemmatu}{}
\s{Červené lemma:} Je-li libovolná hrana~$e$ algoritmem kdykoliv obarvena na~červeno,
pak $e\not\in \Tmin$.
neexistují žádné lehké hrany, takže hrana $e$ je nejdražší na~cyklu tvořeném modrou cestou a~touto hranou
a mohu na ni použít červené pravidlo.
-\figure{mst-bez.epdf}{Situace v~důkazu Bezbarvého lemmatu}{\epsfxsize}
+\figure{mst-bez.epdf}{Situace v~důkazu Bezbarvého lemmatu}{}
\:$y \notin M$: Tehdy řez $\delta(M)$ neobsahuje žádné modré hrany, takže na~tento řez
můžeme použít modré pravidlo.
\s{Příklad:} Trie pro zadanou množinu čísel. Ohodnocení hran je pouze pro názornost, není
součástí struktury.
-\fig{trie.epdf}{\hsize}
+\fig{trie.epdf}{width \hsize}
\s{Lemma R:} $\rank_X(x)$ je určen jednoznačně kombinací:
\numlist\pnromanp
hrany komprimovaných cest tučně.
\medskip
-\fig{mima.epdf}{\epsfxsize}
+\fig{mima.epdf}{}
\s{Algoritmus pro cesty:} Cestu délky~$l$ rozdělíme na~úseky délky $\log n$, pro něž si uložíme
množiny již přítomných hran (po~bitech jako čísla). Pak si ještě pamatujeme zkomprimovanou cestu (hrany