There are exactly two cars of each type somewhere in the line.
The aim is to color one of these two cars red and the other blue.
It is hard to change the current color in the paint shop
It is expensive to switch the current color in the paint shop
so for a given sequence of cars we would like to minimize the number of color changes.
Input of the task are types of cars in the line and output is the coloring of theses cars.
This task is known to be NP-hard, and under specific conditions, it defies polynomial time approximations.
Therefore, it is a good idea to find some algorithms which behave well on randomly generated input.
In this thesis is introduced new algorithm based on semidefinite programming
which considered to madden test on random inputs reach solutions near to 0.34 times number of car types.
Therefore, it is a good idea to find some algorithms which behave well on a randomly generated input.
This thesis introduces an algorithm based on semidefinite programming. Experiments on random inputs show it reaches solutions near to 0.34 times the number of car types.
We proved that for each input this algorithm returns a solution with expected deviation from optimum of at most 0.212 times the number of car types.
---
``` {c=cmt}
Klikaci věci + generování obsahu formátítkem
Algoritmy velké písmena
Obsah bez změn velikostí
barevné schéma grafu
Absolutní číslování ve struktuře
Vizualizace: více pohledů a správné pořadí hran.
Jednotná TeXlib pro asymptote
Velikost \vec
TODO SAZBA blockquote
```
::: {only=html}
...
...
@@ -110,8 +103,8 @@ 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ší.
:::
Počet změn barev řešení považujeme za skóre algoritmu.
Relativní skóre pak je poměr skóre a počtu typů aut.
Počet změn barev řešení považujeme za _skóre_ algoritmu.
_Relativní skóre_ pak je poměr skóre a počtu typů aut.
Problém můžeme chápat buď jako optimalizační problém, kde účelová funkce je počet změn v řešení a snažíme se ji minimalizovat,
nebo jako rozhodovací problém, kde se ptáme, jestli existuje řešení s nejvýše nějakým zadaným počtem změn.
...
...
@@ -128,11 +121,11 @@ Struktura práce
Nejprve si zavedeme notaci potřebnou pro pohodlnou práci s BPS
a definujeme si aproximační algoritmy.
Dále následují shrnutí doposud známých algoritmů a jiných výsledků ohledně BPS.
V následující kapitole je představen princip semidefinitního programování,
které má uplatnění v algoritmu představeném o kapitolu dál.
Poslední kapitola se věnuje praktické implementaci tohoto algoritmu
a naměřeným datům o něm.
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.
Kapitola 5 se věnuje praktické implementacím algoritmů
a naměřeným datům o nich.
Notace
------
...
...
@@ -223,9 +216,9 @@ Navíc chceme, aby všechna přípustná řešení měla omezenou délku nějak
Snadno nahlédneme, že za takovýchto podmínek je rozhodovací verze,
jestli je optimum alespoň zadané číslo, v $\NP$.
Pro takovou úlohu většinou hledáme polynomiální aproximační algoritmus.
Binární paint shop vyhovuje všem těchto podmínkám.
Binární paint shop vyhovuje všem těmto podmínkám.
Pokud existuje $(1-\varepsilon)$-aproximační algoritmus pro každé $\varepsilon > 0$, říkáme, že máme aproximační schéma.
Pokud existuje $(1+\varepsilon)$-aproximační algoritmus pro každé $\varepsilon > 0$, říkáme, že máme aproximační schéma.
Doposud známé výsledky
======================
...
...
@@ -290,7 +283,7 @@ Graf střední hodnoty rel. skóre hladového řešení $\delta_{\algo g}(n)$ v
:::
U hladového řešení je tedy střední hodnota skóre přes uniformně náhodný vstup přesně vyčíslená.
Pro nás je zejména důležité, že ji jsme schopni shora odhadnout.
Pro nás je zejména důležité, že jsme ji schopni shora odhadnout.
Střední hodnotu totiž můžeme považovat za ukazatel kvality algoritmu (čím menší je, tím se jedná o lepší algoritmus) a tedy horní odhad nám dává záruku kvality algoritmu.
Zajímavé je pro nás zkoumat chování algoritmů na velkých vstupech, tedy dává
...
...
@@ -368,7 +361,7 @@ Ze vstupu odebereme auta typu $t_0$ a zarekurzíme se na zbytek.
Tím získáme nějaké obarvení, které může použít na původní vstup s tím,
že auta typu $t_0$ zatím nebudou obarvená, ty dobarvíme dle následujících pravidel:
A) Když $o_0 = 2$ a $n>1$ nastavíme $c(1)=c(2)$.
A) Když $o_0 = 1$ a $n>1$ nastavíme $c(1)=c(2)$.
B) Když $o_0=2n-1$ nastavíme $c(0) = 1$.
C) Když $N(o_0) = \{t,t\}$ pro nějaké $t\in\{0,1\}$, nastavíme i $c(o_0) = t$.
D) Když $N(o_0) = \{0,1\}$, nastavíme $c(0) = c(1)$.