]> mj.ucw.cz Git - ads2.git/commitdiff
Nulta verze kapitoly o prevodech.
authorMartin Mares <mj@ucw.cz>
Tue, 18 Dec 2007 15:01:09 +0000 (16:01 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 18 Dec 2007 15:01:09 +0000 (16:01 +0100)
14 files changed:
10-prevody/10-prevody.tex [new file with mode: 0644]
10-prevody/3D parovani.JPG [new file with mode: 0644]
10-prevody/3D parovani.eps [new file with mode: 0644]
10-prevody/Doplnok grafu, NM.JPG [new file with mode: 0644]
10-prevody/Doplnok grafu, NM.eps [new file with mode: 0644]
10-prevody/Klika - Nez.Mnoz.JPG [new file with mode: 0644]
10-prevody/Klika - Nez.Mnoz.eps [new file with mode: 0644]
10-prevody/Makefile [new file with mode: 0644]
10-prevody/NezMnoz graf.JPG [new file with mode: 0644]
10-prevody/NezMnoz graf.eps [new file with mode: 0644]
10-prevody/matica.JPG [new file with mode: 0644]
10-prevody/matica.eps [new file with mode: 0644]
10-prevody/nezavisla mnozina.JPG [new file with mode: 0644]
10-prevody/nezavisla mnozina.eps [new file with mode: 0644]

diff --git a/10-prevody/10-prevody.tex b/10-prevody/10-prevody.tex
new file mode 100644 (file)
index 0000000..a786154
--- /dev/null
@@ -0,0 +1,156 @@
+\input ../lecnotes.tex
+
+\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 nimy.
+
+\s{Definice:} {\I Rozhodovací problém} je takový problém, jeho¾ výstupem je v¾dy {\sc ano} nebo {\sc ne}
+
+\s{Pøíklad:} Je dán bipartitní graf $G$, $k \in 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$ (lze pøevést) $\rightarrow$ hledání maximálního toku.
+Tzn. Existuje v síti $G$ tok velikosti alespoò $k$?
+
+\s{Obecnì se dá øici:} Pokud daný pro problém umíme rozhodnout, zda platí $\Rightarrow$ umíme najít øe¹ení problému.
+\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 tahle hrana nebyla potøebná pro párování, vyhodíme ji, proto¾e ji nepotøebujeme. 
+Kdy¾ nemá (hrana patøí do párování), tak si danou hranu poznamenáme a odebereme ji i její vrcholy a také hrany, které vedli do tìchto vrcholù. 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.    
+Tohle 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álne 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, t¾. 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 + ohodnocení)
+
+\s{Nìco málo o slo¾itosti:}
+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èíta v èase $O(n^{kl})$
+$f$ poèíta v polynomiálním èase $\rightarrow$ mù¾e vydat maximálne 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 o g)$
+\endlist
+
+\h{1.Problém: SAT}
+\itemize\ibull
+\:splnitelnost logických formulí
+\:tj. dosazení $0,1$ do logické formule tak, aby formule platila
+\endlist
+
+Zamìøíme se na speciální formu zadání formulí - konjunktivní normální forma:
+$$(\ldots\lor\ldots\lor\ldots\lor\ldots\lor) \& (\ldots\lor\ldots\lor\ldots\lor\ldots\lor) \& \ldots $$ 
+
+{\I Vstup:} formule v konjunktivní normální formì (CNF)
+{\I Výstup} $\exists$ dosazení $0/1$ za promìnné t.¾. $\phi(\ldots) = 1$.
+
+$$ \phi(x, y, \ldots) = (x \lor \lnot y \lor \ldots) \& (\ldots\lor\ldots\lor\ldots\lor\ldots\lor) \& \ldots $$
+\itemize\ibull
+\:formule zadána pomocí klauzulí oddìlených \&,
+\: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 $\lnot$ promìnných
+\endlist 
+
+Uká¾eme, ¾e staèí vyøe¹it jednodu¹¹í problém 3-SAT.
+
+\h{2.Problém: 3-SAT}
+{\I 3-SAT} je SAT, kde ka¾dá klauzule obsahuje nejvý¹e 3 literály
+
+\s{Pøevod 3-SAT na SAT}
+platí identita, 3-SAT splòuje vlastnosti SATu, proto 3-SAT = 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
+{\I trik pro dlouhé klauzule:} 
+$$(\alpha \lor \beta) t¾. \vert\alpha\vert + \vert\beta\vert \ge 4$$
+pøepí¹eme na: $$(\alpha \lor x) \& (\beta \lor \lnot x)$$
+$x$ je nová promìnná, kterou nastavíme tak, abychom neovlivnili splnitelnost formule
+platí-li:
+\itemize\ibull
+\:$\alpha \rightarrow x = 0$ (zajistí splnìní druhé poloviny nové formule)
+\:$\beta \rightarrow x = 1$ (zajistí splnìní první poloviny nové formule)
+\:$\alpha ,\beta / \lnot\alpha ,\lnot\beta \rightarrow x = 0/1$ (je nám to jedno, celkové øe¹ení nám to neovlivní)
+Hodnota x nám pùvodní formuli nijak neovlivní, proto¾e se v ní nevyskytuje, proto ji mù¾eme nastavit, jak chceme my.
+Tento trik opakujeme tak dlouho, dokud je to tøeba.
+
+{\I poznámka} u 3-SAT lze vynutit právì $3$ literály, pro krátké klauzule pou¾ijeme následující trik:
+$$(a) \rightarrow (a \lor x) \& (a \lor \lnot x) $$
+
+\h{3. Problém: Hledání nezávislé mno¾iny v grafu}
+\s{Definice:} {\I Nezávislá mno¾ina:} je tvoøena vrcholy grafu, které spolu nemají spoleènou hranu
+
+{\I Vstup:} Neorientovaný graf G, $k \in N$
+{\I Výstup:} $\exists A \subseteq V(G)$, $\vert A \vert \ge k$, $u,v \in A \Rightarrow (uv) \not\in E(G)$ ?
+
+Úlohu øe¹íme tak, ¾e problém 3-SAT pøevedeme tuto úlohu.
+
+\s{poznámka:} Ka¾dý graf má minimálnì jednu nezávislou mno¾inu, a tou je prázdná mno¾ina.
+\s{øe¹ení úlohy:} Z ka¾dé klauzule vybereme $1$ literál tak, abychom v rùzných klauzulích nevybírali konfliktnì, tj. $x a \lnot x$
+
+\s {pøíklad} 
+$$(x \lor y \lor z) \& (x \lor \lnot y \lor \lnot z) \& (\lnot x \lor \lnot y \lor p) $$
+pro ka¾dou klauzuli sestrojíme graf (trojúhelník) + pøidáme "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 nekolidovali, vyøe¹íme hranami mezi promìnnými a jejich negacemi. 
+
+Existuje NzMna velikosti rovné poètu klauzulí?
+Pokud ano, tak dostaneme seznam promìnných, pomocí kterých splníme danou formuli.
+
+\h{4. Problém: Klika}
+{\I Vstup:} Graf $G, k \in N$
+{\I Výstup:} $\exists$ úplný podgraf grafu $G$ na $k$ vrcholech ?
+\s{øe¹ení:} prohodíme hrany a nehrany $\rightarrow$ hledání nezávislé mno¾iny
+\s{dùvod:} pokud existuje úplný graf na $k$ vrcholech, tak v "invertovaném" grafu tyto vrcholy nejsou spojeny hranou, tj. tvoøí nezávislou mno¾inu
+
+\s{Pøíklad:} (viz obrázky)
+
+\s{Pøevod NzMna na SAT}
+Máme promìnné $v_1 \ldots v_n$ pro vrcholy
+
+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^{'}}$
+
+
+\h{5. Problém: 3D -- párování (matching)}
+{\I Vstup:} Mno¾ina K, H, Z + mno¾ina kompatibilních 3-ic (ti, kteøí se spolu snesou)
+{\I Výstup:} Perfektní podmno¾ina 3-ic
+\s{Øe¹ení:} pøes 3,3-SAT (konkrétnìji viz dal¹í pøedná¹ka)
+
+
+\h{3,3-SAT}
+\s{Definice:} {\I 3,3-SAT} je speciální pøípad 3-SATu, kde ka¾dá promìnná se vyskytuje v maximálnì 3 literálech
+
+\s{Pøevod 3-SAT na 3,3-SAT}
+Pokud se promìnná $x$ vyskytuje v $k > 3$ literálech, tak nahradíme výskyty novými promìnnými $x_1 \ldots x_k$ a pøidáme klauzule
+$$
+(\lnot x_1 \lor x_2)
+(\lnot x_2 \lor x_3)
+(\lnot x_3 \lor x_4)
+\ldots
+(\lnot x_{k-1} \lor x_k)
+(\lnot x_k \lor x_1)
+$$
+
+co¾ odpovídá:
+
+$$
+(x_1 \Rightarrow x_2)
+(x_2 \Rightarrow x_3)
+(x_3 \Rightarrow x_4)
+\ldots
+(x_{k-1} \Rightarrow x_k)
+(x_k \Rightarrow x_1)
+$$
+tímto zaruèíme, ¾e v¹echny promìnné budou mít stejnou hodnotu.
+
+\bye
diff --git a/10-prevody/3D parovani.JPG b/10-prevody/3D parovani.JPG
new file mode 100644 (file)
index 0000000..73cd0b0
Binary files /dev/null and b/10-prevody/3D parovani.JPG differ
diff --git a/10-prevody/3D parovani.eps b/10-prevody/3D parovani.eps
new file mode 100644 (file)
index 0000000..94d7c6b
Binary files /dev/null and b/10-prevody/3D parovani.eps differ
diff --git a/10-prevody/Doplnok grafu, NM.JPG b/10-prevody/Doplnok grafu, NM.JPG
new file mode 100644 (file)
index 0000000..726ae2f
Binary files /dev/null and b/10-prevody/Doplnok grafu, NM.JPG differ
diff --git a/10-prevody/Doplnok grafu, NM.eps b/10-prevody/Doplnok grafu, NM.eps
new file mode 100644 (file)
index 0000000..637dd1e
Binary files /dev/null and b/10-prevody/Doplnok grafu, NM.eps differ
diff --git a/10-prevody/Klika - Nez.Mnoz.JPG b/10-prevody/Klika - Nez.Mnoz.JPG
new file mode 100644 (file)
index 0000000..aa379f7
Binary files /dev/null and b/10-prevody/Klika - Nez.Mnoz.JPG differ
diff --git a/10-prevody/Klika - Nez.Mnoz.eps b/10-prevody/Klika - Nez.Mnoz.eps
new file mode 100644 (file)
index 0000000..a3eb367
Binary files /dev/null and b/10-prevody/Klika - Nez.Mnoz.eps differ
diff --git a/10-prevody/Makefile b/10-prevody/Makefile
new file mode 100644 (file)
index 0000000..04b5d58
--- /dev/null
@@ -0,0 +1,3 @@
+P=10-prevody
+
+include ../Makerules
diff --git a/10-prevody/NezMnoz graf.JPG b/10-prevody/NezMnoz graf.JPG
new file mode 100644 (file)
index 0000000..5993db8
Binary files /dev/null and b/10-prevody/NezMnoz graf.JPG differ
diff --git a/10-prevody/NezMnoz graf.eps b/10-prevody/NezMnoz graf.eps
new file mode 100644 (file)
index 0000000..5533c3c
Binary files /dev/null and b/10-prevody/NezMnoz graf.eps differ
diff --git a/10-prevody/matica.JPG b/10-prevody/matica.JPG
new file mode 100644 (file)
index 0000000..7f8c77a
Binary files /dev/null and b/10-prevody/matica.JPG differ
diff --git a/10-prevody/matica.eps b/10-prevody/matica.eps
new file mode 100644 (file)
index 0000000..6812ae9
Binary files /dev/null and b/10-prevody/matica.eps differ
diff --git a/10-prevody/nezavisla mnozina.JPG b/10-prevody/nezavisla mnozina.JPG
new file mode 100644 (file)
index 0000000..ee5bdc9
Binary files /dev/null and b/10-prevody/nezavisla mnozina.JPG differ
diff --git a/10-prevody/nezavisla mnozina.eps b/10-prevody/nezavisla mnozina.eps
new file mode 100644 (file)
index 0000000..63df8c8
Binary files /dev/null and b/10-prevody/nezavisla mnozina.eps differ