From: Martin Mares Date: Fri, 12 Feb 2010 19:44:20 +0000 (+0100) Subject: Korektury od Martina Jiricky. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=c82394c9f2cba193e6520962305a7b368d8b17b1;p=ads2.git Korektury od Martina Jiricky. --- diff --git a/11-np/11-np.tex b/11-np/11-np.tex index 171e51d..c81d913 100644 --- a/11-np/11-np.tex +++ b/11-np/11-np.tex @@ -273,7 +273,7 @@ na~obvodov (chápeme jako posloupnost $x_1, x_2, \ldots, x_n$), spoèítáme velikost nápovìdy $g(n)$. Víme, ¾e kontrolní algoritmus~$K$ (který kontroluje, zda nápovìda je správnì) je v~P. Vyu¾ijeme -pøedhozí lemma, abychom získali obvod, který pro konkrétní velikost vstupu +pøedchozí lemma, abychom získali obvod, který pro konkrétní velikost vstupu $x$ poèítá to, co kontrolní algoritmus $K$. Na vstupu tohoto obvodu bude $x$ (vstup problému $L$) a~nápovìda~$y$. Na výstupu nám øekne, jestli je nápovìda správná. Velikost vstupu tohoto obvodu bude tedy $p(g(n))$, co¾ je také polynom. @@ -285,7 +285,8 @@ spr \>Pro libovolný problém z~NP tak doká¾eme sestrojit funkci, která pro ka¾dý vstup~$x$ v~polynomiálním èase vytvoøí obvod, který je splnitelný pravì tehdy, kdy¾ odpovìï tohoto problému na vstup $x$ má být \. Tedy libovolný problém z~NP se dá v~polynomiálním èase pøevést na obvodový SAT. -\>Obvodový SAT je v NP triviálnì - ??? staèí topologicky setøídit a pak brát hradla postupnì.??? +\>Obvodový SAT je v NP triviálnì -- staèí si nechat poradit vstup, sí» +topologicky setøídit a v~tomto poøadí poèítat hodnoty hradel. \qed \s{Lemma:} Obvodový SAT se dá pøevést na 3-SAT. diff --git a/12-apx/12-apx.tex b/12-apx/12-apx.tex index aa6fb39..d2583f3 100644 --- a/12-apx/12-apx.tex +++ b/12-apx/12-apx.tex @@ -71,7 +71,7 @@ c_i$. \>Pou¾ijeme dynamické programování. Pøedstavme si problém omezený na~prvních~$k$ pøedmìtù. Oznaème si $A_k(c)$ (kde $0\le c\le C$) minimální hmotnost podmno¾iny, její¾ cena je právì~$c$. Tato $A_k$ spoèteme indukcí podle~$k$: -Pro $k=0$ je urèitì $A_0(0)=0$, $A_0(c)=\infty$ pro $c>0$. Pokud ji¾ známe +Pro $k=0$ je urèitì $A_0(0)=0$, $A_0(c)=infty$ pro $c>0$. Pokud ji¾ známe $A_{k-1}$, spoèítáme $A_k$ následovnì: $A_k(c)$ odpovídá nìjaké podmno¾inì pøedmìtù z~$1,\ldots,k$. V~této podmno¾inì jsme buïto $k$-tý pøedmìt nepou¾ili (a pak je $A_k(c)=A_{k-1}(c)$), nebo pou¾ili a tehdy bude $A_k(c) = @@ -84,7 +84,7 @@ T v~èase $\O(nC)$ pak v¹echny $A_k(c)$. \>Podle $A_n$ snadno nalezneme maximální cenu mno¾iny, která se vejde do~batohu. -To bude nejvìt¹í~$c^*$, pro nì¾ je $A_n(c^*) < \infty$. Jeho nalezení nás stojí +To bude nejvìt¹í~$c^*$, pro nì¾ je $A_n(c^*) \le H$. Jeho nalezení nás stojí èas $\O(C)$. \>A~jak zjistit, které pøedmìty do~nalezené mno¾iny patøí? Upravíme algoritmus, diff --git a/5-addsort/5-addsort.tex b/5-addsort/5-addsort.tex index 9c64855..ed142fc 100644 --- a/5-addsort/5-addsort.tex +++ b/5-addsort/5-addsort.tex @@ -162,7 +162,7 @@ Kompar a~která men¹í. Nevrací v¹ak booleovský výsledek jako bì¾né hradlo, ale má dva výstupy, pøièem¾ na~jednom vrátí men¹í ze~vstupních hodnot a~na~druhém vìt¹í. -Výstupy komparátorù se nevìtví. Nemù¾eme tedy jeden výstup \uv{rozdvojit} a~pøipojit ho na~dva vstupy. (Vìtvení by dokonce ani nemìlo smysl, proto¾e zatímco rozdvojit bychom mohli, slouèit u¾~ne. Pokud tedy chceme aby sí» mìla $n$~vstupù i~$n$~výstupù, rozdvojení stejnì nesmíme provést, i kdybychom jej mìli povolené.) +Výstupy komparátorù se nevìtví. Nemù¾eme tedy jeden výstup \uv{rozdvojit} a~pøipojit ho na~dva vstupy. (Vìtvení by dokonce ani nemìlo smysl, proto¾e zatímco rozdvojit bychom mohli, slouèit u¾~ne. Pokud tedy chceme, aby sí» mìla $n$~vstupù i~$n$~výstupù, rozdvojení stejnì nesmíme provést, i kdybychom jej mìli povolené.) \s{Pøíklad:} {\sl Bubble sort} diff --git a/9-fft/9-fft.tex b/9-fft/9-fft.tex index 0143020..3340759 100644 --- a/9-fft/9-fft.tex +++ b/9-fft/9-fft.tex @@ -46,7 +46,7 @@ plat -- máme-li $A$ i $B$ reprezentované hodnotami v $n \geq 2d+1$ bodech, pak snadno (v $\Theta(n)$) spoèteme takovou reprezentaci $C$. Problémem je, ¾e typicky máme polynom zadaný koeficienty, a~ne hodnotami -v~bodech. Tím pádem potøebujeme nìjaký hodnì rychlý algorimtus (tj. +v~bodech. Tím pádem potøebujeme nìjaký hodnì rychlý algoritmus (tj. rychlej¹í ne¾ kvadratický, jinak bychom si nepomohli oproti hloupému algoritmu) na~pøevod polynomu z jedné reprezentace do druhé a~zase zpìt. @@ -88,7 +88,7 @@ rovnosti $(x_{i})^{2} = (-x_{i})^{2}$). $3 + 4x + 6x^{2} + 2x^{3} + x^{4} + 10x^{5} = (3 + 6x^{2} + x^{4}) + x(4 + 2x^{2} + 10x^{4})$. -Teï nám ov¹em vyvstane problém s~oním párováním -- druhá mocina pøece nemù¾e +Teï nám ov¹em vyvstane problém s~oním párováním -- druhá mocnina pøece nemù¾e být záporná a~tím pádem u¾ v~druhé úrovni rekurze body spárované nebudou. Z~tohoto dùvodu musíme pou¾ít komplexní èísla -- tam druhé mocniny záporné býti mohou. @@ -252,7 +252,7 @@ K~tomu n \s{Definice:} -\>{\I Diskretní Fourierova transformace} $(DFT)$ +\>{\I Diskrétní Fourierova transformace} $(DFT)$ je zobrazení $f: { {\bb C} ^n} \rightarrow { {\bb C} ^n}$, kde $$y=f(x) \equiv \forall j \ y_{j} = \sum \limits ^{n-1}_{k=0} x_{k} \cdot \omega ^{jk}$$ (DFT si lze mimo jiné pøedstavit jako funkci vyhodnocující polynom