+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$.