Nyní si v¹imneme, ¾e velikost toku mù¾eme mìøit pøes libovolný separátor: je to mno¾ství
tekutiny, které teèe pøes separátor z~$A$ do~$B$ minus to, které se vrací zpátky
-(zatím jsme velikost mìøili u~zdroje, vlastnì na~triviálním separátoru $A=\{v\}$, $B=\overline A).$
+(zatím jsme velikost mìøili u~zdroje, vlastnì na~triviálním separátoru $A=\{z\}$, $B=\overline A).$
\s{Lemma:} Nech» $A\subseteq V(G),z\in A,s\not\in A$ a $f$ je libovolný tok. Potom platí,
¾e: $$\vert f\vert=f(A,\overline A)-f(\overline A,A).$$
-%version 1.6
+%version 1.8
\input lecnotes.tex
Pokud platí, ¾e:
\numlist \ndotted
\:ve~vrcholu~$u$ je nenulový pøebytek, tj. $f^{\Delta}(u) > 0$,
- \:vrchol~$u$ je vý¹ ne¾ vrchol~$v$, tj. $h(u) > h(v)$ a
+ \:vrchol~$u$ je vý¹ ne¾ vrchol~$v$, tj. $h(u) > h(v)$, a
\:hrana $uv$ má nenulovou rezervu, tj. $r(uv)>0$,
\endlist
\noindent pøevedeme tok o~velikosti $\delta:=\min(f^{\Delta}(u),r(uv))$ z~$u$ do~$v$ tímto zpùsobem:
\:$\forall e \in E: f(e)\leftarrow 0$ (po~hranách na~poèátku nenecháme protékat nic).
\:$\forall zu \in E : f(zu)\leftarrow c(zu)$ (ze~zdroje pustíme maximální mo¾nou vlnu).
\:Dokud $\exists u \in V \setminus \{z,s\}, f^{\Delta}(u)>0$:
-\::Pokud $\exists uv \in E, r(uv)>0$ a $h(u)>h(v)$, pøevedeme pøebytek po~hranì $uv$.
+\::Pokud $\exists uv \in E, r(uv)>0$ a $h(u)>h(v)$: pøevedeme pøebytek po~hranì $uv$.
\::V~opaèném pøípadì zvedneme $u$.
\:Vrátíme tok $f$ jako výsledek.
\endalgo
\proof
Nejprve uká¾eme, ¾e $f$ je tok, a pak jeho maximalitu. Vyjdìme z~toho, ¾e $f$ je vlna a algoritmus se mù¾e zastavit, jen pokud nastanou oba následující pøípady souèasnì:
\itemize\ibull
-\:Ve~vrcholech grafu nejsou ¾ádné pøebytky (mimo $z$ a $s$), proto¾e jinak by se algoritmus nezastavil a pokraèoval dále ve~výpoètu. Tudí¾ $f$ je tok. %todo check ? mimo~ ?
+\:Ve~vrcholech grafu nejsou ¾ádné pøebytky (mimo $z$ a~$s$), proto¾e jinak by se algoritmus nezastavil a pokraèoval dále ve~výpoètu. Tudí¾ $f$ je tok.
\:Neexistuje nenasycená cesta ze~zdroje do~stoku, èím¾ z~{\I Ford-Fulkersonovy vìty} okam¾itì vyplývá, ¾e $f$ je tok maximální. A jak tuto neexistenci nahlédneme? Pro~spor pøedpokládejme, ¾e nìjaká nenasycená cesta~$P$ ze~$z$ do~$s$ existuje. Tato cesta mù¾e mít maximálnì $N-1$ hran. O~nich víme, ¾e v¹echny mají kladnou rezervu, a dále víme, ¾e po~celou dobu výpoètu je vý¹ka zdroje $N$ a vý¹ka stoku $0$. Tak¾e celkový spád cesty $P$ je $N$, co¾ ale znamená, ¾e na cestì $P$ existuje hrana s~kladnou rezervou, která má spád alespoò $2$. To je v¹ak v~rozporu s~invariantem~S.
\qeditem
\endlist
\s{Definice:} {\I Separátor $S_n$}
je sí», ve které jsou v¾dy~$i$-tý a~$(i+{n/2})$-tý prvek vstupu
(pro $i=0,\dots, {n/2}-1$) propojeny komparátorem, minimum bude~$i$-tým,
-maximum $(i+1)$-ním prvkem výstupu.
+maximum $(i+{n/2})$-ním prvkem výstupu.
\figure{sortnet.3}
{$(y_i, y_{i+{n/2}}) = CMP(x_i, x_{i+{n/2}})$} {300pt}
se prohodí. Pokud ho nenajdeme, separátor neudìlá vùbec nic a~obì
tvrzení lemmatu zøejmì tedy platí. Øeknìme, ¾e $x_m$ je maximum
vstupní posloupnosti. Pak~$k$ bude jistì men¹í ne¾~$m$
-a~$x_{k+{n/2}}$ bude vìt¹í ne¾~$m$, mezi~$k$ a~$m$ je tedy vstupní
+a~$k+{n/2}$ bude vìt¹í ne¾~$m$, mezi~$k$ a~$m$ je tedy vstupní
posloupnost neklesající, mezi $k+{n/2}$ a~$n-1$ nerostoucí.
Uvìdomíme si, ¾e pro ka¾dé~$i$, $k\leq i\leq {n/2}-1$ se prvky
$x_i$ a~$x_{i+{n/2}}$ prohodí. Úsek mezi~$k$ a~${n/2}-1$ tedy
\itemize\ibull
\:Projdeme v¹echy zpìtné hrany a vypí¹eme slova, jen¾ v daných stavech konèí. Toto øe¹ení funguje, ale je pomalé, proto¾e procházíme v¹echny zpìtné hrany.
\:Pøedpoèítání mno¾in. Najdeme mno¾inu slov tak, aby celková velikost slov byla vìt¹í ne¾ lineární. Funkèní, ale konstrukce je pomalá.
-\:$\<slovo>(s) =$ index slova $\iota$, které konèí ve stavu $s$, nebo 0, \par
-$\<out>(s) =$ nejbli¾¹í vrchol, do kterého se lze z $s$ dostat po zpìtných hranách a $\<slovo>(v) \ne 0$ (konèí tam slovo).
+\:$\<slovo>(s)$ je index slova $\iota$, které konèí ve stavu $s$ nebo 0. \par
+$\<out>(s)$ je nejbli¾¹í vrchol, do kterého se lze z $s$ dostat po zpìtných hranách a $\<slovo>(v) \ne 0$ (konèí tam slovo).
\figure{Graphic2.eps}{Vyhledávací automat -- se zpìtnými hranami}{1.3in}
\endlist
\:$s \leftarrow \<koøen>$ ($s$ je aktuální stav vyhledávacího automatu).
\:Procházíme v¹echny písmena $c$ v senì $\sigma$:
\::$s \leftarrow krok(s,c)$.
-\::Je-li $\<slovo>(s) \ne 0 \Rightarrow$ vypí¹eme $\<slovo>(s)$.
+\::Pokud $\<slovo>(s) \ne 0$: vypí¹eme $\<slovo>(s)$.
\::$v \leftarrow out(s)$.
\::Dokud $v \ne 0 $:
\:::Vypí¹eme $\<slovo>(v)$.
\:Postavíme strom dopøedných hran, $r \leftarrow$ koøen stromu.
\:Spoèteme $\<slovo>(\ast)$ (spoèteme funkci \<slovo> pro v¹chny stavy).
\:Spoèteme $z(\ast)$: $z(\beta)=\alpha(\beta[1:])$.
-\itemize\ibull
-\:$z(\beta) = \alpha(\beta[1:])$ -- v¹echny zpìtné hrany vedou do vy¹¹ích hladin
-\:$z(v) = \<krok>(z(u),c)$
-\endlist
+ {\parindent=6em \itemize\ibull
+ \:\>\>\>$z(\beta) = \alpha(\beta[1:])$ -- v¹echny zpìtné hrany vedou do vy¹¹ích hladin
+ \:$z(v) = \<krok>(z(u),c)$
+ \endlist}
\figure{Graphic100.eps}{$\<z>(v) = \<krok>(z(u),c)$}{0.7in}
\:$z(r) \leftarrow 0$, do fronty $Q$ pøiøadíme v¹echny syny $r$, pro v¹echny $v$ prvky $Q: z(v) \leftarrow r$.
\:Dokud fronta $Q$ není prázdná:
\figure{vyhl_automat_full.eps}{Vyhledávací automat -- kompletní}{1in}
\s{Vìta:}
-Algoritmus A-C najde v¹echny výskyty slov $\iota_1, \ldots, \iota_k$ ve slove $\sigma$ v èase: $$\O(\Sigma_i \vert \iota_i \vert + \vert \sigma \vert + \<poèet výskytù>).$$
+Algoritmus Aho-Corasicková najde v¹echny výskyty slov $\iota_1, \ldots, \iota_k$ ve~slovì $\sigma$ v~èase $\O(\sum_i \vert \iota_i \vert + \vert \sigma \vert + \<poèet výskytù>).$
+\qed
\h{Polynomy a násobení}
\>Mìjme dva polynomy definované jako:
$$ \vdots $$
$$P(x) = L(x^2) + xN(x^2),$$
$$P(-x) = L(x^2) - xN(x^2),$$
-kde $L(x)$ a $N(x)$ jsou polynomy stupnì $n/2$. Umocnìním $x^2$ se nám poru¹í párování $x$ a $-x$, proto musíme poèítat v $\bb{C}$.
-Musíme si ale uvìdomit, ¾e tyto vztahy platí pouze, kdy¾ existuje pár $-x$ a $x$ v tìlese, nad kterým poèítáme. V~tomto pøípadì jsme z~polynomu s~$n$ koeficienty v~$n$ bodech dostali $2$ polynomy s~$n/2$ koeficienty v~$n/2$ bodech. Z~toho vyplývá èasová slo¾itost definována vztahem:
+kde $L(x)$ a $N(x)$ jsou polynomy stupnì $n/2$. Umocnìním $x^2$ se nám poru¹í párování $x$ a $-x$, proto musíme poèítat v~$\bb{C}$ místo~$\bb{R}$.
+V~tomto pøípadì jsme z~polynomu s~$n$ koeficienty v~$n$ bodech dostali $2$ polynomy s~$n/2$ koeficienty v~$n/2$ bodech. Z~toho vyplývá èasová slo¾itost definována vztahem:
$$T(n) = 2T(n/2) + \O(n).$$
Ten mù¾eme vyøe¹it s pou¾itím Master Theoremu z~ADS~I a dostaneme:
$$T(n) = \O(n \log n).$$
\bye
-
-