From: Martin Mares Date: Mon, 7 Jan 2008 10:00:52 +0000 (+0100) Subject: Dalsi hrst preklepu (diky Honzovi Volcovi). X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=be3502110aea505a6f8aa610374f58670c325524;p=ads2.git Dalsi hrst preklepu (diky Honzovi Volcovi). --- diff --git a/2-toky/2-toky.tex b/2-toky/2-toky.tex index b360913..31a5721 100644 --- a/2-toky/2-toky.tex +++ b/2-toky/2-toky.tex @@ -64,7 +64,7 @@ $S(A,B)$ pak bude tvo 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).$$ diff --git a/4-goldberg/4-goldberg.tex b/4-goldberg/4-goldberg.tex index 6d22bba..56f39ca 100644 --- a/4-goldberg/4-goldberg.tex +++ b/4-goldberg/4-goldberg.tex @@ -1,4 +1,4 @@ -%version 1.6 +%version 1.8 \input lecnotes.tex @@ -29,7 +29,7 @@ D 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: @@ -53,7 +53,7 @@ Pokud b \:$\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 @@ -78,7 +78,7 @@ Pod \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 diff --git a/5-sortnet/5-sortnet.tex b/5-sortnet/5-sortnet.tex index 01bf212..19b3489 100644 --- a/5-sortnet/5-sortnet.tex +++ b/5-sortnet/5-sortnet.tex @@ -121,7 +121,7 @@ $x_k,x_{k+1 \bmod n},\dots, x_{k+n-1 \bmod n}$ je \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} @@ -139,7 +139,7 @@ posloupnost -- najdeme nejmen 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 diff --git a/7-ac/7-ac.tex b/7-ac/7-ac.tex index 5030f06..aae6d77 100644 --- a/7-ac/7-ac.tex +++ b/7-ac/7-ac.tex @@ -30,8 +30,8 @@ Te \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á. -\:$\(s) =$ index slova $\iota$, které konèí ve stavu $s$, nebo 0, \par -$\(s) =$ nejbli¾¹í vrchol, do kterého se lze z $s$ dostat po zpìtných hranách a $\(v) \ne 0$ (konèí tam slovo). +\:$\(s)$ je index slova $\iota$, které konèí ve stavu $s$ nebo 0. \par +$\(s)$ je nejbli¾¹í vrchol, do kterého se lze z $s$ dostat po zpìtných hranách a $\(v) \ne 0$ (konèí tam slovo). \figure{Graphic2.eps}{Vyhledávací automat -- se zpìtnými hranami}{1.3in} \endlist @@ -40,7 +40,7 @@ $\(s) =$ nejbli \:$s \leftarrow \$ ($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 $\(s) \ne 0 \Rightarrow$ vypí¹eme $\(s)$. +\::Pokud $\(s) \ne 0$: vypí¹eme $\(s)$. \::$v \leftarrow out(s)$. \::Dokud $v \ne 0 $: \:::Vypí¹eme $\(v)$. @@ -68,10 +68,10 @@ Prvn \:Postavíme strom dopøedných hran, $r \leftarrow$ koøen stromu. \:Spoèteme $\(\ast)$ (spoèteme funkci \ 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) = \(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) = \(z(u),c)$ + \endlist} \figure{Graphic100.eps}{$\(v) = \(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á: @@ -87,7 +87,8 @@ Prvn \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 + \).$$ +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 + \).$ +\qed \h{Polynomy a násobení} \>Mìjme dva polynomy definované jako: @@ -117,12 +118,10 @@ $$P(x) = (p_0 + p_2 x^2 + \ldots + p_{n-2}x^{n-2}) + x(p_1 + p_3 x^2 + \ldots + $$ \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 - -