+\>{\I Výstup:} Hamiltonovská kru¾nice (obsahující v¹echny vrcholy grafu), a~to ta nejkrat¹í
+(podle ohodnocení).
+
+\>Tento problém je hned na~první pohled nároèný -- u¾ sama existence
+hamiltonovské kru¾nice je NP-úplná. Najdeme aproximaèní algoritmus nejprve za pøedpokladu,
+¾e vrcholy splòují trojúhelníkovou nerovnost (tj. $\forall x,y,z \in V: w(xz)\le
+w(xy)+w(yz)$), potom uká¾eme, ¾e v úplnì obecném pøípadé by samotná existence
+aproximaèního algoritmu implikovala ${\rm P=NP }$.
+
+\>{\I a) trojúhelníková nerovnost:}
+
+Existuje pìkný algoritmus, který najde hamiltonovskou kru¾nici o délce $\leq
+2\cdot opt$, kde $opt$ je délka nejkrat¹í hamiltonovské kru¾nice.
+Vedle pøedpokladu trojúhelníkové
+nerovnosti budeme potøebovat, aby ná¹ graf byl úplný. Souhrnnì mù¾eme
+pøedpokládat, ¾e úlohu øe¹íme v nìjakém metrickém protoru, ve kterém jsou obì
+podmínky podle definice splnìny.
+
+Najdeme nejmen¹í kostru grafu a obchodnímu cestujícímu poradíme, a» jde po~ní -- kostru
+zakoøeníme a projdeme jako strom do hloubky, pøièem¾ se zastavíme a¾ v koøeni po projití
+v¹ech vrcholù. Problém v¹ak je, ¾e prùchod po kostøe obsahuje
+nìkteré vrcholy i hrany vícekrát, a proto musíme nahradit nepovolené vracení se.
+Máme-li na nìjaký vrchol vstoupit podruhé, prostì ho ignorujeme a pøesuneme se
+rovnou na dal¹í nenav¹tívený -- dovolit si to mù¾eme, graf je úplný a obsahuje
+hrany mezi v¹emi dvojicemi vrcholù
+(jinak øeèeno, poøadí vrcholù kru¾nice bude preorder výpis prùchodem do hloubky).
+Pokud platí trojúhelníková nerovnost, tak si tìmito zkratkami neu¹kodíme.
+Nech» minimální kostra má váhu~$T$. Pokud bychom pro¹li celou kostru, bude mít
+sled váhu~$2T$ (ka¾dou hranou kostry jsme ¹li tam a zpátky), a pøeskakování
+vrcholù celkovou váhu nezvìt¹uje (pøi pøeskoku
+nahradíme cestu $xyz$ jedinou hranou $xz$, pøièem¾ z trojúhelníkové nerovnosti
+máme $xz \leq xy + xz$), tak¾e váha nalezené
+hamiltonovské kru¾nice bude také nanejvý¹ $2T$.
+
+Kdy¾ máme hamiltonovskou kru¾nici $C$ a z~ní vy¹krtneme hranu, dostaneme kostru
+grafu~$G$ s~váhou men¹í ne¾ $C$ -- ale ka¾dá kostra je alespoò tak tì¾ká
+jako minimální kostra $T$. Tedy optimální Hamiltonovská kru¾nice je urèitì tì¾¹í
+ne¾ minimální kostra $T$. Kdy¾ tyto dvì nerovnosti slo¾íme
+dohromady, algoritmus nám vrátí hamiltonovskou kru¾nici $T'$ s~váhou nanejvý¹
+dvojnásobnou vzhledem k optimální hamiltonovské kru¾nici ($T' \leq 2T < 2C$). Takovéto
+algoritmy se nazývají {\I 2-aproximaèní}, kdy¾ øe¹ení je maximálnì dvojnásobné
+od~optimálního.\foot{Hezkým trikem se v obecných metrických prostorech umí
+$1{,}5$-aproximace. Ve~nìkterých metrických prostorech (tøeba v euklidovské
+rovinì) se aproximaèní pomìr dá dokonce srazit na
+libovolnì blízko k 1. Zaplatíme ale na èase -- èím pøesnìj¹í výsledek
+po algoritmu chceme, tím déle to bude trvat.}
+
+\>{\I b) bez~trojúhelníkové nerovnosti:}
+
+Zde se budeme naopak sna¾it ukázat, ¾e ¾ádný polynomiální aproximaèní
+algoritmus neexistuje.
+
+\s{Vìta:} Pokud pro~libovolné~$\varepsilon>0$ existuje polynomiální
+$(1+\varepsilon)$-aproximaèní algoritmus pro~problém obchodního cestujícího bez~trojúhelníkové nerovnosti, tak ${\rm P = NP }$.
+
+\proof Uká¾eme, ¾e v~takovém pøípadì doká¾eme v~polynomiálním èase zjistit,
+zda v grafu existuje hamiltonovská kru¾nice.
+
+\>Dostali jsme graf~$G$, v~kterém hledáme hamiltonovskou kru¾nici. Doplníme
+$G$ na~úplný graf~$G'$ a~váhy hran~$G'$ nastavíme takto:
+\itemize\ibull
+\: $w(e) = 1$, kdy¾ $e \in E(G)$
+\: $w(e) = c \gg 1$, kdy¾ $e \not\in E(G)$
+\endlist
+\>Konstantu $c$ potøebujeme zvolit tak velkou, abychom jasnì poznali, jestli
+je ka¾dá hrana z nalezené Hamiltonovské kru¾nice hranou grafu $G$ (pokud by
+nebyla, bude kru¾nice obsahovat aspoò jednu hranu s váhou $c$, která vy¾ene
+souèet poznatelnì vysoko). Pokuï existuje hamiltonovská kru¾nice v~$G'$ slo¾ená jen
+z~hran, které byly
+pùvodnì v~$G$, pak optimální øe¹ení bude mít váhu~$n$, jinak bude urèitì
+minimálnì $n-1+c$. Kdy¾ máme aproximaèní algoritmus s~pomìrem~$1+\varepsilon$,
+musí tedy být
+$$
+\eqalign{
+(1+\varepsilon)\cdot n &< n-1+c \cr
+\varepsilon n+1 &< c
+}
+$$
+\>Kdyby takový algoritmus existoval, máme polynomiální algoritmus
+na~Hamiltonovsku kru¾nici.
+\qed
+
+\s{Poznámka:} O existenci pseudopolynomiálního algoritmu
+platí analogická vìta, a doká¾e se analogicky -- existující hrany budou
+mít hranu 1, neexistující váhu 2.
+
+\h{Aproximaèní schéma pro problém batohu}