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

prace: Další korektury

parent 76750619
No related branches found
No related tags found
No related merge requests found
......@@ -85,7 +85,7 @@ Obsah {-}
V této práci představíme binární paint shop problem.
Jedná se o úlohu, kterou neumíme efektivně řešit (protože je $\NP$ úplná)
a ani aproximovat (za předpokladu Unique games conjecture je $c$-aproximace také $\NP$ těžká),
a ani aproximovat (za předpokladu Unique games conjecture je konstantní aproximace také $\NP$ těžká),
takže mimo jiné probíhá aktivní výzkum snažící se najít algoritmus,
který je dobrý v průměrném případě (pro náhodný vstup).
......@@ -202,17 +202,20 @@ Bohužel někdy asi ani s aproximačními algoritmy nevystačíme a proto zavede
pravděpodobnostní relaxaci.
::: {c=box t=def name="Pravděpodobnostní aproximační algoritmus"}
Algoritmus $\alg$ je pravděpodobnostně $g(n)$-aproximační, existuje-li konstanta $p \in (0,1)$, taková, že pro každý vstup $I$ algoritmus vrátí přípustně řešení,
pro které s pravděpodobností alespoň $p$ platí, že $f(\alg(I)) \le g(|I|) \cdot \opt(I)$.
Náhodný algoritmus $\alg$ je pravděpodobnostně $g(n)$-aproximační na minimalizačním problému,
pokud pro každý vstup $I$ algoritmus vždy vrátí přípustné řešení $\alg(I)$, pro které platí, že $\E[f(\alg(I))] \le g(|I|) \cdot \opt(I)$.
:::
Všimněme si, že na konstantě $p$ příliš nezáleží.
Snadným důsledkem definice je, že pro každé $\varepsilon > 1$ pravděpodobnostně $g(n)$-aproximační algoritmus
vrátí s pravděpodobností zdola omezenou konstantou $1- {1\over \varepsilon} \in (0,1)$ řešení s hodnotou nejvýše $\varepsilon \cdot g(n)\cdot \opt(I)$.
Všimněme si, že na hodnotě $1-{1\over \varepsilon}$ příliš nezáleží.
Opakovaným spouštěním algoritmu a pak vybráním nejlepšího
z dodaných řešení zvládneme $p$ libovolně těsně přiblížit k jedné.
z dodaných řešení zvládneme pravděpodobnost libovolně těsně přiblížit k jedné.
Pokud řešíme složitost algoritmů a úloh,
většinou vyžadujeme, aby účelová funkce i rozhodování přípustnosti řešení byly vyčíslitelné v polynomiálním čase.
Navíc chceme, aby všechna přípustná řešení měla omezenou délku nějakým polynomem v délce vstupu.
Navíc chceme, aby všechna přípustná řešení měla délku omezenou nějakým polynomem v délce vstupu.
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.
......@@ -438,7 +441,7 @@ V této kapitole si představíme princip semidefinitního programování (dále
z něhož vychází algoritmus na binary paint shop.
Nejprve zavedeme a připomeneme notaci důležitou v této kapitole.
Nechť $\R^{n\times m}$ značí množinu $n$ řádkových $m$ sloupcových matic
Nechť $\R^{n\times m}$ značí množinu $n$-řádkových $m$-sloupcových matic
složených z reálných čísel.
Řádky i sloupce indexujeme od $0$,
tedy matice $A\in \R^{n\times m}$ obsahuje prvky $A_{i,j}$ pro všechna $0\le i < n$ a $0 \le j < m$.
......@@ -529,7 +532,7 @@ programování a proto popsaného mimo jiné v již dříve zmíněném úvodu d
Naivní implementace je, že si pro každý vrchol $u$
vyrobíme proměnnou $x_u$, která může nabývat hodnot $\pm 1$, která bude říkat, do jaké množiny máme vrchol umístit.
Do optimalizační funkce pak zakódujeme graf.
Do účelové funkce pak zakódujeme graf.
Účelová funkce bude
$$ \sum_{uv \in E} h(u,v)\cdot\left(- \frac{x_u x_v}{2} + \frac{1}{2}\right) = \frac{F}{2} + \frac{1}{2} \sum_{uv \in E} -h(u,v)x_u x_v ,$$
kde $F=\sum_{uv\in E} h(u,v)$ značí součet hodnot všech hran.
......@@ -663,9 +666,9 @@ $$\frac{\arccos x}{\pi} / \frac{1-x}{2} > 0.8785 $$
Označme tuto hodnotu $c = 0.8785$.
Tedy když je optimalizační funkce $h(u,v)r$, tak pravděpodobnost výběru hrany do řezu bude alespoň $cr$.
Tedy když je účelová funkce dané hrany $h(u,v)r$, tak pravděpodobnost výběru hrany do řezu bude alespoň $cr$.
Sečtením přes všechny hrany (z linearity středních hodnot) tedy získáme, že
střední hodnota součtu hran v řešení je $cR$, kde $R = \sum_{uv \in E} h(u,v)\cdot\left(\frac 12
střední hodnota součtu hran v řešení je alespoň $cR$, kde $R = \sum_{uv \in E} h(u,v)\cdot\left(\frac 12
- \frac{\vec{y_u}^{\rm T}\vec{y_v}}2\right)$, tedy jedno z ekvivalentních vyjádření účelové funkce.
Pokud tedy najdeme dobré řešení semidefinitního programu, ve střední hodnotě
......@@ -682,7 +685,7 @@ Přesněji řečeno, pro každé $\varepsilon > 0$ jsme schopní najít řešen
Ovšem musí platit, že všechna přípustná řešení jsou dostatečně malá.
Přesněji řečeno, musí platit, že Frobeniova norma všech přípustných matic je omezena konstantou s polynomiální délkou zápisu.
Tohoto výsledku jde dosáhnout pomocí elipsoidové metody, která má nejlepší teoretické výsledky. V praxi se však často používají jiné algoritmy.
Všechny naše programy budou splňovat podmínky na řešení, protože každá z hodnot hledané matice nutně bude ležet v intervalu $[-1, -1]$.
Všechny naše programy budou splňovat podmínky na řešení, protože každá z hodnot hledané matice nutně bude ležet v intervalu $[-1, 1]$.
::: {c=box t=theorem}
Goemansův-Williamsonův algoritmus je pravděpodobnostní $0.878$-aproxi\-mační algoritmus.
......@@ -840,7 +843,8 @@ Měření řešení BPS
Součástí práce je implementace algoritmů řešících Binární paint shop problém.
Každý z nich byl následně spuštěn pro různé velikosti, pokaždé na 100 nezávisle náhodně vybraných vstupech s počtem typů aut
10, 20, 50, 100, 200, 400, 566, 800, 1131, 1600, 2263 a 3200 (jedna z implementací $\algo{sdp}$ -- pomocí sage vyžaduje moc paměti a proto byla spuštěna jen na vstupech do velikosti $566$).
10, 20, 50, 100, 200, 400, 566, 800, 1131, 1600, 2263 a 3200.[^2]
Jedna z implementací $\algo{sdp}$ -- pomocí sage vyžaduje moc paměti a proto byla spuštěna jen na vstupech do velikosti $566$.
Celý test běžel jednovláknově zhruba dva dny a využíval nejvýše 16 GB operační paměti.
U $\algo{sdp}$ řešení bylo použito 10 náhodných řezů a vždy byl vybraný nejlepší z nich.
Gitový repozitář s implementací i naměřenými daty je k dispozici na <https://gitlab.kam.mff.cuni.cz/jirikalvoda/binary-paint-shop-problem>.
......@@ -850,6 +854,9 @@ Pro reprodukovatelnost byly vstupy generovány deterministicky ze seedů.
Se stejným seedem se tedy vždy vygeneruje stejný vstup a ideálně i stejné řešení.
Pro různé algoritmy a velikosti vstupů byly použité různé seedy.
[^2]: Hodnoty, co nejsou hezká čísla jsou zhruba $\sqrt{2}$-násobky předešlé hodnoty,
tedy v polovině mezi okolními hodnotami na logaritmické stupnici.
Praktické řešení semidef. programů
-----------------------------------------
......@@ -930,6 +937,7 @@ Toto se stává například na seedu $18$ pro $n = 150$.
Vzhledem k výše uvedeným problémům dává smysl se porozhlédnout po alternativách.
\vfil\eject
### Sage
SageMath je dle oficiálních stránek [@sagemath] open-source software pro matematické výpočty založený na rozšířené syntaxi pythonu,
......@@ -1171,26 +1179,32 @@ from bakalarka import g, data_lib
data = g.load_main_test()
shift_unit = 1.06
fig = go.Figure(data=[go.Box(
x=[i.n for i in d],
x=[i.n * shift for i in d],
y=[i.score/i.n for i in d],
name=name
) for d,name in [
[data.pipelines["semidef_prog(10)"], "sdp – SDPA-C"],
[data.pipelines["semidef_prog_sage.sage(10, CVXOPT)"], "sdp – Sage"],
[data.pipelines["greedy"], "g"],
[data.pipelines["rg"], "rg"],
[data.pipelines["rsg"], "rsg"],
) for d,name, shift in [
[data.pipelines["greedy"], "g", 1/shift_unit],
[data.pipelines["rg"], "rg", shift_unit],
[data.pipelines["rsg"], "rsg", 1/shift_unit],
[data.pipelines["semidef_prog_sage.sage(10, CVXOPT)"], "sdp – Sage", 1/shift_unit],
[data.pipelines["semidef_prog(10)"], "sdp – SDPA-C", shift_unit],
]])
fig.add_hline(y=0.34,
annotation_text="0.34", annotation_position="top left",
fillcolor="green")
fig.update_traces(width=0.05)
fig.update_layout(
xaxis_title="Počet typů aut (logaritmická stupnice)",
yaxis_title="Relativní skóre",
xaxis=dict(showgrid=False, type="log"),
yaxis=dict(range=[0, 1]),
xaxis_title_standoff = 0,
margin_b = 15,
legend=dict(orientation="h"),
)
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment