]> mj.ucw.cz Git - ads2.git/commitdiff
Prepsal jsem uvod ke kapitole.
authorMartin Mares <mj@ucw.cz>
Mon, 14 Jan 2008 11:47:30 +0000 (12:47 +0100)
committerMartin Mares <mj@ucw.cz>
Mon, 14 Jan 2008 11:47:30 +0000 (12:47 +0100)
Take spousta drobnych korektur.

10-prevody/10-prevody.tex

index d5e4de090efd2f47a836ed5474cca9472a5c098f..9e638dcb0d5ddd8ab1b1126ea5bfb3888d8ae9af 100644 (file)
@@ -2,47 +2,73 @@
 
 \prednaska{10}{Pøevody problémù}{(zapsali Martin Chytil, Vladimír Kudelas)}
 
 
 \prednaska{10}{Pøevody problémù}{(zapsali Martin Chytil, Vladimír Kudelas)}
 
-\>Na této pøedná¹ce se budeme zabývat rozhodovacími problémy a pøevody mezi nimi.
+\>Na této pøedná¹ce se budeme zabývat rozhodovacími problémy a jejich obtí¾ností.
+Za jednoduché budeme trochu zjednodu¹enì pova¾ovat ty problémy, na~nì¾ známe algoritmus
+pracující v~polynomiálním èase.
 
 \s{Definice:} {\I Rozhodovací problém} je takový problém, jeho¾ výstupem je v¾dy {\sc ano}, nebo {\sc ne}.
 
 \s{Definice:} {\I Rozhodovací problém} je takový problém, jeho¾ výstupem je v¾dy {\sc ano}, nebo {\sc ne}.
+[Formálnì bychom se na~nìj mohli dívat jako na~mno¾inu $L$ vstupù, na~které je odpovìï {\sc ano},
+a místo $L(x)=\hbox{\sc ano}$ psát prostì $x\in L$.]
 
 \s{Pøíklad:} Je dán bipartitní graf $G$ a $k \in {\bb N}$. Existuje v $G$ párování, které obsahuje alespoò $k$ hran?
 
 
 \s{Pøíklad:} Je dán bipartitní graf $G$ a $k \in {\bb N}$. Existuje v $G$ párování, které obsahuje alespoò $k$ hran?
 
-\s{Pøíklad:} Daný problém pøevedeme na jiný: Párování $\rightarrow$ hledání maximálního toku (¹ipka znamená \uv{lze pøevést}).
-Tzn. existuje v nìjaké síti $G'$ tok velikosti alespoò $k$?
+To, co bychom ve~vìt¹inì pøípadù chtìli, je samozøejmì nejen zjistit, zda takové párování
+existuje, ale také nìjaké konkrétní najít. V¹imnìme si ale, ¾e kdy¾ umíme rozhodovat
+existenci párování v~polynomiálním èase, mù¾eme ho polynomiálnì rychle i najít:
+
+Mìjme èernou skøíòku (fungující v polynomiálním èase), která odpoví, zda daný
+graf má nebo nemá párování o~$k$ hranách. Odebereme z~grafu libovolnou hranu
+a zeptáme se, jestli i tento nový graf má párovaní velikosti~$k$. Kdy¾ má, pak tato
+hrana nebyla pro existenci párování potøebná, a~tak ji odstraníme. Kdy¾ naopak
+nemá (hrana patøí do ka¾dého párování po¾adované velikosti), tak si danou hranu
+poznamenáme a odebereme nejen ji a její vrcholy, ale také hrany, které do tìchto
+vrcholù vedly. Toto je korektní krok, proto¾e v pùvodním grafu tyto vrcholy
+byly navzájem spárované, a tedy nemohou být spárované s~¾ádnými jinými vrcholy.
+Na~nový graf aplikujeme znovu tentý¾ postup. Výsledkem je mno¾ina hran, které patøí
+do hledaného párování. Hran, a tedy i iterací na¹eho algoritmu, je polynomiálnì
+mnoho a skøíòka funguje v polynomiálním èase, tak¾e celý algoritmus je polynomiální.
+
+A~jak ná¹ rozhodovací problém øe¹it? Nejsnáze tak, ¾e ho pøevedeme na~jiný, který
+u¾ vyøe¹it umíme. Tento postup jsme (právì u~hledání párování) u¾ pou¾ili
+v~kapitole o~Dinicovì algoritmu. Vytvoøili jsme vhodnou sí», pro kterou
+platilo, ¾e v~ní existuje tok velikosti~$k$ právì tehdy, kdy¾
+v~pùvodním grafu existuje párování velikosti~$k$.
+
+Takovéto pøevody mezi problémy mù¾eme definovat obecnì:
+
+\s{Definice:} Jsou-li $A$, $B$ rozhodovací problémy, pak øíkáme, ¾e $A$ lze {\I
+redukovat} (neboli pøevést) na $B$ (pí¹eme $A \rightarrow B$) $\Leftrightarrow$
+existuje funkce $f$ spoèitatelná v polynomiálním èase taková, ¾e pro $\forall
+x: A(x) = B(f(x))$.
+
+V¹imnìte si, ¾e $A\rightarrow B$ také znamená, ¾e problém~$B$ je alespoò tak tì¾ký
+jako problém~$A$ (tím myslíme, ¾e pokud lze $B$ øe¹it v~polynomiálním èase,
+lze tak øe¹it i~$A$): Nech» problém~$B$ umíme øe¹it v~èase $\O(b^k)$, kde
+$b$ je délka jeho vstupu. Nech» dále funkce $f$ pøevádìjící $A$ na $B$ pracuje
+v~èase $\O(a^\ell)$ pro vstup délky~$a$. Spustíme-li tedy $B(f(x))$ na~nìjaký
+vstup~$x$ problému~$A$, bude mít $f(x)$ délku $\O(a^\ell)$, tak¾e $B(f(x))$
+pobì¾í v~èase $\O(a^{k\ell})$, co¾ je polynomiální v~délce vstupu~$a$.
 
 
-\s{Obecnì se dá øici:} Pokud daný pro rozhodovací problém umíme rozhodnout, zda platí, pak  umíme také najít øe¹ení tohoto problému. Proto¾e jak jinak bychom o daném problému mohli tvrdit, ¾e zaruèenì platí, kdy¾ bychom ho neumìli vyøe¹it. 
-
-\s{Pøíklad:} Mìjme èernou skøíòku (fungující v polynomiálním èase), která odpoví, zda daný graf má nebo nemá perfektní párování. Odebereme hranu a zeptáme se, jestli i tento nový graf má pefektní párovaní. Kdy¾ má, tak tato hrana nebyla potøebná pro párování, vyhodíme ji, proto¾e ji nepotøebujeme. 
-Kdy¾ nemá (hrana patøí do ka¾dého párování), tak si danou hranu poznamenáme a odebereme nejen ji a její vrcholy ale také hrany, které do tìchto vrcholù vedly. Toto je korektní krok, proto¾e v pùvodním grafu tyto vrcholy byly navzájem spárované, a tedy nemohou být spárované s~¾ádnými jinými vrcholy.    
-Takto iterujeme, dokud to jde. Výsledkem je mno¾ina hran, které patøí do perfektní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 {\I redukovat} (pøevést) na $B$ (pí¹eme $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:} Hledání maximálního párování v bipartitním grafu $\rightarrow$ Hledání maximálního toku v síti.
-Funkce $f$ je funkce, která vezme bipartitní graf a vyrobí z~nìj sí» (jak správnì vyrobit sí» pro tento pøíklad viz 3.pøedná¹ka - Dinicùv algoritmus).
-
-\s{Nìco málo o slo¾itosti:}
-Kdy¾ $A$ lze redukovat na $B$ funkcí $f$ a vstup $A$ je $x$, t¾. $\vert x \vert = n$ a funkce $f$ je spoèitatelná v polynomiálním èase, t¾. $\vert f(x) \vert = \O(n^k)$ pro nìjaké $k$, pak B umíme vyøe¹it v èase $\O(\vert f(x)^l \vert) = \O(n^{kl})$, $f$ poèítá v polynomiálním èase $\rightarrow$ mù¾e vydat maximálnì polynomiální výstup.
-
-$A \rightarrow B$ znamená, ¾e $B$ je alespoò tak tì¾ké jako $A$.
 
 \s{Pozorování:} Pøevoditelnost je:
 \itemize\ibull
 
 \s{Pozorování:} Pøevoditelnost 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í $(g \circ f)$.
+\:reflexivní (úlohu mù¾eme pøevést na tu stejnou identickým zobrazením): $A \rightarrow A$,
+\:tranzitivní: Je-li $A \rightarrow B$ funkcí $f$, $B \rightarrow C$ funkcí $g$, pak $A \rightarrow C$ slo¾enou funkcí $g \circ f$
+(slo¾ení dvou polynomiálních funkcí je zase polynomiální funkce, jak u¾ jsme zpozorovali
+v~pøedchozím odstavci).
 \endlist
 
 \endlist
 
+\>Podívejme se nyní na~pøevody mezi dal¹ími zajímavými problémy:
+
 \h{1. problém: SAT}
 \h{1. problém: SAT}
-\>Splnitelnost logických formulí, tj. dosazení $true$ èi $false$ za promìnné v logické formuli tak, aby formule dala výsledek $true$.
+\>Splnitelnost logických formulí, tj. dosazení \<true> èi \<false> za promìnné v logické formuli tak, aby formule dala výsledek \<true>.
 
 \>Zamìøíme se na speciální formu zadání formulí,  {\I konjunktivní normální formu} (CNF).
 $$(\ldots\lor\ldots\lor\ldots\lor\ldots) \land (\ldots\lor\ldots\lor\ldots\lor\ldots) \land \ldots $$ 
 
 
 \>Zamìøíme se na speciální formu zadání formulí,  {\I konjunktivní normální formu} (CNF).
 $$(\ldots\lor\ldots\lor\ldots\lor\ldots) \land (\ldots\lor\ldots\lor\ldots\lor\ldots) \land \ldots $$ 
 
-\>{\I Vstup:} Formule $\phi$ v konjunktivní normální formì.
+\>{\I Vstup:} Formule $\varphi$ v konjunktivní normální formì.
 
 
-\>{\I Výstup} $\exists$ dosazení $true$ a $false$ za promìnné takové, ¾e hodnota formule $\phi(\ldots) = true$.
+\>{\I Výstup:} $\exists$ dosazení \<true> a \<false> za promìnné takové, ¾e hodnota formule $\varphi(\ldots) = \<true>$.
 
 \>Pro formuli platí následující podmínky:
 
 
 \>Pro formuli platí následující podmínky:
 
@@ -58,12 +84,12 @@ $$(\ldots\lor\ldots\lor\ldots\lor\ldots) \land (\ldots\lor\ldots\lor\ldots\lor\l
 \s{Definice:} 3-SAT je takový SAT, v nìm¾ ka¾dá klauzule obsahuje nejvý¹e tøi literály.
 
 \s{Pøevod 3-SAT na SAT:}
 \s{Definice:} 3-SAT je takový SAT, v nìm¾ ka¾dá klauzule obsahuje nejvý¹e tøi literály.
 
 \s{Pøevod 3-SAT na SAT:}
-Vstup není potøeba nijak upravovat, 3-SAT splòuje vlastnosti SATu, proto 3-SAT = SAT (3-SAT je alespoò tak tì¾ký jako SAT)
+Vstup není potøeba nijak upravovat, 3-SAT splòuje vlastnosti SATu, proto 3-SAT $\rightarrow$ SAT (3-SAT je alespoò tak tì¾ký jako SAT)
 
 \s {Pøevod SAT na 3-SAT:}
 Musíme formuli pøevést tak, abychom neporu¹ili splnitelnost.
 
 
 \s {Pøevod SAT na 3-SAT:}
 Musíme formuli pøevést tak, abychom neporu¹ili splnitelnost.
 
-\>Trik pro dlouhé klauzule:
+\>Trik pro dlouhé klauzule: Ka¾dou klauzuli
 $$(\alpha \lor \beta) \hbox{, t¾. } \vert\alpha\vert + \vert\beta\vert \ge 4$$
 pøepí¹eme na: $$(\alpha \lor x) \land (\beta \lor \lnot x),$$
 kde $x$ je nová promìnná, kterou nastavíme tak, abychom neovlivnili splnitelnost formule.
 $$(\alpha \lor \beta) \hbox{, t¾. } \vert\alpha\vert + \vert\beta\vert \ge 4$$
 pøepí¹eme na: $$(\alpha \lor x) \land (\beta \lor \lnot x),$$
 kde $x$ je nová promìnná, kterou nastavíme tak, abychom neovlivnili splnitelnost formule.
@@ -86,9 +112,10 @@ $$(\alpha) \rightarrow (\alpha \lor x) \land (\alpha \lor \lnot x).$$
 
 \>Existuje nezávislá mno¾ina vrcholù z~$G$ velikosti alespoò $k$?
 
 
 \>Existuje nezávislá mno¾ina vrcholù z~$G$ velikosti alespoò $k$?
 
-\s{Definice:} {\I Nezávislá mno¾ina} (NzMna) je tvoøena vrcholy grafu, které nemají ¾ádnou spoleènou hranu.
+\s{Definice:} {\I Nezávislá mno¾ina} (NzMna) budeme øíkat ka¾dé mno¾inì vrcholù grafu
+takové, ¾e mezi nimi nevede ¾ádná hrana.
 
 
-\figure{nezmna.eps}{Pøíklad nezávislé mno¾iny.}{3in}
+\figure{nezmna.eps}{Pøíklad nezávislé mno¾iny}{1in}
 
 \>{\I Vstup:} Neorientovaný graf G, $k \in {\bb N}$.
 
 
 \>{\I Vstup:} Neorientovaný graf G, $k \in {\bb N}$.
 
@@ -96,7 +123,7 @@ $$(\alpha) \rightarrow (\alpha \lor x) \land (\alpha \lor \lnot x).$$
 
 \s{Poznámka:} Ka¾dý graf má minimálnì jednu nezávislou mno¾inu, a tou je prázdná mno¾ina. Proto je potøeba zadat i minimální velikost hledané mno¾iny.
 
 
 \s{Poznámka:} Ka¾dý graf má minimálnì jednu nezávislou mno¾inu, a tou je prázdná mno¾ina. Proto je potøeba zadat i minimální velikost hledané mno¾iny.
 
-\>Uká¾eme, jak tento probém pøevést na 3-SAT.
+\>Uká¾eme, jak na~tento probém pøevést 3-SAT.
  
 \s{Pøevod:} Z ka¾dé klauzule vybereme jeden literál tak, abychom v rùzných klauzulích nevybírali konfliktnì, tj. $x$ a $\lnot x$.
 
  
 \s{Pøevod:} Z ka¾dé klauzule vybereme jeden literál tak, abychom v rùzných klauzulích nevybírali konfliktnì, tj. $x$ a $\lnot x$.
 
@@ -105,9 +132,11 @@ $(x \lor y \lor z) \land (x \lor \lnot y \lor \lnot z) \land (\lnot x \lor \lnot
 
 \>Pro ka¾dou klauzuli sestrojíme graf (trojúhelník) a pøidáme \uv{konfliktní} hrany, tj. $x$ a $\lnot x$.
 
 
 \>Pro ka¾dou klauzuli sestrojíme graf (trojúhelník) a pøidáme \uv{konfliktní} hrany, tj. $x$ a $\lnot x$.
 
-Princip je takový, ¾e z~ka¾dé klauzule si vybereme promìnnou, která danou klauzuli splní, a to, aby promìnné, které si vybereme, nekolidovaly, vyøe¹íme hranami mezi promìnnými a jejich negacemi. 
+Princip je takový, ¾e z~ka¾dé klauzule si vybereme literál, který danou
+klauzuli splní, a to tak, aby literály, které si vybereme, nekolidovaly. Kolize
+o¹etøíme hranami mezi promìnnými a jejich negacemi.
 
 
-\figure{nezmna_graf.eps}{Ukázka pøevodu 3-SAT na nezávislou mno¾inu.}{3in}
+\figure{nezmna_graf.eps}{Ukázka pøevodu 3-SAT na nezávislou mno¾inu}{3in}
 
 Existuje nezávislá mno¾ina velikosti rovné poètu klauzulí?
 Pokud ano, tak dostaneme seznam promìnných, pomocí kterých splníme danou formuli.
 
 Existuje nezávislá mno¾ina velikosti rovné poètu klauzulí?
 Pokud ano, tak dostaneme seznam promìnných, pomocí kterých splníme danou formuli.
@@ -134,20 +163,20 @@ M
   x_{i1} \lor x_{i2} \lor \ldots \lor x_{in}$.
 \endlist
 
   x_{i1} \lor x_{i2} \lor \ldots \lor x_{in}$.
 \endlist
 
-\figure{matice.eps}{Výsledná matice.}{3in}
+\figure{matice.eps}{Výsledná matice}{3in}
 
 \h{4. problém: Klika}
 
 \>{\I Vstup:} Graf $G, k \in N$.
 
 \>{\I Výstup:} $\exists$ úplný podgraf grafu $G$ na $k$ vrcholech?
 
 \h{4. problém: Klika}
 
 \>{\I Vstup:} Graf $G, k \in N$.
 
 \>{\I Výstup:} $\exists$ úplný podgraf grafu $G$ na $k$ vrcholech?
-\figure{klika.eps}{Pøíklad kliky.}{3in}
+\figure{klika.eps}{Pøíklad kliky}{3in}
 
 \s{Pøevod:} Prohodíme v grafu $G$ hrany a nehrany $\Rightarrow$ hledání nezávislé mno¾iny.
 
 \s{Dùvod:} Pokud existuje úplný graf na $k$ vrcholech, tak v~\uv{invertovaném} grafu tyto vrcholy nejsou spojeny hranou, tj. tvoøí nezávislou mno¾inu.
 
 
 \s{Pøevod:} Prohodíme v grafu $G$ hrany a nehrany $\Rightarrow$ hledání nezávislé mno¾iny.
 
 \s{Dùvod:} Pokud existuje úplný graf na $k$ vrcholech, tak v~\uv{invertovaném} grafu tyto vrcholy nejsou spojeny hranou, tj. tvoøí nezávislou mno¾inu.
 
-\figure{doplnek_nm.eps}{Prohození hran a nehran.}{3in}
+\figure{doplnek_nm.eps}{Prohození hran a nehran}{3in}
 
 \h{5. problém: 3D párování (3D matching)}
 
 
 \h{5. problém: 3D párování (3D matching)}
 
@@ -157,7 +186,7 @@ M
 
 \>Uká¾eme, jak tento problém pøevést na 3,3-SAT (ov¹em to a¾ na dal¹í pøedná¹ce).
 
 
 \>Uká¾eme, jak tento problém pøevést na 3,3-SAT (ov¹em to a¾ na dal¹í pøedná¹ce).
 
-\figure{3d_parovani.eps}{Ukázka 3D párování.}{3in}
+\figure{3d_parovani.eps}{Ukázka 3D párování}{3in}
 
 
 \h{6. problém: 3,3-SAT}
 
 
 \h{6. problém: 3,3-SAT}
@@ -185,9 +214,9 @@ $$
 (x_k \Rightarrow x_1).
 $$
 
 (x_k \Rightarrow x_1).
 $$
 
-Tímto zaruèíme, ¾e v¹echny promìnné budou mít stejnou hodnotu. Navíc si lze v¹imnout, ¾e ka¾dý literál se vyskytuje nejvíce $2x$
+Tímto zaruèíme, ¾e v¹echny promìnné budou mít stejnou hodnotu. Navíc si lze v¹imnout, ¾e ka¾dý literál se vyskytuje nejvíce dvakrát
 
 \s{Závìr:} Obrázek ukazuje problémy, jimi¾ jsme se dnes zabývali, a vztahy mezi tìmito problémy.
 
 \s{Závìr:} Obrázek ukazuje problémy, jimi¾ jsme se dnes zabývali, a vztahy mezi tìmito problémy.
-\figure{prevody.eps}{Pøevody mezi problémy.}{3in}
+\figure{prevody.eps}{Pøevody mezi problémy}{3in}
 
 \bye
 
 \bye