Kachlíkování pořádně

adam at 2010-01-31 11:48:26

Koukám na svoje zápisky z (d)úkazu, že Kachlíkování (dále KACHL) je NP-úplné a mám problém s jednou podstatnou věcí. Mám tušení, že se to řešilo i na přednášce (snad se na to ptal Martin Černý), a tehdy jsem to si myslel, že to chápu, nebo mě Čepek prostě nějak uchlácholil, takže jsem si z toho nic nezapsal. Mrkněte na to, a napište mi, co si o tom myslíte, resp. co si pamatujete z té přednášky:

Nástin problému: Výpočet NTS, který řešení KACHLu kóduje, přece může zabrat libovolný čas a prostor: nás to zajímá pro polynomiální čas a prostor, ale když nám nepřítel hodí nějaký konkrétní vstup, tak my houby víme, jakým konkrétním polynomem můžeme délku pásky/výpočtu omezit.

Konkrétní otázky a některé návrhy, jak problém řešit:

  1. Jak tedy při převodu na kachlíkování zvolíme rozměry té čtvercové sítě?

  2. Je jasné ( :wink: ), že na horním kraji je potřeba sekvenci (q<sub>0</sub>,x<sub>1</sub>), x<sub>2</sub>, ..., x<sub>n</sub> z obou stran doplnit dostatečeným počtem hvězdiček. Jak ale určíme, kam ve spodním řádku umístit q<sub>F</sub>?

  3. Kdybychom se rozhodli problém vyřešit změnou definice problému KACHL a povolit nafukování čtverce (okraje by se doplňovaly hvězdičkami) a šoupání s q<sub>F</sub> na spodním okraji, říkejme tomu KACHL'. Algoritmus na řešení **KACHL'**u by to dělal nedeterministicky, takže KACHL' je pořád v NP. Není v úvaze chyba? (Ponechme stranou, že řešíme problém tím, že jsme změnili zadání: KACHL, jak ho má Čepek ve slajdech, má mít přece pevně zadaný okraj.)

  4. Každý vidí ( :wink: ), že by se to dalo celé ošidit, kdybychom znali certifikát k řešení problému, který chceme převést na KACHL. Dá se to ale nějak rigorózně zformulovat, když certifikáty v definici převoditelnosti vůbec nevystupují?{: style="list-style-type:decimal"}

Osiris at 2010-01-31 13:16:09

No, každý problém ve třídě NP je řešitelný v polynomiálním čase na NTS. Tak si vezmeš ten polynom a čtvercová síť bude mít délku/šířku nastavenou podle toho polynomu. Já myslím ,že stačí EXISTENCE toho polynomu...

macbeth at 2010-01-31 13:41:35

a pokial mam spravne poznamky, tak q<sub>F</sub> je na dolnom okraji hned na zaciatku (stroj po prechode do q<sub>y</sub> neskonci, ale vsetko na paske prepise prazdnym symbolom, hlavu zaparkuje na zaciatku pasky a prejde do 'noveho' koncoveho stavu)... aspon tak sa to pise v poznamkach z fora, ktore mam...

adam at 2010-01-31 14:16:13

Osiris wrote:No, každý problém ve třídě NP je řešitelný v polynomiálním čase na NTS. Tak si vezmeš ten polynom a čtvercová síť bude mít délku/šířku nastavenou podle toho polynomu. Já myslím ,že stačí EXISTENCE toho polynomu...

(Poznámka: Celý následující argument je naprosto nesmyslný, což si nyní plně uvědomuji, viz níže. Ale nechám to tady pro poučení příštích generací, a taky abych se měl za co stydět:).) To je totéž, co jsem psal v bodu (4), certifikát existuje, polynom existuje, ani jeden ale neznáme. Narážel jsem na to, že z definice převoditelnosti musíš umět udělat převod f, který v polynomiálním čase DETERMINISTICKY převede zadání převáděného problému na cílový (aniž by dostal ten polynom, resp. konkrétní prostorovou/časovou složitost, nebo certifikát). Ten převod na KACHL se dělá pro nějaký pevně zvolený problém, pro který máme NTS M (který mimo jiné nějakou přechodovou fci delta), ze kterého mi ten převod f zkonstruujeme, chceš-li, můžeš při tom využít informaci, že takovýc polynom p EXISTUJE, ale ta je ti IMHO k ničemu. Kdybys chtěl uvnitř f ten polynom zjistit, tak bys musel spustit NEDETERMINISTICKÝ polynomiální výpočet, pak ale nezaručíš, že ten převod f je deterministicky polynomiální. Z informace o existenci polynomu p prostě deterministicky nezkonstruuješ okraj sítě, jehož délka je rovná jeho hodnotě p(n) (pro dané n). (Poznámka: konec nesmyslného argumentu.)

macbeth wrote:a pokial mam spravne poznamky, tak q<sub>F</sub> je na dolnom okraji hned na zaciatku (stroj po prechode do q<sub>y</sub> neskonci, ale vsetko na paske prepise prazdnym symbolom, hlavu zaparkuje na zaciatku pasky a prejde do 'noveho' koncoveho stavu)... aspon tak sa to pise v poznamkach z fora, ktore mam...

To je fakt, takhle otázka je asi zbytečná. Dá se to vyřešit obdobně, jako když se tam žádné "místo na pásce" (resp. hvězdičky na horní okraj) nepřidává. Není v tom žádný velký zádrhel. Takže to bychom měli, a zpátky k tomu, jak vyřešit ten hlavní problém:).

adam at 2010-01-31 14:31:13

Teď začínám být nějaký nejistý. Možná, že doopravdy řeším blbost. Asi bych mohl chtít, aby mi nepřítel, co mi předhazuje nějaký problém z NP a stroj M, který ho řeší mi dal i polynom, který shora odhaduje prostor použitý při přijímacím výpočtu.

adam at 2010-01-31 14:35:31

adam wrote:Teď začínám být nějaký nejistý. Možná, že doopravdy řeším blbost. Asi bych mohl chtít, aby mi nepřítel, co mi předhazuje nějaký problém z NP a stroj M, který ho řeší mi dal i polynom, který shora odhaduje prostor použitý při přijímacím výpočtu.

A ještě jednou si odpovím:): Ano, skutečně v tom není problém. Řeším přece existenci polynomiálního převodu f, ne otázku, zda a z jakých informací ho umím (efektivně) zkonstruovat. Tímto se omlouvám za hloupou otázku (učím se současně na vyčíslitelnost, tak asi chápete, proč mě takovéhle blbosti napadají;)), a děkuji Osirisovi za nakopnutí správným směrem!

Fairfax at 2010-02-04 10:43:22

Na kachlíkování je právě nejlepší, že si tam člověk může krásně představit prostorovou a časovou složitost.
prostorová - šířka čtvercové sítě
časová - výška čtvercové sítě
V důkazu existence NP-úplného problému (Cook-Levin) se především ukazuje, že jsme schopni převést libovolný problém ze třídy NP na KACHL. Někdo nám tedy dá problém QNPQ \in NP (výpočet příslušného NTS lze tedy omezit nějakým polynomem T(n) časově a S(n) prostorově). Pro libovolnou instanci Q (jejíž délku n známe v momentě kdy nám ji nepřítel zadá) můžeme zkonstruovat zadání KACHL. Velikost čtvercové sítě spočítáme z n a polynomů T(n) a S(n), které nám nepřítel musí dodat (protože to je ON, kdo tvrdí, že Q patří do NP - ukázat existenci nějakých dvou polynomů by tedy pro něj neměl být problém).

adam at 2010-02-04 11:02:21

Fairfax wrote:Na kachlíkování je právě nejlepší, že si tam člověk může krásně představit prostorovou a časovou složitost.

Přesně tak. Prima, že to tady někdo pro příští myslitele shrnul:).

Jen k tomu pro úplnost dodám pár technických drobností, doufám, že správných:

  1. Pracujeme-li s modelem TS, který má jednu oboustraně nekonečnou pásku, je třeba zvolit šířku 2S(n)-n, nebo raději 2S(n)+n (podle toho, jak máme definovanou prostorovou složitost na jedné pásce), a vstup dát doprostřed (nevíme, ze které strany to bude těch S[/i](n) polí potřebovat). (Jednostrannou pásku, kde bychom to řešit nemuseli, jsme na přednášce určitě nikdy nezaváděli, i když to samozřejmě jde.)

  2. Pracujeme-li s definicí KACHL, která má čtvercovou síť, můžeme oba rozměry sítě zvolit 2*T(n)+n, jistě totiž pro jednopáskový stroj platí platí S(n) ≤ T(n). (Myslím, že jsme pracovali právě se čtvercovou definicí, i když to samozřejmě taky není nutné.){: style="list-style-type:decimal"}

adam at 2010-02-04 11:06:43

Jo, omylem jsi asi několikrát napsal "NP-úplný" místo "z třídy NP":

Fairfax wrote:jsme schopni převést libovolný NP-úplný problém na KACHL.

Má být "libovolný problém z třídy NP".

Někdo nám tedy dá NP-úplný problém Q

Má být "dá problém Q z třídy NP".

tvrdí, že Q je NP-úplný

Má být "tvrdí, že **Q[/Q] je z třídy NP".

Ale to asi každému dojde:).**

Fairfax at 2010-02-04 14:09:39

adam wrote:Jo, omylem jsi asi několikrát napsal "NP-úplný" místo "z třídy NP"

Opraveno.

Jak je člověk zvyklej převádět pořád něco NP-úplnýho na něco jinýho aby dokázal NP-těžkost, tak to snadno poplete.
Cook & Levin dokazujou NP-těžkost přímo z definice, takže stačí "z třídy NP" jak jsi správně poznamenal. Thx.