Algoritmicky nerozhodnutelný problém Věta: Problém přijetí prázdného slova Turingovým strojem je algoritmicky nerozhodnutelný. A TM ={ M,e | M je TS a e L(M)} Dokažte: a) jde o problém algoritmicky rozpoznatelný b) jde o problém algoritmicky nerozhodnutelný
Příklad a) Problém přijetí prázdného slova Turingovým strojem je algoritmicky rozpoznatelný: A TM ={ M,e | M je TS a e L(M)} Důkaz: Stačí sestrojit TS Q, který rozpoznává výše uvedený jazyk A TM : 1. Stroj Q simuluje činnost stroje M při zpracování slova e 2. Když simulace M skončí ve stavu accept, potom accept; pokud skončí ve stavu reject, potom reject; pokud se zacyklí, zacyklí se i Q
Příklad b) Problém přijetí prázdného slova Turingovým strojem je algoritmicky nerozhodnutelný: A TM ={ M,e | M je TS a e L(M)} Důkaz: Sporem – analogicky jako u tiskni „Hello world“
Příklad Předpokládejme, že existuje program D, kterému na vstupu dáme program M a jeho vstup e. Program D rozhodne, zda e L(M) Program D Program M e Accept – pokud e L(M) Reject– v ostatních případech
Příklad Program D nyní jednoduše upravíme na D1 tak, aby se choval přesně opačně než D Program D1 Program M e Accept – ve všech ostatních případech Reject – pokud e L(M)
Příklad Předložíme programu D1 k rozhodnutí vlastní kód Jestliže e L(D1), potom D1 skončí ve stavu reject (má být accept) a naopak Dostáváme se do sporu – stroj D neexistuje a problém přijetí prázdného slova je algoritmicky nerozhodnutelný Program D1 e Accept – ve všech ostatních případech Reject – pokud e L(D1)