Skip to content
Snippets Groups Projects
Commit 600c1160 authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

prace: Korektury od vedoucího

parent 472c5af5
No related branches found
No related tags found
No related merge requests found
......@@ -10,15 +10,15 @@ ft:
supervisor: doc. Mgr. Robert Šámal, Ph.D.
abstract: |
Binární paint shop je následující optimalizační úloha:
Na barvicí linku vjíždí řada aut.
Od každého typu auta jsou někde v řadě právě dvě auta a
jedno z nich bychom rádi nabarvili červeně a druhé modře.
Na barvicí linku vjíždí řada aut.
Od každého typu auta jsou někde v řadě právě dvě auta a
jedno z nich bychom rádi nabarvili červeně a druhé modře.
Měnit barvu, kterou aktuálně barvíme, je drahá operace,
proto bychom rádi pro danou posloupnost aut provedli co nejméně změn.
Vstupem úlohy jsou typy aut v posloupnost a výstupem je jejich obarvení.
Je známé, že úloha je NP-těžká a za určitých předpokladů dokonce neaproximovatelná,
proto je na místě zkoumat řešení, co se chovají dobře na náhodném vstupu.
V této práci je představen algoritmus založený na semidefinitním programování,
Je známé, že úloha je NP-těžká a za určitých předpokladů dokonce neaproximovatelná,
proto je na místě zkoumat řešení, co se chovají dobře na náhodném vstupu.
V této práci je představen algoritmus založený na semidefinitním programování,
který dle provedených měření pro náhodné vstupy dosahuje výsledků okolo 0.34-násobku počtu typů aut.
O algoritmu jsme dokázali, že pro každý vstup vrátí ve střední hodnotě řešení nejhůře o 0.212 násobek počtu typů aut horší než optimum.
keywords: [binární paint shop problém, aproximační algoritmus]
......@@ -98,9 +98,9 @@ Zadání binárního paint shop problému (dále těž BPS) je následující:
V řadě je $2n$​ aut $n$ různých typů -- od každého typu dvě.
Chtěli bychom od každého typu nabarvit jedno auto červeně a druhé modře.
Auta však na barvicí linku vjíždí v pořadí, v jakém jsou v řadě.
Barvící linka je optimalizovaná na barvení velkého počtu aut jednou barvou.
Barvicí linka je optimalizovaná na barvení velkého počtu aut jednou barvou.
Tedy měnit barvu, kterou se barví, je složitá a drahá záležitost.
Chceme tedy nají obarvení aut tak, aby od každého typu bylo jedno červené a jedno modré, přitom počet změn barev v řadě byl co nejmenší.
Chceme tedy najít obarvení aut tak, aby od každého typu bylo jedno červené a jedno modré, přitom počet změn barev v řadě byl co nejmenší.
:::
Počet změn barev řešení považujeme za _skóre_ algoritmu.
......@@ -119,8 +119,8 @@ Dále se pokusíme porovnat již známé algoritmy.
Struktura práce
---------------
Nejprve si zavedeme notaci potřebnou pro pohodlnou práci s BPS
a definujeme si aproximační algoritmy.
Nejprve zavedeme notaci potřebnou pro pohodlnou práci s BPS
a definujeme aproximační algoritmy.
Kapitola 2 obsahuje shrnutí doposud známých algoritmů a jiných výsledků ohledně BPS.
V kapitole 3 je představen princip semidefinitního programování,
které má uplatnění v algoritmu představeném o kapitole 4.
......@@ -165,14 +165,14 @@ stejně jako u variant s algoritmem, jen skóre daného algoritmu nahradíme za
Definice aproximačních algoritmů
--------------------------------
Protože ne na všechny problémy známe polynomiální algoritmus, co je schopný je vyřešit,
Protože ne pro všechny problémy známe polynomiální algoritmus, který je schopný je vyřešit,
zajímavý výsledek může být, i když se k řešení zvládneme jen v nějakém smyslu alespoň přiblížit.
Na to nejprve musíme říct, co pro nás znamená, že nějaké řešení je několikrát horší než jiné. To nám poskytne obecná definice optimalizačního problému.
::: {c=box t=def name="Optimalizační problém"}
Problém je _optimalizační_, pokud pro každý vstup $I$, existuje množina
přípustných řešení $F(I)$.
Dále existuje účelová funkce $f$, která pro každý vstup a jeho přípustné řešení určuje reálné nezáporné číslo -- jeho hodnotu.
Dále existuje účelová funkce $f$, která pro každý vstup a jeho přípustné řešení určuje reálné nezáporné číslo -- jeho hodnotu.
Pokud se jedná o minimalizační problém, tak pod pojmem _optimum_ daného vstupu (značíme $\opt(I)$) myslíme infimum hodnot účelové funkce přes všechna přípustná řešení, tedy $\inf f[F(i)]$.
Pro maximalizační problém analogicky použijeme supremum.
......@@ -191,9 +191,9 @@ aproximace, kde $g(n)$ je konstantní funkce rovna $c$.
U maximalizačních problémů je drobný problém v terminologii,
protože není shoda na tom, jestli má platit
$f(A(I)) \ge g(|I|) \cdot \opt(I)$
$f(\alg(I)) \ge g(|I|) \cdot \opt(I)$
nebo
$f(A(I)) \ge {1\over g(|I|)} \cdot \opt(I)$.
$f(\alg(I)) \ge {1\over g(|I|)} \cdot \opt(I)$.
Naštěstí podle kontextu jde snadno rozhodnout, která definice se používá,
protože je potřeba násobit optimum číslem menším rovno jedné (jinak by pro
kladné hodnoty účelové funkce nemohl existovat žádný vyhovující algoritmus).
......@@ -223,7 +223,7 @@ Pokud existuje $(1+\varepsilon)$-aproximační algoritmus pro každé $\varepsil
Doposud známé výsledky
======================
Bonsmaa, Epping, a Hochstättler [@apx] dokázali, že optimalizační verze BPS je $\APX$-těžký problém,
Bonsmaa, Epping a Hochstättler [@apx] dokázali, že optimalizační verze BPS je $\APX$-těžký problém,
což je silnější tvrzení, než že rozhodovací verze je $\NP$-těžká.
Za předpokladu $\P \neq \NP$ víme, že kromě polynomiálního algoritmu na rozhodovací verzi nemůže existovat
ani polynomiální aproximační schéma na optimalizační verzi.
......@@ -290,7 +290,7 @@ Zajímavé je pro nás zkoumat chování algoritmů na velkých vstupech, tedy d
smysl uvažovat limitu střední hodnoty do nekonečna.
Ovšem s narůstajícím počtem aut narůstá i počet potřebných změn, takže
samotná limita střední hodnoty moc nedává smysl, protože by byla nekonečná.
Místo ní budeme uvažovat $\lim_{n\to\infty} {\gamma_{\alg}(n)) / n} = \lim_{n\to\infty}\delta_{\alg}(n)$.
Místo ní budeme uvažovat $\lim_{n\to\infty} {\gamma_{\alg}(n) / n} = \lim_{n\to\infty}\delta_{\alg}(n)$.
O ní víme, že pro libovolný algoritmus (pokud existuje) bude v intervalu $[0, 2]$,
protože maximální počet změn musí být mezi $0$ a $2n-1$.
......@@ -347,7 +347,7 @@ a pokud budeme přidávat auto do okolí evidované dvojice tak, že
prohození barev dané dvojice by pomohlo, prohodíme její barvy.
Budeme pracovat nad rozšířenou abecedou barev o znak "$*$" reprezentující neurčenou barvu.
Při rekurzi budeme udržovat invariant, že pro každý typ obě auta buď budou označeny $*$ a nebo ani jedno z nich nebude označeno $*$ a pak nutně budou mít různé barvy.
Při rekurzi budeme udržovat invariant, že pro každý typ obě auta buď budou označena $*$ a nebo ani jedno z nich nebude označeno $*$ a pak nutně budou mít různé barvy.
Navíc bude platit, že $*$ nikdy není na okrajích a nejsou dvě vedle sebe.
Specificky tedy na $*$ budeme přebarvovat dvojici aut v momentě, kdy získá všechny sousedy.
......@@ -370,7 +370,7 @@ F) Když $N(o_0) = \{c(1), *\}$, nastavíme $c(0) = c(1)$ a přenastavíme $*$ v
A druhé auto typu $t_0$ obarvíme zbývající barvou.
Pokud auta typu $t_{1}$ spolu nesousedí, $* \not\in N(1) \cap N(o_1)$
Pokud auta typu $t_{1}$ spolu nesousedí, $* \not\in N(1) \cup N(o_1)$
a prohození barev aut typu $t_1$ by zachovalo počet změn, přenastavíme jejich barvy na $*$.
Po návratu ze všech rekurzí zbylé dvojice aut $*$ přebarvíme na dvě různé barvy.
......@@ -459,14 +459,14 @@ Pro nás bude důležitý následující fakt z lineární algebry:
::: {c=box t=fact}
Nechť $X \in \SYM_n$. Následující tvrzení jsou ekvivalentní definice pozitivně semidefinitní matice:
- Všechny vlastní čísla matice $X$ jsou nezáporná.
- Všechna vlastní čísla matice $X$ jsou nezáporná.
- Pro každý vektor $\vec{x} \in \R^n$ platí $\vec{x}^{\rm T} X\vec{x}\ge 0$.
- Existuje matice $Y \in \R^{n\times n}$ taková, že $X = Y^{\rm T} Y$.
:::
Pro nás bude důležitá zejména třetí podmínka,
protože navíc platí, že ze semidefinitní matice $X$ zvládneme zkonstruovat $Y$
pomocí Choleského dekompozice a to v čase $\O(n^3)$.
v čase $\O(n^3)$ pomocí tzv. Choleského dekompozice.
Navíc pro libovolnou reálnou matici $Y$ je $Y^{\rm T} Y$ symetrická.
Tedy semidefinitní programování můžeme chápat jako optimalizační úlohu na $Y\in \R^{n\times n}$.
......@@ -487,7 +487,7 @@ Představíme si pravděpodobnostní aproximační algoritmus založený na semi
::: {c=box t=task}
Nechť $G=(V, E)$ je graf s hranami ohodnocenými nezápornými čísly dle $h: E \rightarrow \R^+_0$.
Řezem grafu rozumíme rozdělení vrcholů na dvě disjunktní množiny $A \cup B = V$.
Hodnotou daného řezu je pak součet cen hran vedoucích mezi $A$ a $B$. Tedy:
Hodnotou daného řezu je pak součet cen hran vedoucích mezi $A$ a $B$. Tedy:
$$
H(A,B) = \sum_{\{u,v\}\in E\atop u\in A, v\in B} h({u,v})
$$
......@@ -496,7 +496,7 @@ Cílem je maximalizovat hodnotu řezu.
Problém maximálního řezu (resp. rozhodovací verze, kde se ptáme na existenci řezu alespoň dané velikosti)
je NP-úplný [@maxcut-np], proto
se u něj zkoumají aproximační algoritmy a pravděpodobností aproximační algoritmy.
se u něj zkoumají aproximační algoritmy a pravděpodobnostní aproximační algoritmy.
Nejprve si ukážeme triviální $0.5$-aproximační pravděpodobnostní algoritmus:
......@@ -505,12 +505,12 @@ Každý vrchol uniformně náhodně přiřaď do množiny $A$ nebo $B$.
:::
::: {c=box t=theorem}
Triviální algoritmus je $0.5$ aproximační pravděpodobnostní algoritmus.
Triviální algoritmus je $0.5$-aproximační pravděpodobnostní algoritmus.
:::
::: {c=proof}
Každá hrana bude v řezu s pravděpodobností $1/2$ -- při umisťování druhého vrcholu dané hrany
máme pravděpodobnost $1/2$, že ho umístíme do stejné množiny a tedy hrna nebude součásti řezu
máme pravděpodobnost $1/2$, že ho umístíme do stejné množiny a tedy hrana nebude součásti řezu
a pravděpodobnost $1/2$ že do opačné a tedy bude součástí řezu.
Součet hran v řezu je součtem indikátorů jevů přítomnosti jednotlivých hran v řezu vynásobený jejich hodnotou.
Z linearity střední hodnoty tedy střední hodnota součtu vah hran v řezu je $1/2$ celkového součtu vah hran, což je alespoň $1/2$ optima.
......@@ -577,7 +577,7 @@ spočítat skalární součin se $\vec{z}$ a podle znaménka víme,
do kterého poloprostoru patří.
Pokud vybereme uniformně náhodný jednotkový vektor, tak jsme uniformně náhodně vybrali nadrovinu.
Jednotkový vektor můžeme generovat tak, že vygenerujeme náhodný vektor nezávisle po složkách z normálního rozdělení, a pak ho znormujeme.
Povšimne si, že normalizace ani není potřeba,
Povšimněme si, že normalizace ani není potřeba,
protože to na znaménku součinů nic nemění.
Nyní pojďme precizněji spočítat pravděpodobnost toho, že se dvojice bodů (vektorů) $\vec{y_u}$,
......@@ -690,14 +690,14 @@ Goemansův-Williamsonův algoritmus je pravděpodobnostní $0.878$-aproxi\-mačn
::: {c=proof}
Využitím předešlých pozorování a elipsoidové metody získáme (MC značí max cut, tedy maximální řez):
$$ \E[\hbox{Řešení MC}] \ge c\cdot\,\hbox{Řešení SDP} \ge c(1-\varepsilon)\cdot\,\hbox{Optim. SDP} \ge c(1-\varepsilon)\cdot\,\hbox{Optim. MC}.$$
Pro dostatečně malé $\varepsilon$ se tedy jedná o $0.878$ pravděpodobnostní aproximační algoritmus.
Pro dostatečně malé $\varepsilon$ se tedy jedná o pravděpodobnostní $0.878$-aproximační algoritmus.
:::
Řešení semidefinitním programováním
====================================
Řešení vychází z Goemansův-Williamsonova algoritmu na maximální řez.
Řešení vychází z Goemansova-Williamsonova algoritmu na maximální řez.
Pro každé auto nám bude semidefinitní program umísťovat bod (někdy také chápán jako vektor) na jednotkovou sféru.
Poté náhodně rozřízneme nadrovinou sféru na dvě poloviny
a podle toho, do které poloviny auto patří, zvolíme jeho barvu.
......@@ -713,7 +713,7 @@ $$\progline{maximalizuj}{\sum_{0\le i<2n-1} \vec{y_i}^{\rm T} \vec{y_{i+1}}}{}$$
$$\progline{za podmínek}{\vec{y_{a_{i,0}}} = -\vec{y_{a_{i,1}}}}{0\le i < n}$$
$$\progline{}{|y_i| = 1}{0\le i < 2n}$$
Dále uniformně náhodně zvolíme jednotkový vektor $z\in \R^{2n}$
a červeně obarvíme právě ty auta $i$, pro které $y_i^{\rm T} z \ge 0$.
a červeně obarvíme právě ty auta $i$, pro která $y_i^{\rm T} z \ge 0$.
Náhodných výběrů vektoru je možné provést vícero a pak vybrat nejlepší nalezené řešení.
:::
......@@ -722,8 +722,8 @@ a $-1$, že jsou protilehlé.
Účelovou funkci můžeme ekvivalentně zapsat jako
$$ \hbox{minimalizuj}\qquad \sum_{0\le i < 2n-1} \frac{1}{2} - \frac{\vec{y_i}^{\rm T} \vec{y_{i+1}}}{2} = \frac{2n-1}2 - \frac12 \sum_{0 \le i < 2n-1} \vec{y_i}^{\rm T} \vec{y_{i+1}} $$
Nyní tedy pro každou dvojici sousedních aut přičítáme číslo mezi $0$ a $1$, kde $0$ nastane pro stejné vektory,
mezi nimiž nikdy nebude změna barvy a $1$ nastane v případě opačných vektorů, mezi nimiž se nutně barva změní.
Nyní tedy pro každou dvojici sousedních aut přičítáme číslo mezi $0$ a $1$, kde $0$ přičteme pro stejné vektory,
mezi nimiž nikdy nebude změna barvy a $1$ přičteme v případě opačných vektorů, mezi nimiž se nutně barva změní.
Účelovou funkci se snažíme minimalizovat.
::: {c=box t=theorem}
......@@ -983,7 +983,7 @@ fig.update_layout(
Distribuce skalárních součinů $100$ běhů algoritmu pro $n=200$.
:::
Z grafu jde vidět, že skoro nikdy semidefinitní program neumístí sousední body do protilehlých částí. Drobnou výjimku tvoří hodnota skalárního součinu okolo $-1$, kterých semidefinitní program
Z grafu je vidět, že skoro nikdy semidefinitní program neumístí sousední body do protilehlých částí. Drobnou výjimku tvoří hodnota skalárního součinu okolo $-1$, kterých semidefinitní program
za $100$ běhů vyrobil zhruba $100$.
K tomuto mohl být donucen existencí dvojic aut stejného typu hned vedle sebe, kdy nemá jinou možnost než mezi nimi mít skalární součin $-1$.
......@@ -1008,7 +1008,7 @@ Semidefinitní program rozmísťuje vektory do $n-1$ dimenzionální sféry.
Z naměřených dat však vychází, že semidefinitní program většinou generuje řešení, které
má mnohem menší dimenzi. Přesněji řečeno, pro řešení často platí, že
všechny vektory v něm mají několik prvních souřadnic velké hodnoty
a ve zbylých souřadnic mají hodnoty blízké nule.
a ve zbylých souřadnicích mají hodnoty blízké nule.
Tedy kdybychom vektory promítli na méně dimenzionální sféru (vzali místo nich nejbližší bod na ní), tak se účelová funkce moc nezmění.
......@@ -1027,7 +1027,7 @@ return processor.transform([pf.CodeBlock(sdp_visualize.visualize("semidef_prog_n
```
Světlá barva bodu značí bod na zadní straně sféry.
Černé čáry spojují sousední auta a šedé jsou jim středově simetrické (protože dvojice aut, jejichž druhá auta stejného typu jsou vedle sebe, je také přitahována k sobě).
Černé čáry spojují sousední auta a šedé jsou jim středově symetrické (protože dvojice aut, jejichž druhá auta stejného typu jsou vedle sebe, je také přitahována k sobě).
Vizualizace jednoho z řešení pro $n=50$, které se vejde do 3D.
:::
......@@ -1268,7 +1268,7 @@ $\widehat{\delta_{\alg}(n)^2}$ značí výběrový rozptyl, tedy $\frac{1}{m-1}\
Dolní odhad
-----------
Výstup z každého algoritmu nám dává hodní odhad na optimum daného vstupu.
Výstup z každého algoritmu nám dává horní odhad na optimum daného vstupu.
Ovšem semidefinitní programování nám navíc dává i dolní odhad na optimum, protože víme,
že optimum jednoho z ekvivalentních vyjádření účelové funkce je vždy menši rovno optimu BPS.
Použité řešiče semidefinitních programů nám navíc dají i horní odhad na optimum SDP (který se od nalezeného řešení může nepatrně lišit).
......@@ -1321,13 +1321,13 @@ V této práci jsme představili algoritmus ${\bf sdp}$ na BPS založený na sem
Bohužel se nám nepodařilo dokázat žádný netriviální odhad na $\delta_{\algo{sdp}}^+$.
Nicméně dle naměřených dat můžeme soudit, že $\delta_{\algo{sdp}}^+$ se pohybuje okolo 0.34.
Místo toho jsme však dokázali, že pro libovolný vstup bude střední hodnota
(přes náhodné čísla generovaná algoritmem nikoliv přes vstup)
(přes náhodná čísla generovaná algoritmem nikoliv přes vstup)
skóre řešení nejhůře $0.212 n$ od optima, tedy, že platí $$\forall \alpha:\qquad\E[\delta_{\algo{sdp}}(\alpha)] \le \delta(\alpha) + 0.212 n.$$
Toto řešení jsme dále dokonce dvakrát implementovali s využitím
různých implementací řešení semidefinitních programů, které jsme tímto i porovnali.
Z naměřených dat jsme jednak odhadli střední hodnotu skóre algoritmu přes náhodný vstup.
A druhak jsme si všimli, že dimenze řešení semidefinitního programování je poměrně malá, což jsme zformulovali jako hypotézu.
A také jsme si všimli, že dimenze řešení semidefinitního programování je poměrně malá, což jsme zformulovali jako hypotézu.
Stále však zůstává otevřená otázka, kolik přesně je $\delta^+$ a $\delta^-$ (a případně zda se rovnají)
a jaké nejlepší $\delta^+_{\alg}$ je možno dosáhnout polynomiálním algoritmem $\alg$.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment