Problém

V této práci si představíme binary paintshop problem. Jedná se o úlohu, kterou neumíme efektivně řešit a ani aproximovat [@computing], 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).

V této zápočtové práci bych se rád podíval na některé z těchto algoritmů a pomocí statistických metod pro zvolenou velikost vstupu určil, který z nich je lepší.

Zadání

Nejprve si pojďme představit zadání binary paint shop problému: V řadě je  2n2n  aut  nn  různých typů – od každého typu 2. Chtěli bychom od každého typu nabarvit jedno auto červeně a druhé modře. Auto však na barvící linky 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. 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 značíme jako skóre algoritmu.

Programy

Hladové řešení

Jednoduché řešení je následující: Půjdeme postupně po řadě. První auto v řadě obarvíme řekněme červeně. Dále budeme vždy první auto daného typu barvit stejně jako předcházející auto. Druhé auto daného typu obarvíme vždy zbývající barvou.

Snažit se nějak statisticky analyzovat a porovnávat tento algoritmus není moc zajímavé, protože je známo, že střední hodnota počtu změn hladového algoritmu je  k=0n12k214k21\sum_{k=0}^{n-1} {2k^2-1 \over 4k^2-1}  [@glim_gr], což je pro velká  nn  zhruba  12n{1\over 2} n  (formálně řečeno  limnEn(g)n=12\lim_{n\to\infty} {\mathbb{E}_n({\rm g}) \over n} = {1\over 2} ).

Následuje graf skóre  100100  běhů hladového algoritmu pro  n=200n=200 .

Rekurzivní hladové řešení [@glim_gr]

Rekurzivní hladové řešení postupuje následovně: Z řady aut odstraní první auto a auto stejného typu. Zbytek aut rekurzivně obarví a pak do řady přidá odebranou dvojici tak, aby byl počet změn co nejmenší možný.

Střední hodnotu počtu změn barev tohoto algoritmu lze odhadnout pomocí:  25 n815En(rg)25 n+710{2\over 5}\ n - {8\over 15} \le \mathbb{E}_n({\rm rg}) \le {2\over 5}\ n + {7\over 10} .

Hvězdičkové rekurzivní řešení [@docwp]

Při běhu rekurzivního hladového řešení se občas stane, že některé dvojice aut lze obarvit oběma způsoby a počet změn bude stále stejný. Takovéto auta označíme novou barvou *. Přitom budeme dodržovat invariant, že * nikdy není na okrajích a nejsou dvě vedle sebe. Pokud budeme dále přidávat auto poblíž * a jedno nastavení * na barvu bude lepší, tak * přenastavíme na danou barvu.

Existuje domněnka, která tvrdí, že  En(srg)0.361n\mathbb{E}_n({\rm srg}) \le 0.361 n .

Řešení pomocí semidefinitního programování (Jiří Kalvoda, doposud nepublikováno)

Řešení se částečně podobá aproximačnímu algoritmu na maximální řez pomocí semidefinitního programování [@semidef]. V něm si můžeme představit vrcholy jako body  n1n-1  rozměrné koule v  nn  dimenzionálním prostoru a semidefinitní programování nám je rozmístí tak, aby součet skalárních součinů bodů spojených hranou byl co možná největší. Pak náhodně vybereme nadrovinu procházející počátkem a vrcholy rozdělíme do partit podle toho na které straně nadroviny je daný bod.

V našem problému také necháme rozmisťovat body po  n1n-1  rozměrné sféře. Body nyní budou reprezentovat typy aut. Přesněji řečeno každý bod bude reprezentovat první auto daného typu a druhé auto daného typu bude reprezentovat virtuální bod k němu středově symetrický dle počátku. Když pak tedy rozřízneme body nadrovinou (která žádným bodem neprochází) a autům přidělíme barvy dle toho, na které straně skončí, bude od každého typu právě jedno auto každé barvy. Semidefinitní programování se bude snažit maximalizovat součet skalárních součinů sousedních aut, tedy sousední auta budou blízko, což znamená, že je malá pravděpodobnost, že budou mít různou barvu.

Pro účely této práce vždy vyzkoušíme 10 náhodných řezů koule nadrovinu a z nich vybereme nejlepší možný.

Je známo, že tento algoritmus na každé instanci ve střední hodnotě přes nadroviny vrátí řešení, co je nejhůře o  0.22n0.22n  horší než optimum na daném vstupu. Navíc pomocí hodnoty optimalizační funkce semidefinitního programu pro každou instanci můžeme získat i dolní odhad na skóre optima.

Statistická práce

Na níže uvedeném grafu jsou výsledky všech výše uvedených algoritmů pohromadě (pozor na to, že v grafu je zobrazena jen zajímavá část vertikální osy mezi  0.25n0.25 n  a  0.6n0.6n .

Z grafu můžeme odhadnout, že jako nejlepší algoritmus se jeví semidefinitní programování a po něm hvězdičkové rekurzivní řešení. V následující části bych rád ukázal, že tomu tak skutečně je.

To vypadá jako jednoduchá úloha pro Welchův t-test. Vygeneruji dalších 30 běhů každého algoritmu a na nich spustím:

Z tohoto bychom mohli usuzovat, že řešení pomocí semidefinitního programování je na  99%99\%  lepší, protože pvalue je dokonce o několik řádů menší než  0.010.01 .

V čem je tedy problém? Problém t-testu je že nesamplovaná data musí pocházet z normální distribuce a já vůbec netuším, jak bych dokazoval, že naše data se jí alespoň blíží (pokud to vůbec platí).

Pojďme tedy využít trošku více dřevorubecké řešení, kterým to dokážeme.

Budeme se snažit dokázat, že algoritmus pomocí semidefinitního programování je lepší než hvězdičkové rekurzivní řešení. Tedy:
H0:H_0:  Hvězdičkové řešení je stejně dobré nebo dokonce lepší.
H1:H_1:  Řešení pomocí semidefinitního programování je lepší.

Víme, že rozptyl náhodné veličiny skóre řešení je nejvýše  nn , protože se jedná o náhodnou veličinu z intervalu  00  až  2n2n . Když víme, že  σ2(X)n\sigma^2(X) \le n , tak  σ2(X1++Xk)kn\sigma^2(X_1 + \cdots + X_k) \le kn  (pro nezávislé  X1,,XnX_1,\dots,X_n , což v našem případě jsou, protože vybíráme vstupy nezávisle). Tedy  σ2(Xk)=σ2(X1++Xkk)knk2=nk\sigma^2(\overline{X_k}) = \sigma^2({X_1 + \cdots + X_k \over k}) \le {kn \over k^2} = {n \over k} .

Dle Cebyševovy nerovnosti tedy (pro  t>0t>0 ):  P(E(X)Xk+tnk)12t2P\left(\mathbb{E}(X) \ge \overline{X_k} + t {n \over k}\right) \le {1 \over 2 t^2}  Což můžeme využít následovně:

Nechť  XX  a  YY  jsou náhodné veličiny skóre dvou algoritmů (semidefinitního programování a hvězdičkového rekurzivního), kde naměříme  Xk<Yk\overline{X_k} < \overline{Y_k}P(H0)=P(E(X)E(Y))=1P(E(X)<E(Y))1P(E(X)<Xk+Yk2<E(Y)) P(H_0) = P\left( \mathbb{E}(X) \ge \mathbb{E}(Y) \right) = 1 - P\left( \mathbb{E}(X) < \mathbb{E}(Y) \right) \le 1 - P\left( \mathbb{E}(X) < { \overline{X_k}+\overline{Y_k} \over 2} < \mathbb{E}(Y) \right) \le   1P(E(X)<Xk+Yk2)+1P(Xk+Yk2<E(Y))P(E(X)Xk+YkXk2)+P(YkYkXk2E(Y)) \le 1 - P\left( \mathbb{E}(X) < { \overline{X_k}+\overline{Y_k} \over 2} \right) + 1 - P\left( { \overline{X_k}+\overline{Y_k} \over 2} < \mathbb{E}(Y) \right) \le P\left( \mathbb{E}(X) \ge \overline{X_k} + { \overline{Y_k}-\overline{X_k} \over 2} \right) + P\left( \overline{Y_k} - { \overline{Y_k}-\overline{X_k} \over 2} \ge \mathbb{E}(Y) \right)

Nyní použijeme výše uvedenou nerovnost pro  tnk=YkXk2t{n\over k} = { \overline{Y_k}-\overline{X_k} \over 2} , tedy  t=kYkXk2nt = k {\overline{Y_k}-\overline{X_k} \over 2n} . Symetrická nerovnost funguje i pro  YY  a otočený směr odhadu.

P(H0)212(k(YkXk)2n)2=4n2k2(YkXk)2= P\left( H_0 \right) \le 2 {1 \over 2 \left({k(\overline{Y_k}-\overline{X_k}) \over 2n}\right)^2} = {4n^2 \over k^2 \left({\overline{Y_k}-\overline{X_k} }\right)^2} =

Pokud chceme, abychom věděli, že algoritmus  XX  je lepší než algoritmus  YY  (pro danou velikost vstupu) s jistotou  99%99\% , musí platit, že:

4n2k2(YkXk)2<0.01 {4n^2 \over k^2\left({\overline{Y_k}-\overline{X_k} }\right)^2} < 0.01

Z výše uvedených grafů můžeme doufat, že  YkXk\overline{Y_k}-\overline{X_k}  bude alespoň zhruba  1010 . Pro  k=500k = 500  by tedy mohla být výsledná hodnota mohla dost malá.

Navrhneme tedy následující pokus: Spustíme oba dva algoritmy na  500500  náhodně vybraných vstupů a spočítáme jejich průměry.

Pokud výsledek výše uvedené formule bude menší než  0.010.01 , můžeme zamítnout  H0H_0  s pravděpodobností  99%99\% .

Nulovou hypotézu se nám tedy podařilo zamítnout a tudíž řešení pomocí semidefinitního programování je lepší.

Všimněte si, že pokud by platilo, že se jedná o normální rozdělení, tak nám stačí mnohem méně dat a máme mnohem větší jistotu.

References