-
-\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$?
-
-\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:
+[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$.]
+
+Vstupy mìjme zakódované jen pomocí nul a jednièek (obecnì je jedno, jaký základ pro soustavu
+kódování zvolíme, pøevody mezi soustavami o nìjakém základu $\neq$ 1 jsou co do velikosti
+zápisu polynomiální). Rozhodovací problém je tedy
+$f:\ \{0,1\}^{\ast} \to \{0,1\}$, to jest funkce z mno¾iny v¹ech øetìzcù jednièek a nul
+do mno¾iny $\{1,0\}$, kde 1 na výstupu znamená {\sc ano}, 0 {\sc ne}.
+
+\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?
+
+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ý,\footnote{${}^{\dag}$}{vìrni matfyzáckým vtipùm}} 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 {\it pøevést}) na $B$ (pí¹eme $A \rightarrow B$) právì tehdy,
+kdy¾ existuje funkce $f$ spoèitatelná v polynomiálním èase taková, ¾e pro $\forall
+x: A(x) = B(f(x))$. V¹imnìme si, ¾e $f$ pracující v polynomiálním èase vstup
+zvìt¹í nejvíce polynomiálnì.
+
+\s{Pozorování:} $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)$, kde $a=|q|$; tak¾e
+$B(f(x))$ pobì¾í v~èase $\O(a^\ell + (a^\ell)^k) = \O(a^{k\ell})$, co¾ je
+polynomiální v~délce vstupu~$a$.
+
+
+\s{Pozorování:} Pøevoditelnost je