]> mj.ucw.cz Git - ads2.git/commitdiff
Prevody: Predelan i zbytek kapitoly
authorMartin Mares <mj@ucw.cz>
Fri, 23 Dec 2011 22:32:44 +0000 (23:32 +0100)
committerMartin Mares <mj@ucw.cz>
Fri, 23 Dec 2011 22:32:44 +0000 (23:32 +0100)
8-prevody/8-prevody.tex
8-prevody/p-np.eps [deleted file]
8-prevody/p-np.svg [deleted file]
8-prevody/prevody.eps
8-prevody/prevody.svg

index e53730d3d82cab6ec1a3090d6fd033fffd74cf61..9d82c7e9f39bfa1b09a48f6e492e66130900cdc8 100644 (file)
@@ -6,6 +6,10 @@
 \def\inp{\s{Vstup problému:} }
 \def\outp{\s{Výstup problému:} }
 
+\def\cc#1{\hbox{\setfonts[CMSans/]\bf #1}}
+\def\P{\cc{P}}
+\def\NP{\cc{NP}}
+
 V¹echny úlohy, které jsme zatím potkali, jsme umìli vyøe¹it algoritmem
 s~polynomiální èasovou slo¾itostí. V~prvním pøiblí¾ení mù¾eme øíci, ¾e
 polynomialita docela dobøe vystihuje praktickou pou¾itelnost algoritmu.%
@@ -374,7 +378,7 @@ jednou prom
 
 Uva¾ujme následující konfiguraci:
 
-\fig{3d.eps}{4cm}
+\fig{3d.eps}{6cm}
 
 \>V~ní se nacházejí 4~zvíøátka ($z_1$ a¾ $z_4$), 2~kluci ($k_1$ a $k_2$),
 2~dívky ($d_1$ a $d_2$) a 4~trojice ($A$, $B$, $C$ a~$D$). Zatímco zvíøátka
@@ -429,169 +433,188 @@ Uk
 Pøevod v~opaèném smìru ponecháme jako cvièení, mù¾ete ho provést podobnì,
 jako jsme na SAT pøevádìli nezávislou mno¾inu.
 
-\figure{prevody.eps}{Pøevody mezi problémy}{3in}
-
-\h{NP-úplné problémy}
-
-Dosud jsme zkoumali problémy, které se nás ptaly na to, jestli nìco existuje.
-Napøíklad jsme dostali formuli a problém splnitelnosti se nás ptal, zda
-existuje ohodnocení promìnných takové, ¾e formule platí. Nebo v~pøípadì
-nezávislých mno¾in jsme dostali graf a èíslo $k$ a ptali jsme se, jestli
-v~grafu existuje nezávislá mno¾ina, která obsahuje alespoò~$k$ vrcholù.
-Tyto otázky mìly spoleèné to, ¾e kdy¾ nám nìkdo napovìdìl nìjaký objekt, umìli
-jsme efektivnì øíci, zda je to ten, který hledáme. Napøíklad pokud dostaneme
-ohodnocení promìnných logické formule, staèí jen dosadit a spoèítat, kde
-formule dá \<true> nebo \<false>. Zjistit, ¾e nìjaký objekt je ten, který
-hledáme, umíme efektivnì. Tì¾ké na tom je takový objekt najít. Co¾ vede
-k~definici obecných vyhledávacích problémù, kterým se øíká tøída problémù NP.
-Nadefinujeme si ji poøádnì, ale nejdøíve zaèneme tro¹ièku jednodu¹¹í tøídou.
-
-\s{Definice:} P je {\I tøída rozhodovacích problémù}, které jsou øe¹itelné
-v~polynomiálním èase. Jinak øeèeno, problém
-$L \in {\rm P}  \Leftrightarrow  \exists $ polynom $f$ a~$\exists$ algoritmus~$A$
-takový, ¾e $\forall x: L(x)=A(x)$ a $A(x)$ dobìhne v~èase $\O(f(x))$.
-
-Tøída P tedy odpovídá tomu, o èem jsme se shodli, ¾e umíme efektivnì øe¹it.
-Nadefinujme nyní tøídu NP:
-
-\s{Definice:} NP je {\I tøída rozhodovacích problémù} takových, ¾e $L \in {\rm NP}$ právì tehdy, kdy¾ $\exists $ problém
-$K\in{\rm P}$ a $\exists$  polynom  $g$ takový, ¾e pro
-$\forall x$ platí $L(x)=1  \Leftrightarrow  \exists $ nápovìda $ y: \vert y \vert \leq g(\vert x \vert)$ a souèasnì $K(x,y)=1$.
+Jak je vidìt z~následujícího schématu, ukázali jsme, ¾e v¹echny problémy,
+které jsme zkoumali, jsou navzájem pøevoditelné.
 
-\s{Pozorování:} Splnitelnost logických formulí je v~NP. Staèí si toti¾ nechat napovìdìt, jak
-ohodnotit jednotlivé promìnné a pak ovìøit, jestli je formule splnìna. Nápovìda je polynomiálnì
-velká (dokonce lineárnì), splnìní zkontrolujeme také v~lineárním èase. Odpovíme tedy ano právì
-tehdy, existuje-li nápovìda, která nás pøesvìdèí, èili pokud je formule splnitelná.
+\figure{prevody.eps}{Problémy a pøevody mezi nimi}{3in}
 
-\s{Pozorování:} Tøída P le¾í uvnitø NP.
-V~podstatì øíkáme, ¾e kdy¾ máme problém, který umíme øe¹it v~polynomiálním èase
-bez nápovìdy, tak to zvládneme v~polynomiálním èase i s~nápovìdou.
-
-Problémy z minulé pøedná¹ky jsou v¹echny v NP (napø. pro nezávislou
-mno¾inu je onou nápovìdou pøímo mno¾ina vrcholù deklarující nezávislost),
-o jejich pøíslu¹nosti do P ale nevíme nic.
-Brzy uká¾eme, ¾e to jsou v jistém smyslu nejtì¾¹í problémy v~NP.
-Nadefinujme si:
-
-\s{Definice:} Problém $L$ je NP-{\I tì¾ký} právì tehdy, kdy¾ je na~nìj pøevoditelný
-ka¾dý problém z~NP (viz definici pøevodù z minulé pøedná¹ky).
-
-Rozmyslete si, ¾e pokud umíme øe¹it nìjaký NP-tì¾ký problém v~polynomiálním èase,
-pak umíme vyøe¹it v~polynomiálním èase v¹e v~NP, a tedy ${\rm P}={\rm NP}$.
-
-My se budeme zabývat problémy, které jsou NP-tì¾ké a samotné jsou v~NP. Takovým problémùm se øíká NP-úplné.
+\h{NP-úplné problémy}
 
-\s{Definice:} Problém $L$ je NP-{\I úplný} právì tehdy, kdy¾ $L$ je NP-tì¾ký a $L \in {\rm NP}$.
+V¹echny problémy, které jsme zatím zkoumali, mìly jednu spoleènou vlastnost.
+©lo v~nich toti¾ o~to, zda existuje nìjaký objekt. Napøíklad splòující ohodnocení
+formule nebo klika v~grafu. Kdykoliv nám pøitom nìkdo takový objekt uká¾e,
+umíme snadno ovìøit, ¾e má po¾adovanou vlastnost. Ov¹em najít ho u¾ tak
+snadné není. Podobnì se chovají i mnohé dal¹í \uv{vyhledávací problémy},
+pojïme se na nì tedy podívat obecnìji.
+
+\s{Definice:} $\P$ je tøída\foot{Formálnì vzato je to mno¾ina, ale v~teorii slo¾itosti
+se pro mno¾iny problémù v¾il název {\I tøídy.}}
+rozhodovacích problémù, které jsou øe¹itelné v~polynomiálním èase. Jinak øeèeno, problém~$L$
+le¾í v~$\P$ právì tehdy, kdy¾ existuje nìjaký algoritmus~$A$ a polynom~$f$
+takové, ¾e pro ka¾dý vstup~$x$ algoritmus~$A$ dobìhne v~èase nejvý¹e $f(\vert x\vert)$
+a vydá výsledek $A(x)=L(x)$.
+
+Tøída $\P$ tedy zachycuje na¹i pøedstavu o~efektivnì øe¹itelných problémech.
+Nyní definujeme tøídu~$\NP$, která bude odpovídat na¹i pøedstavì vyhledávacích
+problémù.
+
+\s{Definice:} $\NP$ je tøída rozhodovacích problémù, v~ní¾ problém~$L$ le¾í právì
+tehdy, pokud existuje nìjaký problém~$K\in\P$ a polynom~$g$, pøièem¾ pro ka¾dý
+vstup~$x$ je $L(x)=1$ právì tehdy, pokud pro nìjaký øetìzec~$y$ délky nejvý¹e
+$g(\vert y\vert)$ platí $K(x,y)=1$.%
+\foot{Rozhodovací problémy mají na vstupu øetìzec bitù. Tak jaképak $x,y$?
+Máme samozøejmì na~mysli nìjaké binární kódování této dvojice.}
+
+Co to znamená? Algoritmus~$K$ øe¹í problém~$L$, ale kromì vstupu~$x$ má k~dispozici
+je¹tì polynomiálnì dlouhou {\I nápovìdu~$y$.} Pøitom má platit, ¾e je-li $L(x)=1$,
+musí existovat alespoò jedna nápovìda, kterou algoritmus~$K$ schválí. Pokud ov¹em
+$L(x)=0$, nesmí ho pøesvìdèit ¾ádná nápovìda.
+
+Jinými slovy~$y$ je jakýsi {\I certifikát,} který stvrzuje kladnou odpovìï,
+a problém~$K$ má za úkol certifikáty kontrolovat. Pro kladnou odpovìï musí
+existovat alespoò jeden schválený certifikát, pro zápornou musí být v¹echny
+certifikáty odmítnuty.
+
+\s{Pozorování:} Splnitelnost logických formulí je v~$\NP$. Staèí si toti¾ nechat napovìdìt, jak
+ohodnotit jednotlivé promìnné, a pak ovìøit, je-li formule splnìna. Nápovìda je polynomiálnì
+velká (dokonce lineárnì), splnìní zkontrolujeme také v~lineárním èase. Podobnì to mù¾eme to
+dokázat i o~ostatních rozhodovacích problémech, se kterými jsme se zatím potkali.
+
+\s{Pozorování:} Tøída $\P$ le¾í uvnitø $\NP$.
+Pokud toti¾ problém umíme øe¹it v~polynomiálním èase bez nápovìdy, tak to zvládneme
+v~polynomiálním èase i s~nápovìdou. Algoritmus~$K$ tedy bude ignorovat nápovìdy
+a odpovìï spoèítá pøímo ze~vstupu.
+
+\s{Otázka:} Jsou tøídy $\P$ a~$\NP$ rùzné? Na to se teoretiètí informatici sna¾í
+odpovìdìt u¾ od 70. let minulého století a postupnì se z~toto stal asi vùbec nejslavnìj¹í
+otevøený problém informatiky.
+
+Napøíklad o~¾ádném z~na¹ich problémù nevíme, zda se nachází v~$\P$.
+Brzy uvidíme, ¾e to jsou v~jistém smyslu nejtì¾¹í problémy v~$\NP$.
+
+\s{Definice:} Problém $L$ nazveme $\NP$-{\I tì¾ký}, je-li na~nìj pøevoditelný
+ka¾dý problém z~$\NP$. Pokud navíc $L\in\NP$, budeme øíkat, ¾e je $\NP$-{\I úplný.}
+
+NP-úplné problémy jsou tedy nejtì¾¹ími problémy v~$\NP$, aspoò v~na¹em uspoøádání
+pøevoditelností.
+
+\s{Lemma:} Pokud nìjaký $\NP$-tì¾ký problém~$L$ le¾í v~$\P$, pak $\P=\NP$.
 
-NP-úplné problémy jsou tedy ve~své podstatì nejtì¾¹í problémy, které le¾í v~NP.
-Kdybychom umìli vyøe¹it nìjaký NP-úplný problém v~polynomiálním èase, pak
-v¹echno v~NP je øe¹itelné v~polynomiálním èase. Bohu¾el to, jestli nìjaký
-NP-úplný problém lze øe¹it v~polynomiálním èase, se neví. Otázka, jestli
-${\rm P}={\rm NP}$, je asi nejznámìj¹í otevøený problém v~celé teoretické
-informatice.
+\proof
+Ji¾ víme, ¾e $\P\subseteq\NP$, tak¾e staèí dokázat opaènou nerovnost. Vezmìme
+libovolný problém~$A\in\NP$. Z~úplnosti problému~$L$ víme, ¾e $A$ lze pøevést
+na~$L$. Ov¹em problémy pøevoditelné na nìco z~$\P$ jsou samy také v~$\P$.
+\qed
 
-Kde ale nìjaký NP-úplný problém vzít? K~tomu se nám bude velice hodit následující vìta:
+Z~definice $\NP$-úplnosti ale vùbec není jasné, ¾e nìjaký $\NP$-úplný problém doopravdy
+existuje. Odpovìï je pøekvapivá:
 
-\s{Vìta (Cookova):} SAT je NP-úplný.
+\s{Vìta (Cookova):} SAT je $\NP$-úplný.
 
-\>Dùkaz je znaènì technický, pøibli¾nì ho naznaèíme pozdìji. Pøímým dùsledkem
-Cookovy vìty je, ¾e cokoli v~NP je pøevoditelné na SAT.
-K dokazování NP-úplnosti dal¹ích problémù pou¾ijeme následující vìtièku:
+Dùkaz této vìty je znaènì technický a alespoò v~hrubých rysech ho pøedvedeme
+v~závìru teto kapitoly. Jakmile ale máme jeden $\NP$-úplný problém, mù¾eme velice
+snadno dokazovat i $\NP$-úplnost dal¹ích:
 
-\s{Vìtièka:} Pokud problém $L$ je NP-úplný a $L$ se dá pøevést na nìjaký problém $M\in{\rm NP}$, pak $M$ je také NP-úplný.
+\s{Lemma:} Mìjme dva problémy $L,M\in\NP$. Pokud $L$ je $\NP$-úplný a $L\rightarrow M$,
+pak $M$ je také $\NP$-úplný.
 
 \proof
-Tuto vìtièku staèí dokázat pro NP-tì¾kost, NP-úplnost plyne okam¾itì z~toho, ¾e
-problémy jsou NP-tì¾ké a le¾í v~NP (podle pøedpokladu).
-
-Víme, ¾e $L$ se dá pøevést na~$M$ nìjakou funkcí~$f$. Jeliko¾ $L$ je NP-úplný,
-pak pro ka¾dý problém $Q\in{\rm NP}$ existuje nìjaká funkce~$g$, která pøevede
-$Q$ na~$L$. Staèí tedy slo¾it funkci~$f$ s~funkcí~$g$, èím¾ získáme funkci pracující
-opìt v~polynomiálním èase, která pøevede~$Q$ na~$M$. Ka¾dý problém z~NP se tedy
-dá pøevést na problém~$M$.
+Jeliko¾ $M$ le¾í v~$\NP$, staèí o~nìm dokázat, ¾e je $\NP$-tì¾ký, tedy ¾e na nìj
+lze pøevést libovolný problém z~$\NP$.
+Uva¾me tedy nìjaký problém $Q\in\NP$. Jeliko¾ $L$ je~$\NP$-úplný, musí platit
+$Q\rightarrow L$. Pøevoditelnost je ov¹em tranzitivní, tak¾e z~$Q\rightarrow L$
+a $L\rightarrow M$ plyne $Q\rightarrow M$.
 \qed
 
 \s{Dùsledek:} Cokoliv, na co jsme umìli pøevést SAT, je také NP-úplné.
 Napøíklad nezávislá mno¾ina, rùzné varianty SATu, klika v~grafu~\dots
 
-Jak taková tøída NP vypadá? Pøedstavme si v¹echny problémy tøídy NP, jakoby seøazené
-shora dolu podle obtí¾nosti problémù (tedy navzdor gravitaci), kde porovnání dvou
-problémù urèuje pøevoditelnost (viz obrázek).
+\s{Dva mo¾né svìty:} Jestli je $\P=\NP$ nevíme a nejspí¹ je¹tì dlouho nebudeme
+vìdìt. Nechme se ale na~chvíli uná¹et fantazií a zkusme si pøedstavit, jak by
+vypadaly svìty, v~nich¾ platí jedna nebo druhá mo¾nost:
 
-\figure{p-np.eps}{Struktura tøídy NP}{2.5cm}
-
-Obecnì mohou nastat dvì situace, proto¾e nevíme, jestli ${\rm P}={\rm NP}$.
-Jestli ano, pak v¹echno je jedna a ta samá tøída. To by bylo v nìkterých
-pøípadech nepraktické, napø. ka¾dá ¹ifra by byla jednodu¹e rozlu¹titelná.
-\foot{Poznámka o ¹ifrách -- libovolnou funkci vyèíslitelnou v polynomiálním
-èase bychom umìli v polynomiálním èase také invertovat.}
-Jestli ne, NP-úplné problémy urèitì nele¾í v P, tak¾e P a NP-úplné problémy
-jsou dvì disjunktní èásti NP. Také se dá dokázat (to dìlat nebudeme, ale je
-dobré to vìdìt), ¾e je¹tì nìco le¾í mezi nimi, tedy ¾e existuje problém, který
-je v~NP, není v~P a není NP-úplný (dokonce je takových problémù nekoneènì mnoho,
-v nekoneènì tøídách).
+\itemize\ibull
+\:$\P=\NP$ -- to je na první pohled idylický svìt, v~nìm¾ jde ka¾dý vyhledávací
+  problém vyøe¹it v~polynomiálním èase, nejspí¹ tedy i prakticky efektivnì.
+  Má to i své stinné stránky: napøíklad jsme pøi¹li o~ve¹keré efektivní ¹ifrování
+  -- rozmyslete si, ¾e pokud umíme vypoèítat nìjakou funkci v~polynomiálním èase,
+  umíme efektivnì spoèítat i její inverzi.
+\:$\P\ne\NP$ -- tehdy jsou $\P$ a $\NP$-úplné dvì disjunktní tøídy.
+  SAT a ostatní $\NP$-úplné problémy nejsou øe¹itelné v~polynomiálním
+  èase. Je ale stále mo¾né, ¾e aspoò na nìkteré z~nich existují prakticky pou¾itelné algoritmy,
+  tøeba o~slo¾itosti $\Theta((1+\varepsilon)^n)$ nebo $\Theta(n^{\log n/100})$.
+  Ví se, ¾e tøída $\NP$ by pak obsahovala i problémy, které le¾í \uv{mezi}
+  $\P$ a $\NP$-úplnými.
+\endlist
 
-\s{Katalog NP-úplných problémù}
+\h{Katalog NP-úplných problémù}
 
-Uká¾eme si nìkolik základních NP-úplných problémù. O~nìkterých jsme to dokázali
-na~minulé pøedná¹ce, o~dal¹ích si to doká¾eme nyní, zbylým se na~zoubek podíváme
-na~cvièeních.
+Pokud se setkáme s~problémem, který neumíme zaøadit do~$\P$, hodí se vyzkou¹et,
+zda je $\NP$-úplný. K~tomu se hodí mít alespoò základní zásobu \uv{uèebnicových}
+$\NP$-úplných problémù, abychom si mohli vybrat, z~èeho pøevádìt. Uká¾eme tedy
+katalog nìkolika nejbì¾nìj¹ích $\NP$-úplných problémù. O~nìkterých jsme to
+dokázali bìhem této kapitoly, u~ostatních alespoò naznaèíme, jak na nì.
 
+\s{Standardní NP-úplné problémy:}
 \itemize\ibull
-\:{\I logické:}
+\:{\I Logické:}
   \itemize\ibull
     \:SAT (splnitelnost logických formulí v~CNF)
     \:3-SAT (ka¾dá klauzule obsahuje max.~3 literály)
-    \:3,3-SAT (a navíc ka¾dá promìnná se vyskytuje nejvý¹e tøikrát)
-    \:SAT pro obecné formule (nejen CNF)
-    \:Obvodový SAT (není to formule, ale obvod)
+    \:3,3-SAT (a navíc ka¾dá promìnná se vyskytuje nejvý¹e~$3\times$)
+    \:SAT pro obecné formule (nejen CNF; uká¾eme ní¾e)
+    \:Obvodový SAT (místo formule booleovský obvod; viz ní¾e)
   \endlist
-\:{\I grafové:}
+\:{\I Grafové:}
   \itemize\ibull
     \:Nezávislá mno¾ina (existuje mno¾ina alespoò~$k$ vrcholù taková, ¾e ¾ádné dva nejsou propojeny hranou?)
     \:Klika (existuje úplný podgraf na~$k$ vrcholech?)
-    \:3D párování (tøi mno¾iny se zadanými trojicemi, existuje taková mno¾ina disjunktních trojic, ve~které jsou v¹echny prvky?)
-    \:Barvení grafu (lze obarvit vrcholy $k$~barvami tak, aby vrcholy stejné barvy nebyly nikdy spojeny hranou? NP-úplné u¾ pro~$k=3$)
-    \:Hamiltonovská cesta (cesta obsahující v¹echny vrcholy [právì jednou])
-    \:Hamiltonovská kru¾nice (kru¾nice, která nav¹tíví v¹echny vrcholy [právì jednou])
+    \:3D-párování (tøi mno¾iny se zadanými trojicemi, existuje taková mno¾ina disjunktních trojic, ve~které jsou v¹echny prvky právì jednou?)
+    \:Barvení grafu (lze obarvit vrcholy $k$~barvami tak, aby vrcholy stejné barvy nebyly nikdy spojeny hranou? $\NP$-úplné u¾ pro~$k=3$)
+    \:Hamiltonovská cesta (cesta obsahující v¹echny vrcholy)
+    \:Hamiltonovská kru¾nice (opìt obsahuje v¹echny vrcholy)
   \endlist
-\:{\I èíselné:}
+\:{\I Èíselné:}
   \itemize\ibull
-    \:Batoh (nejjednodu¹¹í verze: dána mno¾ina èísel, zjistit, zda existuje podmno¾ina se zadaným souètem)
-       \:Batoh -- optimalizace (podobnì jako u pøedchozího problému, ale místo mno¾iny èísel máme mno¾inu
-               pøedmìtù s vahami a cenami, chceme co nejdra¾¹í podmno¾inu její¾ váha nepøesáhne zadanou kapacitu
+    \:Batoh (nejjednodu¹¹í verze: má daná mno¾ina èísel podmno¾inu s~daným souètem?)
+    \:Batoh -- optimalizace (podobnì jako u pøedchozího problému, ale místo mno¾iny èísel máme mno¾inu
+               pøedmìtù s~vahami a cenami, chceme co nejdra¾¹í podmno¾inu, její¾ váha nepøesáhne zadanou kapacitu
                batohu)
-    \:Loupe¾níci (lze rozdìlit danou mno¾inu èísel na~dvì podmno¾iny se stejným souètem)
-    \:$Ax=b$ (soustava celoèíslených lineárních rovnic; $x_i$ mohou být pouze 0 nebo 1; NP-úplné i pokud $A_{ij}\in\{0,1\}$ a $b_i\in\{0,1\}$)
-    \:Celoèíselné lineární programování (existuje vektor nezáporných celoèísených $x$ takový, ¾e $Ax \leq b$ ?)
+    \:Dva loupe¾níci (lze rozdìlit danou mno¾inu èísel na~dvì podmno¾iny se stejným souètem?)
+    \:${\bf Ax}={\bf b}$ (soustava celoèíselných lineárních rovnic; je dána matice~${\bf A}\in\{0,1\}^{m\times n}$
+               a vektor~${\bf b}\in\{0,1\}^m$, existuje vektor~${\bf x}\in\{0,1\}^n$ takový, ¾e ${\bf Ax}={\bf b}$?)
   \endlist
 \endlist
 
 \h{Náznak dùkazu Cookovy vìty}
 
-Abychom mohli budovat teorii NP-úplnosti, potøebujeme alespoò jeden problém,
-o kterém doká¾eme, ¾e je NP-úplný, z definice. Cookova vìta øíká o NP-úplnosti
-SAT-u, ale nám se to hodí dokázat o tro¹ku jiném problému -- {\I obvodovém SAT-u}.
+Zbývá dokázat Cookovu vìtu. Technické detaily si odpustíme, ale aspoò naèrtneme
+základní my¹lenku dùkazu.
+
+Potøebujeme tedy dokázat, ¾e SAT je $\NP$-úplný, a to z~definice. Uká¾eme to
+ale nejprve pro jiný problém, pro takzvaný {\I obvodový SAT.} V~nìm máme na
+vstupu booleovský obvod (hradlovou sí») s~jedním výstupem a ptáme se, zda
+jí mù¾eme pøivést na vstupy takové hodnoty, aby vydala výsledek~1.
 
-\>{\I Obvodový SAT} je splnitelnost, která nepracuje s~formulemi, ale s~booleovskými
-obvody (hradlovými sítìmi). Ka¾dá formule se dá pøepsat do booleovského obvodu,
-který ji poèítá, tak¾e dává smysl zavést splnitelnost i pro obvody. Na¹e obvody
-budou mít nìjaké vstupy a~jenom jeden výstup. Budeme se ptát, jestli se vstupy
-tohoto obvodu dají nastavit tak, abychom na výstupu dostali \<true>.
+To je obecnìj¹í ne¾ SAT pro formule (dokonce i neomezíme-li formule na CNF),
+proto¾e ka¾dou formuli mù¾eme pøelo¾it na lineárnì velký obvod. (Platí i opaènì,
+¾e ka¾dému obvodu s~jedním výstupem mù¾eme pøiøadit ekvivalentní formuli,
+ale ta mù¾e být a¾ exponenciálnì velká.)
 
-\>Nejprve doká¾eme NP-úplnost {\I obvodového SAT-u} a~pak uká¾eme, ¾e se dá
-pøevést na obyèejný SAT v~CNF. Tím bude dùkaz Cookovy vìty hotový. Zaènìme
-s pomocným lemmatem.
+Nejprve tedy doká¾eme $\NP$-úplnost obvodového SATu a~pak ho pøevedeme na
+obyèejný SAT v~CNF. Tím bude dùkaz Cookovy vìty hotový. Zaènìme lemmatem,
+v~nìm¾ bude koncentrováno v¹e technické.
 
-\s{Lemma:} Nech» $L$ je problém v P. Potom existuje polynom $p$ a algoritmus,
-který pro $\forall n \ge 0$ spoète v èase $p(n)$ hradlovou sí» $Bn$ s $n$ vstupy
-a 1 výstupem takovou, ¾e $\forall x \in \{ 0, 1 \}^n : Bn(x) = L(x)$.
+\s{Lemma:} Nech» $L$ je problém le¾ící v~$\P$. Potom existuje polynom~$p$ a algoritmus,
+který pro ka¾dé~$n$ sestrojí v~èase $p(n)$ hradlovou sí» $B_n$ s~$n$~vstupy
+a jedním výstupem, která øe¹í~$L$. Tedy pro v¹echny øetìzce~$x$ musí platit
+$B_n(x)=L(x)$.
 
 \proof
 Náznakem. Na základì zku¹eností z Principù poèítaèù intuitivnì chápeme poèítaèe
 jako nìjaké slo¾ité booleovské obvody, jejich¾ stav se mìní v~èase. Uva¾me tedy
-nìjaký problém $L \in {\rm P}$ a polynomiální algoritmus, který ho øe¹í. Pro vstup
-velikosti~$n$ dobìhne v~èase~$T$ polynomiálním v~$n$ a spotøebuje $\O(T)$ bunìk pamìti.
+nìjaký problém $L \in \P$ a polynomiální algoritmus, který ho øe¹í. Pro vstup
+velikosti~$n$ algoritmus dobìhne v~èase~$T$ polynomiálním v~$n$ a spotøebuje $\O(T)$ bunìk pamìti.
 Staèí nám tedy \uv{poèítaè s~pamìtí velkou $\O(T)$}, co¾ je nìjaký booleovský obvod
 velikosti polynomiální v~$T$, a~tedy i v~$n$. Vývoj v~èase o¹etøíme tak, ¾e sestrojíme~$T$
 kopií tohoto obvodu, ka¾dá z~nich bude odpovídat jednomu kroku výpoètu a bude
@@ -599,53 +622,65 @@ propojena s~\uv{minulou} a \uv{budouc
 který bude øe¹it problém~$L$ pro vstupy velikosti~$n$ a bude polynomiálnì velký
 vzhledem k~$n$.
 
-\s{Poznámka:}
-Pro dùkaz následující vìty si dovolíme drobnou úpravu v~definici tøídy NP.
+\s{Ekvivalentní definice~$\NP$:}
+Pro dùkaz následující vìty si dovolíme drobnou úpravu v~definici tøídy $\NP$.
 Budeme chtít, aby nápovìda
 mìla pevnou velikost, závislou pouze na~velikosti vstupu (tedy: $\vert y \vert
 = g(\vert x \vert)$ namísto $\vert y \vert \le g(\vert x \vert)$). Proè je taková
-úprava BÚNO? Jistì si dovedete pøedstavit,
-¾e pùvodní nápovìdu doplníme na po¾adovanou délku nìjakými \uv{mezerami}, které
-program ignoruje. (Tedy upravíme program tak, aby mu nevadilo, ¾e dostane na
-konci nápovìdy nìjak kódované mezery.)
+úprava bez újmy na obecnosti? Staèí pùvodní nápovìdu doplnit na po¾adovanou délku
+nìjakými \uv{mezerami}, které budeme pøi ovìøování nápovìdy ignorovat.
 
-\s{Vìta:} Obvodový SAT je NP-úplný.
+\s{Vìta:} Obvodový SAT je $\NP$-úplný.
 
 \proof
-Máme tedy nìjaký problém $L$ z~NP a~chceme dokázat, ¾e $L$ se dá pøevést
-na~obvodový SAT (tj. NP-tì¾kost). Kdy¾ nám nìkdo pøedlo¾í nìjaký vstup $x$
-(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ø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.
+Obvodový SAT evidentnì le¾í v~$\NP$ -- staèí si nechat poradit vstup, sí»
+topologicky setøídit a v~tomto poøadí poèítat hodnoty hradel.
 
-\fig{kobvod.eps}{2.3cm}
+Mìjme nyní nìjaký problém $L$ z~$\NP$, o~nìm¾ chceme dokázat, ¾e se dá pøevést
+na~obvodový SAT. Kdy¾ nám nìkdo pøedlo¾í nìjaký vstup~$x$ délky~$n$,
+spoèítáme velikost nápovìdy $g(n)$. Víme, ¾e algoritmus~$K$, který kontroluje,
+zda nápovìda je správnì, je v~$\P$. Vyu¾ijeme pøedchozí lemma, abychom získali obvod,
+který pro konkrétní velikost vstupu~$n$ poèítá to, co kontrolní algoritmus~$K$.
+Vstupem tohoto obvodu bude~$x$ (vstup problému~$L$) a~nápovìda~$y$. Na výstupu se
+dozvíme, zda je nápovìda správná. Velikost tohoto obvodu bude èinit $p(g(n))$,
+co¾ je také polynom.
 
-\>V tomto obvodu zafixujeme vstup $x$ (na místa vstupu dosadíme konkrétní hodnoty z $x$). Tím získáme obvod, jeho¾ vstup je jen $y$ a~ptáme se, zda za $y$ mù¾eme dosadit nìjaké hodnoty tak, aby na výstupu bylo \<true>. Jinými slovy, ptáme se, zda je tento obvod splnitelný.
+\fig{kobvod.eps}{2.3cm}
 
-\>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 \<true>. Tedy libovolný problém z~NP se dá
-v~polynomiálním èase pøevést na obvodový SAT.
+V tomto obvodu zafixujeme vstup $x$ (na místa vstupu dosadíme konkrétní hodnoty
+z $x$). Tím získáme obvod, jeho¾ vstup je jen~$y$, a~chceme zjistit, zda za~$y$
+mù¾eme dosadit nìjaké hodnoty tak, aby na výstupu bylo \<true>. Jinými slovy,
+ptáme se, zda je tento obvod splnitelný.
 
-\>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.
+Ukázali jsme tedy, ¾e pro libovolný problém z~$\NP$ doká¾eme sestrojit funkci,
+která pro ka¾dý vstup~$x$ v~polynomiálním èase vytvoøí obvod, jen¾ je splnitelný
+pravì tehdy, kdy¾ odpovìï tohoto problému na vstup~$x$ má být kladná. To je pøesnì
+pøevod z~daného problému na obvodový SAT.
 \qed
 
 \s{Lemma:} Obvodový SAT se dá pøevést na 3-SAT.
 
 \proof
-Budeme postupnì budovat formuli v~konjunktivní normální formì. Ka¾dý booleovský obvod se dá pøevést v~polynomiálním èase na~ekvivalentní obvod, ve~kterém se vyskytují jen hradla {\csc and} a {\csc not}, tak¾e staèí najít klauzule odpovídající tìmto hradlùm. Pro ka¾dé hradlo v~obvodu zavedeme novou promìnnou popisující jeho výstup. Pøidáme klauzule, které nám kontrolují, ¾e toto hradlo máme ohodnocené konzistentnì.
-
-\>{\I Pøevod hradla \csc not}: na vstupu hradla budeme mít nìjakou promìnnou $x$ (která pøi¹la buïto pøímo ze~vstupu toho celého obvodu nebo je to promìnná, která vznikla na výstupu nìjakého hradla) a na výstupu promìnnou $y$. Pøidáme klauzule, které nám zaruèí, ¾e jedna promìnná bude negací té druhé:
+Budeme postupnì budovat formuli v~konjunktivní normální formì. Ka¾dý booleovský
+obvod se dá v~polynomiálním èase pøevést na~ekvivalentní obvod, ve~kterém se
+vyskytují jen hradla {\csc and} a {\csc not}, tak¾e staèí najít klauzule
+odpovídající tìmto hradlùm. Pro ka¾dé hradlo v~obvodu zavedeme novou promìnnou
+popisující jeho výstup. Pøidáme klauzule, které nám kontrolují, ¾e toto hradlo
+máme ohodnocené konzistentnì.
+
+{\I Pøevod hradla \csc not}: Na vstupu hradla budeme mít nìjakou promìnnou $x$
+(která pøi¹la buïto pøímo ze~vstupu celého obvodu, nebo je to promìnná,
+která vznikla na výstupu nìjakého hradla) a na výstupu promìnnou $y$. Pøidáme
+klauzule, které nám zaruèí, ¾e jedna promìnná bude negací té druhé:
 $$\matrix{ (x \lor y), \cr
   (\neg{x} \lor \neg{y}). \cr }
   \hskip 0.2\hsize
 \vcenter{\hbox{\epsfxsize=0.7cm\epsfbox{not.eps}}}
 $$
 
-\>{\I Pøevod hradla \csc and}: Hradlo má vstupy $x, y$ a~výstup $z$. Potøebujeme pøidat klauzule, které nám popisují, jak se má hradlo {\csc and} chovat. Tyto vztahy pøepí¹eme do~konjunktivní normální formy:
+{\I Pøevod hradla \csc and}: Hradlo má vstupy $x, y$ a~výstup $z$. Potøebujeme
+pøidat klauzule, které nám popisují, jak se má hradlo {\csc and} chovat. Tyto
+vztahy pøepí¹eme do~konjunktivní normální formy:
 $$
 \left. \matrix{
   x\ \&\ y \Rightarrow z \cr
@@ -664,17 +699,16 @@ $$
 \vcenter{\hbox{\epsfxsize=0.7cm\epsfbox{and.eps}}}
 $$
 
-\>Kdy¾ chceme pøevádìt obvodový SAT na 3-SAT, obvod nejdøíve pøelo¾íme na takový, ve~kterém jsou jen hradla {\csc and} a~{\csc not}, a~pak hradla tohoto obvodu pøelo¾íme na klauzule. Formule vzniklá z~takovýchto klauzulí je splnitelná pravì tehdy, kdy¾ je splnitelný daný obvod. Pøevod pracuje v polynomiálním èase.
+Tím v~polynomiálním èase vytvoøíme formuli, která je splnitelná právì tehdy,
+je-li splnitelný zadaný obvod. Ve~splòujícím ohodnocení formule bude obsa¾eno
+jak splòující ohodnocení obvodu, tak výstupy v¹ech hradel obvodu.
 \qed
 
 \s{Poznámka:}
-Kdy¾ jsme zavádìli SAT, omezili jsme se jen na formule, které jsou
-v~konjunktivní normální formì (CNF). Teï u¾ víme, ¾e splnitelnost obecné
-booleovské formule doká¾eme pøevést na obvodovou splnitelnost a tu pak
-pøevést na 3-SAT. Opaèný pøevod je samozøejmì triviální, tak¾e obecný SAT
-je ve~skuteènosti ekvivalentní s~na¹ím \uv{standardním} SATem pro CNF.
-
-\bye
-
+Tím jsme také odpovìdìli na otázku, kterou jsme si kladli pøi zavádìní SATu,
+tedy zda omezením na CNF o~nìco pøijdeme. Teï u¾ víme, ¾e nepøijdeme -- libovolná
+booleovská formule se dá pøímoèaøe pøevést na obvod a ten zase na formuli
+v~CNF. Zavádíme sice nové promìnné, ale nová formule je splnitelná právì
+tehdy, kdy ta pùvodní.
 
 \bye
diff --git a/8-prevody/p-np.eps b/8-prevody/p-np.eps
deleted file mode 100644 (file)
index 0cd4e36..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: 0.45.1
-%%Pages: 1
-%%Orientation: Portrait
-%%BoundingBox: 1 1 122 162
-%%HiResBoundingBox: 1.5999993 1.5999983 121.60003 161.59997
-%%EndComments
-%%Page: 1 1
-0 842 translate
-0.8 -0.8 scale
-0 0 0 setrgbcolor
-[] 0 setdash
-1 setlinewidth
-0 setlinejoin
-0 setlinecap
-gsave [1 0 0 1 0 0] concat
-gsave [1 0 0 1 2 -2.0000026] concat
-gsave
-1 1 1 setrgbcolor
-newpath
-149.85837 952.36221 moveto
-149.85837 1007.5124 116.34314 1052.2205 75.000013 1052.2205 curveto
-33.656885 1052.2205 0.14165707 1007.5124 0.14165707 952.36221 curveto
-0.14165707 897.21198 33.656885 852.50388 75.000013 852.50388 curveto
-116.34314 852.50388 149.85837 897.21198 149.85837 952.36221 curveto
-149.85837 952.36221 lineto
-closepath
-eofill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-0.28331581 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-149.85837 952.36221 moveto
-149.85837 1007.5124 116.34314 1052.2205 75.000013 1052.2205 curveto
-33.656885 1052.2205 0.14165707 1007.5124 0.14165707 952.36221 curveto
-0.14165707 897.21198 33.656885 852.50388 75.000013 852.50388 curveto
-116.34314 852.50388 149.85837 897.21198 149.85837 952.36221 curveto
-149.85837 952.36221 lineto
-closepath
-stroke
-gsave
-0.80000001 0.80000001 0.80000001 setrgbcolor
-newpath
-125.00001 902.36221 moveto
-125.00813 916.1722 102.61999 927.36955 75.000014 927.36955 curveto
-47.380038 927.36955 24.991899 916.1722 25.000015 902.36221 curveto
-24.991899 888.55223 47.380038 877.35487 75.000014 877.35487 curveto
-102.61999 877.35487 125.00813 888.55223 125.00001 902.36221 curveto
-closepath
-fill
-grestore
-gsave [1 0 0 1 -349.14842 218.39392] concat
-gsave
-0 0 0 setrgbcolor
-newpath
-395.02734 678.77101 moveto
-396.62109 678.77101 lineto
-399.03516 686.27101 lineto
-400.5 678.77101 lineto
-401.6543 678.77101 lineto
-399.94922 687.51905 lineto
-398.34961 687.51905 lineto
-395.94141 679.97218 lineto
-394.47656 687.51905 lineto
-393.32227 687.51905 lineto
-395.02734 678.77101 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-404.00391 678.77101 moveto
-406.74023 678.77101 lineto
-407.5371 678.77102 408.14453 678.95656 408.5625 679.32765 curveto
-408.98046 679.69875 409.18945 680.24172 409.18945 680.95655 curveto
-409.18945 681.9175 408.88085 682.66554 408.26367 683.2007 curveto
-407.64648 683.73586 406.77929 684.00343 405.66211 684.00343 curveto
-404.17383 684.00343 lineto
-403.48828 687.51905 lineto
-402.29883 687.51905 lineto
-404.00391 678.77101 lineto
-closepath
-405 679.74366 moveto
-404.36719 683.03077 lineto
-405.85547 683.03077 lineto
-406.52734 683.03078 407.04296 682.8589 407.40234 682.51515 curveto
-407.76171 682.1714 407.9414 681.67922 407.94141 681.03859 curveto
-407.9414 680.62844 407.81933 680.31008 407.5752 680.08351 curveto
-407.33105 679.85695 406.98828 679.74367 406.54688 679.74366 curveto
-405 679.74366 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-413.77148 683.75148 moveto
-416.92969 683.75148 lineto
-416.74805 684.71241 lineto
-413.57813 684.71241 lineto
-413.77148 683.75148 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-421.99805 684.91749 moveto
-422.76563 680.95655 lineto
-423.84961 680.95655 lineto
-423.08203 684.87648 lineto
-423.04297 685.06789 423.01465 685.23195 422.99707 685.36866 curveto
-422.97949 685.50539 422.9707 685.61867 422.9707 685.70851 curveto
-422.9707 686.04054 423.07226 686.29738 423.27539 686.47902 curveto
-423.47851 686.66066 423.76562 686.75148 424.13672 686.75148 curveto
-424.71484 686.75148 425.21484 686.55617 425.63672 686.16554 curveto
-426.05859 685.77492 426.33398 685.24953 426.46289 684.58937 curveto
-427.18359 680.95655 lineto
-428.26172 680.95655 lineto
-426.99023 687.51905 lineto
-425.91211 687.51905 lineto
-426.12891 686.4878 lineto
-425.82421 686.87062 425.46191 687.16652 425.04199 687.3755 curveto
-424.62207 687.58448 424.17578 687.68898 423.70313 687.68898 curveto
-423.1289 687.68898 422.68164 687.53175 422.36133 687.2173 curveto
-422.04101 686.90284 421.88086 686.46437 421.88086 685.90187 curveto
-421.88086 685.78468 421.89062 685.6382 421.91016 685.46241 curveto
-421.92969 685.28664 421.95898 685.10499 421.99805 684.91749 curveto
-421.99805 684.91749 lineto
-closepath
-426.92578 677.9214 moveto
-428.0918 677.9214 lineto
-425.75391 680.12452 lineto
-424.85156 680.12452 lineto
-426.92578 677.9214 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-434.76563 683.47609 moveto
-434.76562 682.90187 434.64062 682.46242 434.39063 682.15773 curveto
-434.14062 681.85304 433.78125 681.7007 433.3125 681.7007 curveto
-432.99218 681.7007 432.68652 681.78273 432.39551 681.94679 curveto
-432.10449 682.11086 431.8457 682.34914 431.61914 682.66163 curveto
-431.39648 682.97023 431.21875 683.34328 431.08594 683.78077 curveto
-430.95312 684.21828 430.88672 684.65187 430.88672 685.08155 curveto
-430.88672 685.62843 431.01172 686.04933 431.26172 686.34425 curveto
-431.51172 686.63917 431.86718 686.78663 432.32813 686.78663 curveto
-432.66796 686.78663 432.98339 686.70656 433.27441 686.5464 curveto
-433.56542 686.38624 433.81445 686.15382 434.02148 685.84913 curveto
-434.24414 685.52882 434.42382 685.15187 434.56055 684.71827 curveto
-434.69726 684.28468 434.76562 683.87062 434.76563 683.47609 curveto
-434.76563 683.47609 lineto
-closepath
-431.42578 681.95265 moveto
-431.71484 681.57375 432.05566 681.28664 432.44824 681.09132 curveto
-432.84082 680.89601 433.27734 680.79836 433.75781 680.79835 curveto
-434.42968 680.79836 434.95117 681.01808 435.32227 681.45753 curveto
-435.69335 681.89699 435.8789 682.5132 435.87891 683.30616 curveto
-435.8789 683.95461 435.76366 684.57277 435.5332 685.16066 curveto
-435.30273 685.74855 434.9707 686.27492 434.53711 686.73976 curveto
-434.24804 687.04835 433.92187 687.2837 433.55859 687.44581 curveto
-433.19531 687.60792 432.8125 687.68898 432.41016 687.68898 curveto
-431.94531 687.68898 431.55468 687.5923 431.23828 687.39894 curveto
-430.92187 687.20558 430.68555 686.91749 430.5293 686.53468 curveto
-429.85547 690.01515 lineto
-428.77734 690.01515 lineto
-430.54102 680.95655 lineto
-431.61914 680.95655 lineto
-431.42578 681.95265 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-438.62695 678.40187 moveto
-439.70508 678.40187 lineto
-437.92969 687.51905 lineto
-436.85156 687.51905 lineto
-438.62695 678.40187 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-446.44336 683.55812 moveto
-445.67578 687.51905 lineto
-444.5918 687.51905 lineto
-445.35938 683.59913 lineto
-445.39453 683.41554 445.42187 683.25343 445.44141 683.1128 curveto
-445.46093 682.97218 445.4707 682.86086 445.4707 682.77882 curveto
-445.4707 682.4507 445.36718 682.19484 445.16016 682.01124 curveto
-444.95312 681.82765 444.66406 681.73586 444.29297 681.73585 curveto
-443.71484 681.73586 443.21679 681.92824 442.79883 682.313 curveto
-442.38086 682.69777 442.10742 683.22023 441.97852 683.88038 curveto
-441.25781 687.51905 lineto
-440.17969 687.51905 lineto
-441.45117 680.95655 lineto
-442.5293 680.95655 lineto
-442.3125 681.9878 lineto
-442.61328 681.6089 442.97461 681.31594 443.39648 681.1089 curveto
-443.81836 680.90187 444.26171 680.79836 444.72656 680.79835 curveto
-445.30468 680.79836 445.75292 680.95461 446.07129 681.2671 curveto
-446.38964 681.57961 446.54882 682.01906 446.54883 682.58546 curveto
-446.54882 682.72609 446.54003 682.87648 446.52246 683.03663 curveto
-446.50488 683.19679 446.47851 683.37062 446.44336 683.55812 curveto
-446.44336 683.55812 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-453.14648 683.65187 moveto
-453.1582 683.58937 453.16699 683.52492 453.17285 683.45851 curveto
-453.17871 683.39211 453.18163 683.3257 453.18164 683.25929 curveto
-453.18163 682.78273 453.04199 682.40578 452.7627 682.12843 curveto
-452.48339 681.85109 452.10351 681.71242 451.62305 681.71241 curveto
-451.08789 681.71242 450.61523 681.88137 450.20508 682.21925 curveto
-449.79492 682.55715 449.48437 683.03664 449.27344 683.65773 curveto
-453.14648 683.65187 lineto
-closepath
-454.08398 684.49562 moveto
-449.06836 684.49562 lineto
-449.04492 684.64406 449.0293 684.76125 449.02148 684.84718 curveto
-449.01367 684.93312 449.00976 685.00734 449.00977 685.06984 curveto
-449.00976 685.61281 449.17676 686.03273 449.51074 686.3296 curveto
-449.84472 686.62648 450.3164 686.77491 450.92578 686.77491 curveto
-451.39453 686.77491 451.83789 686.72218 452.25586 686.61671 curveto
-452.67382 686.51124 453.06249 686.35695 453.42188 686.15382 curveto
-453.2168 687.22023 lineto
-452.83007 687.37648 452.43066 687.49366 452.01855 687.57179 curveto
-451.60644 687.64991 451.1875 687.68898 450.76172 687.68898 curveto
-449.85156 687.68898 449.15137 687.4712 448.66113 687.03566 curveto
-448.1709 686.60011 447.92578 685.98195 447.92578 685.18116 curveto
-447.92578 684.49757 448.04785 683.86183 448.29199 683.27394 curveto
-448.53613 682.68605 448.89453 682.16164 449.36719 681.7007 curveto
-449.67187 681.41164 450.03418 681.18898 450.4541 681.03273 curveto
-450.87402 680.87648 451.32031 680.79836 451.79297 680.79835 curveto
-452.53515 680.79836 453.12597 681.02101 453.56543 681.46632 curveto
-454.00488 681.91164 454.2246 682.50929 454.22461 683.25929 curveto
-454.2246 683.43898 454.21288 683.63136 454.18945 683.83644 curveto
-454.16601 684.04152 454.13085 684.26125 454.08398 684.49562 curveto
-454.08398 684.49562 lineto
-closepath
-453.12891 677.9214 moveto
-454.29492 677.9214 lineto
-451.95703 680.12452 lineto
-451.05469 680.12452 lineto
-453.12891 677.9214 lineto
-closepath
-fill
-grestore
-grestore
-gsave [1.0794981 0 0 1.1120691 -10.146435 2.3213619] concat
-gsave
-0.80000001 0.80000001 0.80000001 setrgbcolor
-newpath
-125.19378 899.26141 moveto
-125.2013 911.67969 104.4619 921.74863 78.87596 921.74863 curveto
-53.290018 921.74863 32.550621 911.67969 32.55814 899.26141 curveto
-32.550621 886.84313 53.290018 876.77419 78.87596 876.77419 curveto
-104.4619 876.77419 125.2013 886.84313 125.19378 899.26141 curveto
-closepath
-fill
-grestore
-grestore
-gsave [1 0 0 1 32.998062 -15.126589] concat
-gsave
-0 0 0 setrgbcolor
-newpath
-40.027344 1013.1148 moveto
-42.763672 1013.1148 lineto
-43.560541 1013.1148 44.167963 1013.3003 44.585938 1013.6714 curveto
-45.003899 1014.0425 45.212883 1014.5855 45.212891 1015.3003 curveto
-45.212883 1016.2612 44.90429 1017.0093 44.287109 1017.5444 curveto
-43.669916 1018.0796 42.80273 1018.3472 41.685547 1018.3472 curveto
-40.197266 1018.3472 lineto
-39.511719 1021.8628 lineto
-38.322266 1021.8628 lineto
-40.027344 1013.1148 lineto
-closepath
-41.023438 1014.0874 moveto
-40.390625 1017.3745 lineto
-41.878906 1017.3745 lineto
-42.550777 1017.3745 43.066401 1017.2027 43.425781 1016.8589 curveto
-43.78515 1016.5152 43.964838 1016.023 43.964844 1015.3823 curveto
-43.964838 1014.9722 43.842768 1014.6538 43.598633 1014.4273 curveto
-43.354487 1014.2007 43.011714 1014.0874 42.570313 1014.0874 curveto
-41.023438 1014.0874 lineto
-closepath
-fill
-grestore
-grestore
-gsave [1 0 0 1 108.07718 103.22423] concat
-gsave
-0 0 0 setrgbcolor
-newpath
-19.985352 936.01589 moveto
-22.375977 936.01589 lineto
-28.194336 946.99343 lineto
-28.194336 936.01589 lineto
-29.916992 936.01589 lineto
-29.916992 949.13796 lineto
-27.526367 949.13796 lineto
-21.708008 938.16042 lineto
-21.708008 949.13796 lineto
-19.985352 949.13796 lineto
-19.985352 936.01589 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-35.225586 937.47487 moveto
-35.225586 942.40554 lineto
-37.458008 942.40554 lineto
-38.284173 942.40554 38.922844 942.19168 39.374023 941.76393 curveto
-39.825187 941.33621 40.050773 940.72683 40.050781 939.93581 curveto
-40.050773 939.15066 39.825187 938.54422 39.374023 938.11647 curveto
-38.922844 937.68875 38.284173 937.47488 37.458008 937.47487 curveto
-35.225586 937.47487 lineto
-closepath
-33.450195 936.01589 moveto
-37.458008 936.01589 lineto
-38.928704 936.0159 40.040519 936.34842 40.793457 937.01345 curveto
-41.546377 937.6785 41.922841 938.65262 41.922852 939.93581 curveto
-41.922841 941.23074 41.546377 942.20925 40.793457 942.87136 curveto
-40.040519 943.53347 38.928704 943.86453 37.458008 943.86452 curveto
-35.225586 943.86452 lineto
-35.225586 949.13796 lineto
-33.450195 949.13796 lineto
-33.450195 936.01589 lineto
-closepath
-fill
-grestore
-grestore
-grestore
-grestore
-showpage
-%%EOF
diff --git a/8-prevody/p-np.svg b/8-prevody/p-np.svg
deleted file mode 100644 (file)
index f2a44b9..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="744.09448"
-   height="1052.3622"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docname="p-np.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:docbase="C:\_pict">
-  <metadata
-     id="metadata2237">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="712"
-     inkscape:window-width="1024"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="3"
-     inkscape:cx="65.915632"
-     inkscape:cy="110.01628"
-     inkscape:window-x="-4"
-     inkscape:window-y="-4"
-     inkscape:current-layer="layer1" />
-  <defs
-     id="defs3" />
-  <g
-     id="layer1"
-     transform="translate(2,-2.0000026)">
-    <path
-       d="M 671.42856,485.21933 C 671.42856,711.65608 569.73324,895.21934 444.2857,895.21934 C 318.83817,895.21934 217.14285,711.65608 217.14285,485.21933 C 217.14285,258.78258 318.83817,75.219321 444.2857,75.219321 C 569.73324,75.219321 671.42856,258.78258 671.42856,485.21933 L 671.42856,485.21933 z "
-       transform="matrix(0.3295651,0,0,0.2435569,-71.421048,834.18368)"
-       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="path2159" />
-    <path
-       d="M 125.19378,899.26141 C 125.2013,911.67969 104.4619,921.74863 78.87596,921.74863 C 53.290018,921.74863 32.550621,911.67969 32.55814,899.26141 C 32.550621,886.84313 53.290018,876.77419 78.87596,876.77419 C 104.4619,876.77419 125.2013,886.84313 125.19378,899.26141 z "
-       transform="matrix(1.0794981,0,0,1.1120691,-10.146435,-97.67864)"
-       style="fill:#cccccc"
-       id="path2267" />
-    <flowRoot
-       transform="translate(-349.14842,218.39392)"
-       style="font-size:12px"
-       id="flowRoot2185"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2187"><rect
-           width="379.31131"
-           height="310.91092"
-           x="392.99139"
-           y="678.02545"
-           style="font-size:12px"
-           id="rect2189" /></flowRegion><flowPara
-         style="font-size:12px;font-style:normal;font-weight:normal"
-         id="flowPara2193">NP - úplné</flowPara></flowRoot>    <path
-       d="M 125.19378,899.26141 C 125.2013,911.67969 104.4619,921.74863 78.87596,921.74863 C 53.290018,921.74863 32.550621,911.67969 32.55814,899.26141 C 32.550621,886.84313 53.290018,876.77419 78.87596,876.77419 C 104.4619,876.77419 125.2013,886.84313 125.19378,899.26141 z "
-       transform="matrix(1.0794981,0,0,1.1120691,-10.146435,2.3213619)"
-       style="fill:#cccccc"
-       id="path2271" />
-    <flowRoot
-       transform="translate(32.998062,-15.126589)"
-       id="flowRoot2253"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2255"><rect
-           width="69"
-           height="29"
-           x="38"
-           y="1012.3622"
-           id="rect2257" /></flowRegion><flowPara
-         id="flowPara2261">P</flowPara></flowRoot>    <flowRoot
-       transform="translate(44.045913,9.7852736)"
-       style="font-size:18px"
-       id="flowRoot2273"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2275"><rect
-           width="113.95348"
-           height="32.558136"
-           x="18.217052"
-           y="934.92035"
-           style="font-size:18px"
-           id="rect2277" /></flowRegion><flowPara
-         id="flowPara2281">NP</flowPara><flowPara
-         id="flowPara2285" /></flowRoot>  </g>
-</svg>
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="744.09448"
-   height="1052.3622"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docname="p-np.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:docbase="C:\_pict">
-  <metadata
-     id="metadata2237">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="712"
-     inkscape:window-width="1024"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="1"
-     inkscape:cx="65.915632"
-     inkscape:cy="71.428064"
-     inkscape:window-x="0"
-     inkscape:window-y="22"
-     inkscape:current-layer="layer1" />
-  <defs
-     id="defs3" />
-  <g
-     id="layer1"
-     transform="translate(2,-2.0000026)">
-    <path
-       d="M 149.85837,952.36221 C 149.85837,1007.5124 116.34314,1052.2205 75.000013,1052.2205 C 33.656885,1052.2205 0.14165707,1007.5124 0.14165707,952.36221 C 0.14165707,897.21198 33.656885,852.50388 75.000013,852.50388 C 116.34314,852.50388 149.85837,897.21198 149.85837,952.36221 L 149.85837,952.36221 z "
-       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.28331581px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="path2159" />
-    <path
-       d="M 125.00001,902.36221 C 125.00813,916.1722 102.61999,927.36955 75.000014,927.36955 C 47.380038,927.36955 24.991899,916.1722 25.000015,902.36221 C 24.991899,888.55223 47.380038,877.35487 75.000014,877.35487 C 102.61999,877.35487 125.00813,888.55223 125.00001,902.36221 z "
-       style="fill:#cccccc"
-       id="path2267" />
-    <flowRoot
-       transform="translate(-349.14842,218.39392)"
-       style="font-size:12px"
-       id="flowRoot2185"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2187"><rect
-           width="379.31131"
-           height="310.91092"
-           x="392.99139"
-           y="678.02545"
-           style="font-size:12px"
-           id="rect2189" /></flowRegion><flowPara
-         style="font-size:12px;font-style:italic;font-weight:normal"
-         id="flowPara2193">NP - úplné</flowPara></flowRoot>    <path
-       d="M 125.19378,899.26141 C 125.2013,911.67969 104.4619,921.74863 78.87596,921.74863 C 53.290018,921.74863 32.550621,911.67969 32.55814,899.26141 C 32.550621,886.84313 53.290018,876.77419 78.87596,876.77419 C 104.4619,876.77419 125.2013,886.84313 125.19378,899.26141 z "
-       transform="matrix(1.0794981,0,0,1.1120691,-10.146435,2.3213619)"
-       style="fill:#cccccc"
-       id="path2271" />
-    <flowRoot
-       transform="translate(32.998062,-15.126589)"
-       id="flowRoot2253"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2255"><rect
-           width="69"
-           height="29"
-           x="38"
-           y="1012.3622"
-           id="rect2257" /></flowRegion><flowPara
-         id="flowPara2261"
-         style="font-style:italic">P</flowPara></flowRoot>    <flowRoot
-       transform="translate(108.07718,103.22423)"
-       style="font-size:18px"
-       id="flowRoot2273"
-       xml:space="preserve"><flowRegion
-         id="flowRegion2275"><rect
-           width="113.95348"
-           height="32.558136"
-           x="18.217052"
-           y="934.92035"
-           style="font-size:18px"
-           id="rect2277" /></flowRegion><flowPara
-         id="flowPara2281"
-         style="font-weight:normal;font-style:normal">NP</flowPara><flowPara
-         id="flowPara2285"
-         style="font-style:normal;font-weight:normal" /></flowRoot>  </g>
-</svg>
index c8ffeddb68b8ad23207cddb4e525d87838ab0043..7427f6a9183cd7a4104c245fc0601e3b266665c1 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: cairo 1.8.10 (http://cairographics.org)
-%%CreationDate: Fri Dec 23 21:50:09 2011
+%%CreationDate: Fri Dec 23 21:58:08 2011
 %%Pages: 1
 %%BoundingBox: 0 0 183 138
 %%DocumentData: Clean7Bit
 0 j
 [] 0.0 d
 4 M q 1 0 0 -1 0 137.978714 cm
-47.836 16.762 m 37.945 56.367 l S Q
-48.816 125.131 m 50.738 118.42 l 43.961 120.112 l 48.816 125.131 l h
-48.816 125.131 m f*
-0.847468 w
-q 0.24974 1 1 -0.24974 0 137.978714 cm
--0.618 48.971 m -6.483 52.357 l -6.484 45.58 l -0.618 48.971 l h
--0.618 48.971 m S Q
+47.836 16.762 m 38.352 56.766 l S Q
+48.77 125.143 m 50.773 118.455 l 43.973 120.065 l 48.77 125.143 l h
+48.77 125.143 m f*
+0.849925 w
+q 0.237143 1 1 -0.237143 0 137.978714 cm
+-1.203 49.055 m -7.084 52.453 l -7.088 45.653 l -1.203 49.055 l h
+-1.203 49.055 m S Q
 0.8 w
 q 1 0 0 -1 0 137.978714 cm
 30.711 1.41 m 68.895 1.41 l 68.895 16.359 l 30.711 16.359 l 30.711 1.41 
 88.765 -122.617 m S Q
 0.8 w
 q 1 0 0 -1 0 137.978714 cm
-115.504 17.973 m 60.031 56.367 l S Q
-56.996 79.51 m 59.727 85.291 l 63.371 80.029 l 56.996 79.51 l h
-56.996 79.51 m f*
-0.657804 w
-q -1 -0.692144 -0.692144 1 0 137.978714 cm
--11.174 -66.203 m -15.726 -63.572 l -15.727 -68.835 l -11.174 -66.203 l 
+115.504 17.574 m 60.031 56.367 l S Q
+57.008 79.494 m 59.711 85.291 l 63.379 80.045 l 57.008 79.494 l h
+57.008 79.494 m f*
+0.655584 w
+q -1 -0.699355 -0.699355 1 0 137.978714 cm
+-10.816 -66.049 m -15.354 -63.425 l -15.353 -68.671 l -10.816 -66.049 l 
 h
--11.174 -66.203 m S Q
+-10.816 -66.049 m S Q
 0.8 w
 q 1 0 0 -1 0 137.978714 cm
 32.777 93.328 m 31.988 119.805 l S Q
@@ -1373,6 +1373,17 @@ q 0.00187188 -1 -1 -0.00187188 0 137.978714 cm
 117.7 -139.971 m 112.162 -136.771 l 112.163 -143.169 l 117.7 -139.971 l 
 h
 117.7 -139.971 m S Q
+0.8 w
+[ 0.8 1.6] 0 d
+q 1 0 0 -1 0 137.978714 cm
+108.289 114.152 m 63.438 16.762 l S Q
+61.895 124.572 m 67.113 120.881 l 61.301 118.205 l 61.895 124.572 l h
+61.895 124.572 m f*
+0.726648 w
+[] 0.0 d
+q -0.460524 1 1 0.460524 0 137.978714 cm
+-34.577 45.971 m -39.605 48.874 l -39.605 43.062 l -34.577 45.971 l h
+-34.577 45.971 m S Q
 Q
 showpage
 %%Trailer
index 192d34839b16ca946545b545cf6d2ebbe4199dac..75c0b623df28a6688a64e7396250a543fec8267b 100644 (file)
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="2.8"
-     inkscape:cx="123.03499"
-     inkscape:cy="102.75934"
+     inkscape:zoom="1.979899"
+     inkscape:cx="34.554428"
+     inkscape:cy="109.37583"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
-     inkscape:window-width="1024"
-     inkscape:window-height="708"
-     inkscape:window-x="-4"
-     inkscape:window-y="-4"
+     inkscape:window-width="1272"
+     inkscape:window-height="1004"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
      showgrid="false"
-     inkscape:window-maximized="0"
+     inkscape:window-maximized="1"
      showguides="true"
-     inkscape:guide-bbox="true" />
+     inkscape:guide-bbox="true"
+     inkscape:object-paths="true" />
   <metadata
      id="metadata6">
     <rdf:RDF>
      transform="translate(-52.533009,-31.103033)">
     <path
        style="fill:none;stroke:#000000;stroke-width:1.09187055000000011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#TriangleInL);marker-end:none;display:inline;-inkscape-font-specification:URW Bookman L;font-family:URW Bookman L;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:16px;text-anchor:start;text-align:start;writing-mode:lr;line-height:110%"
-       d="M 112.33031,52.053545 99.966265,101.56117"
+       d="M 112.33031,52.053545 100.47134,102.06117"
        id="path2209"
-       inkscape:connector-type="polyline" />
+       inkscape:connector-type="polyline"
+       sodipodi:nodetypes="cc" />
     <g
        id="g5362"
        style="-inkscape-font-specification:URW Bookman L;font-family:URW Bookman L;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:16px;text-anchor:start;text-align:start;writing-mode:lr;line-height:110%">
        inkscape:connector-type="polyline" />
     <path
        style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);-inkscape-font-specification:URW Bookman L;font-family:URW Bookman L;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:16px;text-anchor:start;text-align:start;writing-mode:lr;line-height:110%"
-       d="M 196.9131,53.568775 127.57439,101.56117"
+       d="M 196.9131,53.068775 127.57439,101.56117"
        id="path8319"
-       inkscape:connector-type="polyline" />
+       inkscape:connector-type="polyline"
+       sodipodi:nodetypes="cc" />
     <path
        style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#TriangleInL);marker-end:url(#TriangleOutL);-inkscape-font-specification:URW Bookman L;font-family:URW Bookman L;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:16px;text-anchor:start;text-align:start;writing-mode:lr;line-height:110%"
        d="m 93.505819,147.7655 -0.989685,33.09265"
        d="m 227.68488,132.36067 0.0766,40.92133"
        id="path10261"
        inkscape:connector-type="polyline" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+       d="M 187.89345,173.79192 131.82998,52.053555"
+       id="path2854"
+       sodipodi:nodetypes="cc" />
   </g>
 </svg>