]> mj.ucw.cz Git - ads2.git/commitdiff
Aproximacni algoritmy: drobnosti v sazbe.
authorMartin Mares <mj@ucw.cz>
Mon, 18 Jan 2010 23:23:22 +0000 (00:23 +0100)
committerMartin Mares <mj@ucw.cz>
Mon, 18 Jan 2010 23:23:22 +0000 (00:23 +0100)
12-apx/12-apx.tex

index d2170b781068c92c6efd3cec1bf7e99fa2ca40da..25697a7e19c0fcb135ad189fcfd486eedd5770e1 100644 (file)
@@ -2,8 +2,8 @@
 \prednaska{12}{Aproximaèní algoritmy}{\vbox{\hbox{(F. Ha¹ko, J. Menda, M. Mare¹,}
        \hbox{ Michal Kozák, Vojta Tùma)}}}
 
-\>Na~minulých pøedná¹kách jsme se zabývali rùznými tì¾kými rozhodovacími 
-problémy. Tato se zabývá postupy, jak se v~praxi vypoøádat s~øe¹ením tìchto 
+\>Na~minulých pøedná¹kách jsme se zabývali rùznými tì¾kými rozhodovacími
+problémy. Tato se zabývá postupy, jak se v~praxi vypoøádat s~øe¹ením tìchto
 problémù.
 
 \h{Co dìlat, kdy¾ potkáme NP-úplný problém}
@@ -14,7 +14,7 @@ probl
 speciálnìj¹í pøípady, které mohou být øe¹itelné v~polynomiálním èase.
 \:Spokojit se s~pøibli¾ným øe¹ením, (pou¾ít aproximaèní algoritmus).
 \:Pou¾ít heuristiku -- napøíklad genetické algoritmy nebo randomizované algoritmy.
-Velmi pomoci mù¾e i jen výhodnìj¹í poøadí pøi~prohledávání èi oøezávání nìkterých 
+Velmi pomoci mù¾e i jen výhodnìj¹í poøadí pøi~prohledávání èi oøezávání nìkterých
 napohled nesmyslných vìtví výpoètu.
 \endalgo
 
@@ -23,7 +23,7 @@ napohled nesmysln
 \>Èasto si vystaèíme s~vyøe¹ením speciálního pøípadu NP-úplného problému, který
 le¾í v~$P$. Napøíklad pøi øe¹ení grafové úlohy nám mù¾e staèit øe¹ení
 pro~speciální druh grafù (stromy, bipartitní grafy, \dots). Barvení grafu je lehké
-napø. pro~dvì barvy èi pro intervalové grafy. 2-SAT, jako speciální pøípad SATu, 
+napø. pro~dvì barvy èi pro intervalové grafy. 2-SAT, jako speciální pøípad SATu,
 se dá øe¹it v~lineárním èase.
 
 \>Uká¾eme si dva takové pøípady (budeme øe¹ení hledat, nejen rozhodovat, zda existuje)
@@ -65,7 +65,7 @@ je maxim
 Jednak místo rozhodovacího problému øe¹íme optimalizaèní, jednak pøedmìty
 mají ceny (pøedchozí verze odpovídala tomu, ¾e ceny jsou rovny hmotnostem).
 Uká¾eme si algoritmus pro øe¹ení tohoto obecného problému, jeho¾ èasová
-slo¾itost bude polynomiální v~poètu pøedmìtù~$n$ a souètu v¹ech cen~$C=\sum_i 
+slo¾itost bude polynomiální v~poètu pøedmìtù~$n$ a souètu v¹ech cen~$C=\sum_i
 c_i$.
 
 \>Pou¾ijeme dynamické programování. Pøedstavme si problém omezený na~prvních~$k$
@@ -75,16 +75,16 @@ Pro $k=0$ je ur
 $A_{k-1}$, spoèítáme $A_k$ následovnì: $A_k(c)$ odpovídá nìjaké podmno¾inì
 pøedmìtù z~$1,\ldots,k$. V~této podmno¾inì jsme buïto $k$-tý pøedmìt nepou¾ili
 (a pak je $A_k(c)=A_{k-1}(c)$), nebo pou¾ili a tehdy bude $A_k(c) =
-A_{k-1}(c-c_k) + h_k$ (to samozøejmì jen pokud $c\ge c_k$). Z~tìchto dvou 
+A_{k-1}(c-c_k) + h_k$ (to samozøejmì jen pokud $c\ge c_k$). Z~tìchto dvou
 mo¾ností si vybereme tu, která dává mno¾inu s~men¹í hmotností. Tedy:
 $$
 A_k(c) = \min (A_{k-1}(c), A_{k-1}(c-c_k) + h_k).
 $$
-Tímto zpùsobem v~èase $\O(C)$ spoèteme $A_k(c)$ pro fixní $k$ a v¹echna $c$, 
+Tímto zpùsobem v~èase $\O(C)$ spoèteme $A_k(c)$ pro fixní $k$ a v¹echna $c$,
 v~èase $\O(nC)$ pak v¹echny $A_k(c)$.
 
 \>Podle $A_n$ snadno nalezneme maximální cenu mno¾iny, která se vejde do~batohu.
-To bude nejvìt¹í~$c^*$, pro nì¾ je $A_n(c^*) < \infty$. Jeho nalezení nás stojí 
+To bude nejvìt¹í~$c^*$, pro nì¾ je $A_n(c^*) < \infty$. Jeho nalezení nás stojí
 èas $\O(C)$.
 
 \>A~jak zjistit, které pøedmìty do~nalezené mno¾iny patøí? Upravíme algoritmus,
@@ -95,18 +95,18 @@ a tak d
 prvku k~prvnímu.
 
 \>Ukázali jsme tedy algoritmus s~èasovou slo¾itostí $\O(nC)$, který vyøe¹í
-problém batohu. Jeho slo¾itost není polynomem ve~velikosti vstupu ($C$~mù¾e 
-být a¾ exponenciálnì velké vzhledem k~velikosti vstupu), ale pouze ve~velikosti 
-èísel na~vstupu. Takovým algoritmùm se øíká {\I pseudopolynomiální.} Ani takové 
-algoritmy ale nejsou k dispozici pro v¹echny problémy (napø. u problému obchodního 
+problém batohu. Jeho slo¾itost není polynomem ve~velikosti vstupu ($C$~mù¾e
+být a¾ exponenciálnì velké vzhledem k~velikosti vstupu), ale pouze ve~velikosti
+èísel na~vstupu. Takovým algoritmùm se øíká {\I pseudopolynomiální.} Ani takové
+algoritmy ale nejsou k dispozici pro v¹echny problémy (napø. u problému obchodního
 cestujícího nám vùbec nepomù¾e, ¾e váhy hran budou malá èísla).
 
 \s{Verze bez cen:} Na verzi s~cenami rovnými hmotnostem se dá pou¾ít
 i jiný algoritmus zalo¾ený na~dynamickém programování: poèítáme mno¾iny
 $Z_k$ obsahující v¹echny hmotnosti men¹í ne¾~$H$, kterých nabývá
 nìjaká podmno¾ina prvních~$k$ prvkù. Pøitom $Z_0=\{0\}$, $Z_k$
-spoèteme ze~$Z_{k-1}$ --- udr¾ujme si $Z_{k-1}$ jako setøídìný spojový seznam, 
-výpoèet dal¹ího seznamu udìláme slitím dvou seznamù $Z_{k-1}$ a $Z_{k-1}$ se 
+spoèteme ze~$Z_{k-1}$ --- udr¾ujme si $Z_{k-1}$ jako setøídìný spojový seznam,
+výpoèet dal¹ího seznamu udìláme slitím dvou seznamù $Z_{k-1}$ a $Z_{k-1}$ se
 v¹emi prvky zvý¹enými o hmotnost $k$ zahazujíce duplicitní a pøíli¹ velké hodnoty ---
 a ze~$Z_n$ vyèteme výsledek. V¹echny tyto mno¾iny
 mají nejvý¹e $H$ prvkù, tak¾e celková èasová slo¾itost algoritmu je~$\O(nH)$.
@@ -129,13 +129,13 @@ je 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 
+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:} 
+\>{\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. 
+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ì
@@ -143,31 +143,31 @@ podm
 
 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 
+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ù 
+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é 
+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ì¾¹í 
+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-aproximaènì. Ve~speciální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 
+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:}
@@ -205,8 +205,8 @@ $$
 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 
+\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}
@@ -225,10 +225,10 @@ n
 \s{Základní my¹lenka:}
 
 Oznaèíme si $c_{max}$ maximum z~cen~$c_i$. Zvolíme si nìjaké pøirozené èíslo~$M < c_{max}$
-a zobrazíme interval cen $[0, c_{max}]$ na $[0,M]$ (tedy ka¾dou cenu znásobíme 
+a zobrazíme interval cen $[0, c_{max}]$ na $[0,M]$ (tedy ka¾dou cenu znásobíme
 $M/c_{max}$).
 Jak jsme tím zkreslili výsledek? V¹imnìme si, ¾e efekt je stejný, jako kdybychom jednotlivé
-ceny zaokrouhlili na~násobky èísla $c_{max}/M$ (prvky z intervalu 
+ceny zaokrouhlili na~násobky èísla $c_{max}/M$ (prvky z intervalu
 $[i\cdot c_{max}/M,(i+1)\cdot c_{max}/M)$ se zobrazí na stejný prvek). Ka¾dé $c_i$ jsme tím
 tedy zmìnili o~nejvý¹e $c_{max}/M$, celkovou cenu libovolné podmno¾iny pøedmìtù pak
 nejvý¹e o~$n\cdot c_{max}/M$. Teï si je¹tì v¹imnìme, ¾e pokud ze~zadání odstraníme
@@ -287,8 +287,8 @@ Algoritmus tedy v
 a~doká¾e to pro libovolné~$\varepsilon$ v~èase polynomiálním v~$n$. Takovému algoritmu øíkáme
 {\I polynomiální aproximaèní schéma} (jinak té¾ PTAS\foot{Polynomial-Time Approximation Scheme}).
 V~na¹em pøípadì je dokonce slo¾itost polynomiální i v~závislosti na~$1/\varepsilon$, tak¾e
-schéma je {\I plnì polynomiální} (øeèené té¾ FPTAS\foot{Fully Polynomial-Time Approximation 
-Scheme}). U nìkterých problémù se stává, ¾e aproximaèní schéma závisí na 
+schéma je {\I plnì polynomiální} (øeèené té¾ FPTAS\foot{Fully Polynomial-Time Approximation
+Scheme}). U nìkterých problémù se stává, ¾e aproximaèní schéma závisí na
 $1/\varepsilon$ exponenciálnì, co¾ tak pøíjemné není. Shròme, co jsme zjistili, do následující vìty:
 
 \s{Vìta:}