]> mj.ucw.cz Git - ads2.git/commitdiff
Opravena prehrsel preklepu, kterych si vsimla Jana Kucerova. Take jsem
authorMartin Mares <mj@ucw.cz>
Sat, 29 Dec 2007 17:30:00 +0000 (18:30 +0100)
committerMartin Mares <mj@ucw.cz>
Sat, 29 Dec 2007 17:30:00 +0000 (18:30 +0100)
pri te prilezitosti prepsal prevod NzMnoziny na SAT.

1-hradla/1-hradla.tex
10-prevody/10-prevody.tex
3-dinic/3-dinic.tex
5-sortnet/5-sortnet.tex
7-ac/7-ac.tex
8-fft/8-fft.tex

index 7c79e04638b2992d1106c814afe2640afc9a9d29..6b75cc111302c2e38a6bb3ad20317d9dfb6fab0e 100644 (file)
@@ -103,7 +103,7 @@ Budeme cht
 \h{Algoritmus základní ¹koly}
 Pøenosy oznaèíme $c_0$ a¾ $c_{n-1}$ v krocích poèítání, dodefinujeme $c_{-1}=0$. Algoritmus probíhá zleva od místa s nejni¾¹í vahou, viz Obrázek 1.7. 
  
-Výsledné èíslo $z_{n}...z_1z_0$ lze tedy vyjádøit pøedpisem: $$z_i=x_i \oplus y_i \oplus c_{i-1},$$ kde $\oplus$ znaèí operaci XOR. Pøenos nastane, pokud je alespoò 1 èíslo jednièka, tedy
+Výsledné èíslo $z_{n}...z_1z_0$ lze tedy vyjádøit pøedpisem: $$z_i=x_i \oplus y_i \oplus c_{i-1},$$ kde $\oplus$ znaèí operaci XOR. Pøenos nastane, pokud jsou alespoò dvì èísla jednièky, tedy
 $$c_i=(x_i \land y_i)\lor((x_i \lor y_i) \land c_{i-1})$$.
 \figure{1_6_hloupe_scitani.eps}{Obrázek 1.7 -- Sèítání}{8cm}
 Bohu¾el na to abychom spoèítali $z_i$ musíme znát hodnotu $c_{i-1}$, tedy mít spoèítané hodnoty pro v¹echny èísla men¹í ne¾ $i$. To dává lineární èasovou slo¾itost. Zamysleme se nad tím jak by se proces sèítání mohl zrychlit.
@@ -137,7 +137,7 @@ D
 \h{Kódování typù chování blokù}
 %\>{\I Sem tabulku prosím :)}
 
-\>Definujeme (a,x):
+\>Definujeme $(a,x)$:
 \itemize\ibull
 \:$(1,*) = <$,
 \:$(0,0) = 0$,
index 286c10078e6a69d8e8ac601049611f694554cb73..b4fc61b8b31685be18b35ea20c0616ed4b3db878 100644 (file)
@@ -18,7 +18,7 @@ Kdy
 Takto iterujeme, dokud to jde. Výsledkem je mno¾ina hran, které patøí do maximálního párování. Tím jsme dané párování nalezli. 
 Hran je polynomiálnì mnoho a skøíòka funguje v polynomiálním èase, tak¾e algoritmus je polynomiální.
 
-\s{Definice:} Jsou-li A, B rozhodovací problémy, pak øíkáme, ¾e A lze redukovat na B ($A \rightarrow B$) $\Leftrightarrow$ existuje funkce $f$ spoèitatelná v polynomiálním èase taková, ¾e pro $\forall x: A(x) = B(f(x))$.
+\s{Definice:} Jsou-li $A$, $B$ rozhodovací problémy, pak øíkáme, ¾e $A$ lze redukovat na $B$ ($A \rightarrow B$) $\Leftrightarrow$ existuje funkce $f$ spoèitatelná v polynomiálním èase taková, ¾e pro $\forall x: A(x) = B(f(x))$.
 
 \s{Pøíklad:} Bipartitní graf $\rightarrow$ Tok v síti.
 Funkce $f$ je funkce, která vezme bipartitní graf a vyrobí z~nìj regulerní sí» (pøidá zdroj, stok, hrany a ohodnocení).
@@ -27,13 +27,13 @@ Funkce $f$ je funkce, kter
 Kdy¾ $A$ lze redukovat na $B$ a $B$ umíme vyøe¹it v èase $\O(\vert $vstup$ \vert^l) = \O(\vert f(x)\vert^l)$
  pro vstup $x: \vert x \vert = n$
 $ \vert f(x)\vert = \O(n^k)$ pro nìjaké $k$,
-B poèítá v~èase $\O(n^{kl})$,
+$A$ poèítá v~èase $\O(n^{kl})$,
 $f$ poèítá v polynomiálním èase $\rightarrow$ mù¾e vydat maximálnì polynomiální výstup.
 
 \s{Pozorování:} Funkce $f$ je:
 \itemize\ibull
 \:reflexivní (úlohu mù¾eme identicky pøevést na tu stejnou), $A \rightarrow A$,
-\:tranzitivní, $A \rightarrow B$ funkcí $f$, $B \rightarrow C$ funkcí $g$, $A \rightarrow C$ slo¾enou funkcí $(f \circ g)$.
+\:tranzitivní, $A \rightarrow B$ funkcí $f$, $B \rightarrow C$ funkcí $g$, $A \rightarrow C$ slo¾enou funkcí $(g \circ f)$.
 \endlist
 
 \h{1. problém: SAT}
@@ -53,7 +53,7 @@ $$ \phi(x, y, \ldots) = (x \lor \lnot y \lor \ldots) \land (\ldots\lor\ldots\lor
 \itemize\ibull
 \:formule je zadána pomocí klauzulí oddìlených $\land$,
 \:ka¾dá klauzule je slo¾ená z literálù oddìlených $\lor$,
-\:ka¾dý literál je slo¾ený z promìnných, nebo negovaných promìnných.
+\:ka¾dý literál je buïto promìnná nebo její negace.
 \endlist 
 
 \>Uká¾eme, ¾e staèí vyøe¹it jednodu¹¹í problém 3-SAT.
@@ -128,10 +128,20 @@ Pokud ano, tak dostaneme seznam prom
 Máme promìnné $v_1, \ldots , v_n$ pro vrcholy.
 
 \itemize\ibull
-\:Pro ka¾dé $(i,j) \in E(G)$ pøidáme klauzuli $(\lnot vi \lor \lnot vj)$.
-\:Prvek matice $x_{i,j} = 1 \Leftrightarrow i$-tý prvek je vrchol $j$, tj. $\forall i,j$, $x_{ij} \Rightarrow v_j$.
-\:$\forall j,i,i^{'}, i\ne i^{'} : x_{ij} \Rightarrow x_{i^{'}j}$.
-\:$\forall i,j,j^{'}, j\ne j^{'} : x_{ij} \Rightarrow x_{ij^{'}}$.
+\:Poøídíme si promìnné $v_1, \ldots, v_n$ odpovídající vrcholùm grafu. Promìnná $v_i$ bude
+  indikovat, zda se $i$-tý vrchol vyskytuje v~nezávislé mno¾inì.
+\:Pro ka¾dou hranu $ij \in E(G)$ pøidáme klauzuli $(\lnot v_i \lor \lnot v_j)$. Tyto klauzule
+  nám ohlídají, ¾e vybraná mno¾ina je vskutku nezávislá.
+\:Je¹tì potøebujeme zkontrolovat, ¾e je mno¾ina dostateènì velká, tak¾e si její prvky
+  oèíslujeme èísly od~1 do~$k$. Oèíslování popí¹eme maticí promìnných $x_{ij}$, pøièem¾
+  $x_{ij}$ bude pravdivá právì tehdy, kdy¾ v~poøadí $i$-tý prvek nezávislé mno¾iny je vrchol~$v_j$.
+\:Pøidáme tedy klauzuje, které nám øeknou, ¾e vybrané do nezávislé mno¾iny jsou právì
+  ty vrcholy, které jsou touto maticí oèíslované: $\forall i,j$, $x_{ij} \Rightarrow v_j$.
+\:Je¹tì potøebujeme zajistit, aby byla v~ka¾dém øádku i sloupci nejvý¹e jedna jednièka:
+  $\forall j,i,i^{'}, i\ne i^{'} : x_{ij} \Rightarrow \lnot x_{i^{'}j}$ a
+  $\forall i,j,j^{'}, j\ne j^{'} : x_{ij} \Rightarrow \lnot x_{ij^{'}}$.
+\:A~nakonec si ohlídáme, aby v~ka¾dém øádku byla alespoò jedna jednièka, klauzulí $\forall i :
+  x_{i1} \lor x_{i2} \lor \ldots \lor x_{in}$.
 \endlist
 
 
index 162160242d092f7a1198c6cfa3a046241fd73ade..6a4f106d2d38fcf009abcac0b5ec584a33308003 100644 (file)
@@ -59,7 +59,7 @@ Tato v
 \algo
 \:$f\leftarrow$ nulový tok.
 \:Sestrojíme sí» rezerv $R$, vynecháme hrany s nulovou rezervou.
-\:$l\leftarrow$ délka nejkrat¹í cesty $z\rightarrow s$ cesty v $R$.
+\:$l\leftarrow$ délka nejkrat¹í cesty $z\rightarrow s$ v~$R$.
 \:Kdy¾ $l=\infty$, tak skonèíme.
 \:Sestrojíme proèi¹tìnou sí» $C$, a to následujícím zpùsobem:%\foot{Ponecháme vrcholy a hrany z $R$, které le¾í na nejkrat¹ích $z\rightarrow s$ cestách}
 \::Spustíme BFS\foot{Breadth-First Search, standardní prohledávání do ¹íøky.} algoritmus ze zdroje.
@@ -97,13 +97,13 @@ P
 
 Doká¾eme si, ¾e poèet fází je men¹í nebo roven $N$. Algoritmus se ukonèí, pokud $l>N$, proto¾e pak u¾ neexistuje nejkrat¹í $z\rightarrow s$ cesta, pro¹li jsme v¹echny vrcholy.
 
-\s{Lemma:} Pøi ka¾dé fázi $l$ vzroste alespoò o~jedna.
+\s{Lemma:} Pøi ka¾dé fázi vzroste $l$ alespoò o~jedna.
 
 \proof
 Uva¾me sí» $R$, rozdìlenou na~vrstvy, je¹tì pøed~proèi¹tìním. Po~proèi¹tìní nìkteré hrany zmizí. Pøibýt\foot{Pøibudou tak, ¾e po~hranì s~nulovým tokem po¹leme nìjaký tok, v~opaèném smìru v~síti rezerv vytvoøíme z~nulové hrany nenulovou.} mohou jen zrcadlové 
 protìj¹ky ji¾ existujících hran.
 
-Uva¾me cestu $P$ délky $< l$ ze $z\rightarrow s$ a novou hranu $e$ vzniklou pøi~poslání toku po~hranì s~nulovým tokem:
+Uva¾me cestu $P$ délky $l$ nebo men¹í ze $z\rightarrow s$ a novou hranu $e$ vzniklou pøi~poslání toku po~hranì s~nulovým tokem:
 \numlist\nalpha
 \:Hrana $e \not\in P\Rightarrow$ zablokování, taková cesta neexistuje.
 \:Hrana $e \in P\Rightarrow$ délka $ > l$, proto¾e hrana $e$ vede z nìjakého vrcholu ve vrstvì $C_i$ do vrcholu ve vrstvì $C_{i-1}$.
index 5a6d994122801e3760cfcd6eaa61ba29e714fe18..01bf212d80dde126955580347e312e9928246176 100644 (file)
@@ -161,6 +161,7 @@ posloupnosti tedy budou zrotovan
 bitoniènosti se nic nezmìní.
 
 (ii) Plyne z~definice separátoru.
+\qed
 
 \medskip
 \centerline{\epsfbox{sortnet.7}}
index 2c7afd6dc13cd67b16401482638a8f57dd667f78..5030f062011959209be540243fe568a0078b4810 100644 (file)
@@ -30,7 +30,7 @@ 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á.
-\:$\<slovo>(s) =$ index slova $\iota$, které konèí ve stavu $s$, nebo $\emptyset$, \par
+\:$\<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).
 \figure{Graphic2.eps}{Vyhledávací automat -- se zpìtnými hranami}{1.3in}
 \endlist
@@ -94,25 +94,26 @@ Algoritmus A-C najde v
 $$P(x) = \sum_{j=0}^{n-1} p_j x^j, \quad Q(x) = \sum_{j=0}^{n-1} q_j x^j.$$
 Násobení dvou polynomù $R=P \cdot Q$ je ekvivalentní s operací $R = \sum_{j,k} p_j q_k x^{j+k}$. Pøièem¾ na vypoèítání èlenu $r_l = \sum_{j=0}^l p_j q_{l-j}$ pou¾ijeme $\Theta(n)$ operací, tedy na spoèítaní celého polynomu $R$ potøebujeme $\Theta(n^2)$ operací.
 
-Podíváme se na jinou mo¾nost, jak tento problém øe¹it. Poslou¾í nám k~tomu následující vìta o jednoznaènosti existence polynomu nejvý¹e $k$-tého stupnì, pokud známe hodnoty v alespoò $k$ bodech.
+Podíváme se na jinou mo¾nost, jak tento problém øe¹it. Poslou¾í nám k~tomu následující vìta o jednoznaèné existenci polynomu nejvý¹e $k$-tého stupnì, pokud známe hodnoty
+ve~více ne¾ $k$ bodech.
 
 \s{Vìta:} Jsou-li $x_0, \ldots, x_k \in \bb{R} $ navzájem ruzná a $y_0, \ldots, y_k \in \bb{R}$, pak $\exists !$ polynom $P$ stupnì $\leq k : \forall j: P(x_j) = y_j$.
 
 \figure{polynom.eps}{Polynom}{2in}
 
 \ss{Plán:}
-\>Nech» $k=2n-1$, zvolíme $x_0, \ldots, x_k$  libolná, ale rùzná a spoèteme $P(x_0), \ldots, P(x_k)$ a $P(y_0), \ldots, P(y_k)$.
+\>Nech» $k=2n-1$, zvolíme $x_0, \ldots, x_k$  libolná, ale rùzná a spoèteme $P(x_0), \ldots, P(x_k)$ a $Q(x_0), \ldots, Q(x_k)$.
 Poté $\forall j: y_j=P(x_j)Q(x_j)$
 musíme najít polynom $R$ stupnì $\leq k: \forall j: R(x_j)=y_j$.
 
 \s{Vyhodnocování polynomù} (metodou Rozdìl a panuj)
 
 \>BÚNO $n=2^m$. Uva¾me polynom:
-$$P(x_j) = p_0 x^0 + p_1 x^1 + \ldots + p_{n-1} x^{n-1}.$$
+$$P(x) = p_0 x^0 + p_1 x^1 + \ldots + p_{n-1} x^{n-1}.$$
 Tento polynom si mu¾eme rozdìlit, na dvì èásti. V~levé budeme mít èleny se sudými exponenty a v~pravé budou èleny s exponenty lichými:
-$$P(x_j) = (p_0 + p_2 x^2 + \ldots + p_{n-2}x^{n-2}) + (p_1 x^1 + p_3 x^3 + \ldots + p_{n-1} x^{n-1}).$$
+$$P(x) = (p_0 + p_2 x^2 + \ldots + p_{n-2}x^{n-2}) + (p_1 x^1 + p_3 x^3 + \ldots + p_{n-1} x^{n-1}).$$
 Z pravé strany mù¾eme vytknout $x$ a dostaneme:
-$$P(x_j) = (p_0 + p_2 x^2 + \ldots + p_{n-2}x^{n-2}) + x(p_1 + p_3 x^2 + \ldots + p_{n-1} x^{n-2})$$
+$$P(x) = (p_0 + p_2 x^2 + \ldots + p_{n-2}x^{n-2}) + x(p_1 + p_3 x^2 + \ldots + p_{n-1} x^{n-2})$$
 $$ \vdots $$
 $$P(x) = L(x^2) + xN(x^2),$$
 $$P(-x) = L(x^2) - xN(x^2),$$
index 55aac083fbd3e900cbb5b89256e4c46a80d3e200..9f182dccafc5abb446fc8a51fe03934dd49e4d40 100644 (file)
@@ -35,8 +35,8 @@ Polynom $P$ rozlo
 
 $P(x) = p_{0}x^{0} + p_{2}x^{2} + \ldots + p_{n-2}x^{n-2} + p_{1}x^{1} + p_{3}x^{3} + \ldots + p_{n-1}x^{n-1}$
 
-$S(x^{2}) = p_{0}x^{0} + p_{2}x^{2} + ... + p_{n - 2}x^{n - 2}$,
-$L(x^{2}) = p_{1}x^{1} + p_{3}x^{3} + ... + p_{n - 1}x^{n - 1}$
+$S(x^{2}) = p_{0}x^{0} + p_{2}x^{2} + \ldots + p_{n - 2}x^{n - 2}$,
+$L(x^{2}) = p_{1}x^{1} + p_{3}x^{3} + \ldots + p_{n - 1}x^{n - 1}$
 
 \>Tak¾e obecnì $P(x) = S(x^{2}) + xL(x^{2})$ a $P(-x) = S(x^{2}) - xL(x^{2})$.
 Jinak øeèeno, vyhodnocování $P(x)$ v $n$ bodech se nám smrskne na vyhodnocení $S(x)$ a $L(x)$ (oba mají polovièní stupeò ne¾ $P(x)$) v $n/2$ bodech (proto¾e $(x_{i})^{2} = (-x_{i})^{2}$).