Toky nyní odpovídají vrcholově disjunktním cestám, řezy v~síti separátorům.
\qed
-\figure{vertex-split.eps}{Rozdělení vrcholu}{\epsfxsize}
+\figure{vertex-split.epdf}{Rozdělení vrcholu}{\epsfxsize}
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.eps}{0.4\hsize}
+\fig{bipartitni.epdf}{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.eps}{Suffixy slova \uv{baraba}: trie, suffixový strom, ST s~dolarem}{\epsfxsize}
+\figure{baraba.epdf}{Suffixy slova \uv{baraba}: trie, suffixový strom, ST s~dolarem}{\epsfxsize}
\>Nyní jak je to s~konstrukcí suffixových stromů:
\finalfix{
\smallskip
-\figure{planar1.eps}{Před nakreslením zpětných hran \dots}{\epsfxsize}
-\figure{planar2.eps}{\dots\ po něm (čtverečky jsou externí vrcholy)}{\epsfxsize}
+\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}
}
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.eps}{Před nakreslením zpětných hran \dots}{\epsfxsize}
-\figure{planar2.eps}{\dots\ po něm (čtverečky jsou externí vrcholy)}{\epsfxsize}
+\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}
}
Bude se nám hodit, že čas potřebný na~tuto operaci je přímo úměrný počtu
vybarvená část odpovídá vnitřku bloku; hranaté vrcholy jsou externí):
\bigskip
-\centerline{\epsfbox{minor1.eps}\qquad\epsfbox{minor2.eps}}
+\centerline{\epsfbox{minor1.epdf}\qquad\epsfbox{minor2.eps}}
\bigskip
Minor~$M$ přitom odpovídá situaci, kdy $v$ neleží v~bloku~$B$. Tento případ
nerovinných minorů ($N_1$ až $N_3$ jsou isomorfní s~$K_{3,3}$ a $N_4$ s~$K_5$):
\bigskip
-\centerline{\epsfbox{minor3.eps}\qquad\epsfbox{minor4.eps}}
+\centerline{\epsfbox{minor3.epdf}\qquad\epsfbox{minor4.eps}}
\bigskip
-\centerline{\epsfbox{minor5.eps}\qquad\epsfbox{minor6.eps}}
+\centerline{\epsfbox{minor5.epdf}\qquad\epsfbox{minor6.eps}}
\bigskip
\>Uvažme, jak bude $B$ vypadat po~odebrání vrcholu~$v$ a hran z~něj vedoucích:
\endalgo
\finalfix{\vskip-3pt}
-\figure{dinic-cistasit.eps}{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}{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.eps}{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.}{0.45\hsize}
% HACK
\vskip -10pt
-\figure{dinic-cestashranouzpet.eps}{Cesta užívající novou zpětnou hranu}{0.4\hsize}
+\figure{dinic-cestashranouzpet.epdf}{Cesta užívající novou zpětnou hranu}{0.4\hsize}
\h{Poznámky}
kapacity je $\O(m^{3/2})$. Tím jsme si pomohli pro řídké grafy.
\vbox{
-\inlinefig{dinic-vrcholrez.eps}{0.2\hsize}
+\inlinefig{dinic-vrcholrez.epdf}{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.eps}{Kroky postupného třídění podle řádů}{0.4\hsize}
+%\figure{dinic-sort.epdf}{Kroky postupného třídění podle řádů}{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.eps}{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}{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.eps}{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}{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.eps}{\epsfxsize}
+\fig{4-ght-rez.epdf}{\epsfxsize}
\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.eps}{\epsfxsize}
+\fig{4-ght-htl.epdf}{\epsfxsize}
\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$.
\checkroom{40pt}
Nyní mohou nastat následující dva případy:\numlist\nalpha
-\vbox to 0pt{\vskip 10pt\rightline{\epsfysize=2.5cm\epsfbox{4-ght-htl-a.eps}}\vss}\vskip-\baselineskip
+\vbox to 0pt{\vskip 10pt\rightline{\epsfysize=2.5cm\epsfbox{4-ght-htl-a.epdf}}\vss}\vskip-\baselineskip
\:$t\not\in X$. Tehdy si všimneme, že platí:
\hangindent=-14em\hangafter=-100
$$\eqalignno{
Nyní stačí nerovnosti $(2)$ a $(1)$ odečíst, čímž získáme: $$d(U \cap X) \le d(X),$$
což spolu s~obrázkem dokazuje, že $\d(U \cap X)$ je také minimální $uv$-řez.
-\vbox to 0pt{\vskip 20pt\rightline{\epsfysize=2.5cm\epsfbox{4-ght-htl-b.eps}}\vss}\vskip-\baselineskip
+\vbox to 0pt{\vskip 20pt\rightline{\epsfysize=2.5cm\epsfbox{4-ght-htl-b.epdf}}\vss}\vskip-\baselineskip
\:$t\in X$. Postupovat budeme obdobně jako v~předchozím případě. Tentokrát se budou
hodit tyto nerovnosti:
\hangindent=-14em\hangafter=-100
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.eps}{0.45\hsize}
-\fig{4-ght-g1g2-after.eps}{0.9\hsize}
+\fig{4-ght-g1g2-before.epdf}{0.45\hsize}
+\fig{4-ght-g1g2-after.epdf}{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.eps}{12cm}
+\fig{4-ght-rezx.epdf}{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.eps}{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)$}{\epsfxsize}
-\figure{mst1.eps}{Jeden krok důkazu swapovacího lemmatu}{\epsfxsize}
+\figure{mst1.epdf}{Jeden krok důkazu swapovacího lemmatu}{\epsfxsize}
\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.eps}{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}{\epsfxsize}
\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.eps}{Situace v~důkazu Bezbarvého lemmatu}{\epsfxsize}
+\figure{mst-bez.epdf}{Situace v~důkazu Bezbarvého lemmatu}{\epsfxsize}
\:$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.eps}{\hsize}
+\fig{trie.epdf}{\hsize}
\s{Lemma R:} $\rank_X(x)$ je určen jednoznačně kombinací:
\numlist\pnromanp
hrany komprimovaných cest tučně.
\medskip
-\fig{mima.eps}{\epsfxsize}
+\fig{mima.epdf}{\epsfxsize}
\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
\centerline{\large průvodce pro středně pokročilé}
\vfill
-\centerline{\epsfxsize=0.7\hsize\epsfbox{krajina.eps}}
+\centerline{\epsfxsize=0.7\hsize\epsfbox{krajina.epdf}}
\vfill
\centerline{\large ITI \the\year}
% Makra pro sazbu skripticek o grafovych algoritmech
\input mjmac.tex
-\input epsf.tex
\input btxmac.tex
\input amssym.tex
% Asymptoticke O-cko
\def\O{{\cal O}}
-% Vlozeni obrazku {obrazek}{popisek}{sirka}
-\def\figure#1#2#3{\bigskip\vbox{\centerline{\epsfxsize=#3\epsfbox{#1}}\smallskip\centerline{#2}}\bigskip}
+% Vlozeni obrazku {obrazek}{popisek}{width sirka}
+\def\putepdf#1#2{\hbox{\pdfximage #1{#2}\pdfrefximage\pdflastximage}}
+\def\figure#1#2#3{\bigskip\vbox{\centerline{\putepdf{#3}{#1}}\smallskip\centerline{#2}}\bigskip}
% Varianta bez popisku
-\def\fig#1#2{\medskip\centerline{\epsfxsize=#2\epsfbox{#1}}\medskip}
+\def\fig#1#2{\medskip\centerline{\putepdf{#2}{#1}}\medskip}
% Dva obrazky vedle sebe s popiskami
\def\twofigures#1#2#3#4#5#6{\bigskip\centerline{\vbox{\halign{\hfil##\hfil\hskip 4em&\hfil##\hfil\cr
-\epsfxsize=#3\epsfbox{#1}&\epsfxsize=#6\epsfbox{#4}\cr
+\putepdf{#3}{#1}&\putepdf{#6}{#4}\cr
\noalign{\smallskip}
#2\cr}}}\bigskip}
% Obrazek vlozeny do praveho okraje odstavce {obrazek}{sirka}
% Pouzit na zacatku odstavce a nejlepe celou konstrukci zavrit do vboxu, aby se nerozlomila
\def\inlinefig#1#2{
-\setbox0=\hbox{\epsfxsize=#2\epsfbox{#1}}
+\setbox0=\hbox{\putepdf{#2}{#1}}
\hangindent=-\wd0
\advance\hangindent by -3em
\dimen0=\ht0