Modifikácie Turingovho stroja Modifikácie Turingovho stroja Argumentom podporujúcim CT hypotézu je aj robustnosť TS. Modifikácie • TS, ktorý má po skončení výpočtu zapísaný na páske len vstupný a výstupný reťazec • TS s jednosmerne nekonečnou páskou • TS s dvojrozmernou páskou • TS s konečným počtom pások (každá más svoju čítaciu/zapisovači u hlavu) Fakt Všetky uvedené modifikácie sú vzájomne ekvivalentné Dôkaz technikou simulácie: ukážeme, že výpočet jedného zariadenia sa dá simulovať na druhom zariadení a naopak EHEE 1/25 Modifikácie Turingovho stroja Programy s počítadlami (Counter Programs, CP) • programy manipulujú s prirodzenými číslami uloženými v premenných • tri elementárne operácie X <— 0 priradí premennej hodnotu 0 X^Y + 1 X <— Y — 1 ak hodnota Y je 0, tak X priradí hodnotu 0 • jeden elementárny riadiaci príkaz ifX = 0 goto G, kde X je premenná a G je návestie pripojené k príkazu 2/25 Modifikácie Turingovho stroja Programy s počítadlami - príklad A : if X = 0 goto G X<-X-l V <- Y + l V <-V-l B : if V = 0 goto A V <- V-l Z^Z + 1 if U = 0 goto B vykonanie goto G je ekvivalentom úspešného ukončenia výpočtu 3/25 Modifikácie Turingovho stroja Turingove stroje a programy s počítadlami TS manipulujú so symbolmi, PS s číslami je možná ich vzájomná simulácia? Modifikácie Turingovho stroja Simulácia Turingovho stroja programom s počítadlami obsah pásky —> čísla pre jednoduchosť predpokladajme, že abeceda TS má desať znakov znaky očíslujeme a reťazce znakov prevedieme na čísla Príklad #-0 1-1 *-2 a-3 6-4 c-5 d-6 e-7 f - 8 g-- 9 reŕ'azec ...##ai) * eb!#3ía##... \/ ktorom je snímaný symbol b, prevedieme na dvojicu čísel 3427 a 393014 5/25 Modifikácie Turingovho stroja Simulácia Turingovho stroja programom s počítadlami zmena symbolu na páske zmena poslednej číslice v druhom čísle Príklad ak symbol b prepíšeme symbolom g, tak číslo 393014 sa zmení na 393019, PC pripočíta 5 krát hodnotu 1 posun hlavy doprava prvé číslo vynásobíme 10 a pripočítame k nemu poslednú číslicu druhého čísla druhé číslo vydělíme 10 (celočíselné) analogicky pre posun hlavy doľava zmena stavu stavu TS zodpovedá skupina inštrukcií CP; zmena stavu je simulovaná skokom na novú skupinu inštrukcií (príkaz goto) C P, ktorý sir TS, má len dve počítadlá! J 6/25 52 Modifikácie Turingovho stroja Simulácia programu s počítadlami Turingovym strojom čísla <— symboly hodnota každej premennej je zapísaná ako postupnosť symbolov = číslic; jednotlivé hodnoty sú vzájomne oddelené špeciálnym symbolom (napr. *) inštrukcie <— stavy každej inštrukcii programu zodpovedá skupina stav TS, vykonenie inštrukcie je simulované prechodom do príslušného stavu a realizácia postupnosti krokov, ktoré potrebným spôsobom upravia obsah premennej 7/25 Modifikácie Turingovho stroja Simulácie ako redukcie Ak model A simuluje model B, tak máme redukciu medzi týmito modelmi. Redukcia prevedie program modelu A a jeho vstup X na program modelu B a jeho vstup Y. CT hypotéza ukazuje, že naše úvahy pri konštrukcii redukcií boli korektné. 8/25 Modifikácie Turingovho stroja Simulácie ako redukcie Ak model A simuluje model B, tak máme redukciu medzi týmito modelmi. Redukcia prevedie program modelu A a jeho vstup X na program modelu B a jeho vstup Y. CT hypotéza ukazuje, že naše úvahy pri konštrukcii redukcií boli korektné. Príklad nerozhodnuteínosi problému zastavenia O formálne dokážeme nerozhodnuteínosi problému pre TS Q podlá CT hypotézy problém zastavenia nemôže byt rozhodnutelný ani pre žiaden iný programovací jazyk vyššetj úrovne (je ekvivalenty TS!) Fenomén algoritmus, ktorého vstupom je iný algoritmus J 8/25 Univerzálny Turingov stroj Univerzálny algoritmus jeden z najdôležitejších dôsledkov CT hypotézy Existencia univerzálneho algoritmu, ktorý má schopnosť chovať sa ako akýkoľvek iný algoritmus. • vstupom pre univerzálny algoritmus je popis akéhokoľvek algoritmu A a akéhokoľvek jeho vstupu X • univerzálny algoritmus simuluje výpočet A na X • výpočet univerzálneho algoritmu sa zastaví práve ak výpočet A na X sa zastaví; ako výstup poskytne univerzálny algoritmus presne tú istú odpoveď ako poskytne A na X ak fixujeme algoritmus A a meníme X, tak univerzálny algoritmus sa chová presne ako algoritmus A 9/25 52 Univerzálny Turingov stroj Univerzálny algoritmus • môže byt vstupom univerzálneho algoritmu program v akomkoľvek programovacom jazyku? • využijeme CT hypotézu a poznatok o ekvivalencii všetkých známych formalizmov pre popis algoritmov • ku konštrukcii univerzálneho algoritmu potrebujeme len jazyk L\, v ktorom napíšeme program Ľ pre univerzálny algoritmus; program akceptuje ako vstup ľubovoľný program napísaný vo fixovanom konkrétnom jazyku Z. 2 • program Ľ je nezávislý na výbere modelu, pretože podľa CT hypotézy O môže byť napísaný v akomkoľvek jazyku Q dokáže simulovať akýkoľvek algoritmus popísaný v akomkoľvek jazyku Vhodným kandidátom pre jazyky L\ a Z. 2 sú Tu ringové stroje. 10 / 25 Univerzálny Turingov stroj Univerzálny Turingov stroj • potrebujeme popísať Turingov stroj ako lineárny reťazec nad konečnou abecedou symbolov 9 stačí linearizovať prechodový diagram • mark ** mark YES (#/#, L) * mark movea (a/#, R) * movea movea (a/a/, R)*... • linearizovaný prechodový diagram prevedieme štandartným spôsobom na reťazec nad fixovanou abecedou (napr. binárnou) • podobne linearizujeme a kódujeme aj vstup simulovaného TS • samotný program univerzálneho TS je jednoduchý svojim princípom: uchováva si aktuálny stav simulovaného TS, obsah jeho pásky a čítaný symbol; z linearizovaného popisu simulovaného TS odvodí, aké akcie sa majú realizovať v ďalšom kroku výpočtu simulovaného TS 11 / 25 Univerzálny Turingov stroj Univerzálny program s počítadlami • vstupom je dvojica čísel; prvé číslo je kódom nejakého programu s počítadlami, druhé číslo je kódom jeho vstupu • univerzálny program je možné skonštruovať tak, aby využíval len dve počítadlá 12 / 25 Robustnost triedy prakticky riešitelných problémov Modifikované programy s počítadlami Motivácia • TS manipuluje jednom kroku výpočtu s jedným symbolom pásky (s jednou číslicou čísla) m CP mení jednou inštrukciou hodnotu premennej o 1 (exponenciálne menej efektívne v porovnaní s TS) • narovnanie diskrepancie • CP musí mať možnosť k číslu pridať alebo odobrať číslicu v konštantnom čase Modifikácia množinu inštrukcií CP rozšírime o 2 nové inštruckie X^XxlO X <— X/10 celočíselné delenie Robustnost triedy prakticky riešitelných problémov Polynomiálna redukcia Existencia redukcií medzi programovacími jazykmi vyššej úrovne (dostatočne silnými výpočtovými modelmi) ukazuje, že trieda rozhodnutelných problémov je invariantná voči voľbe jazyka (modelu). Otázka Aká je zložitosť redukcie? Fakt Ak oba modely manipulujú s číslami v inej než unárnej sústave, tak redukcia má polynomiálnu časovú zložitosť . I Robustnost triedy prakticky riešitelných problémov Zložitosť redukcií medzi TS a modifikovanými CP Zložitosť výpočtu TS počet krokov výpočtu C P počet vykonaných inštrukcií Zložitosť výpočtu je funkciou dlžky vstupu; hodnota funkcie pre argument N zhora ohraničuje zložitosť výpočtov na všetkýh vstupoch dlžky N. Dĺžkou vstupu pre TS je počet znakov vstupného reťazca, dĺžkou vstupu pre CP je počet číslic počiatočných hodôt premenných. Redukcia TS —► modifikované CP krok výpočtu je simulovaný zmenou hodnoty každého počítadla; zmena je realizovateľná konštantným počtom inštrukcií Redukcia modifikované CP —► TS každá inštrukcia je simulovaná konštantným počtom krokov TS a modifikované CP sú polynomiálně ekvivalentné I Robustnost triedy prakticky riešitelných problémov Polynomiálna redukcia - dôsledky Nech výpočtové modely A a B sú polynomiálně ekvivalentné. Ak algoritmický problém P je riešitelný na A s časovou zložitostou O (f (N)) ( f je funkcia dĺžky vstupu), tak existuje program pre B, ktorý rieši problém P a jeho časová zložitosť je 0(p(f(A/))), pričom p je nejaká (fixovaná) polynomiálna funkcia. Naopak, ak P je riešiteľný na B v čase ö{g{N)), tak existuje program pre A, ktorý rieši P s časovou zložitosťou ö{q{f{N))), pričom q je nejaká (fixovaná) polynomiálna funkcia. Ak TS rieši problém v polynomiálnom čase, tak aj modifikový CP rieši tento problém v polynomiálnom čase (a naopak). Ak neexistuje polynomiálny TS pre daný problém, tak neexistuje ani polynomiálny modifikoaný CP pre tento problém. Robustnost triedy prakticky riešitelných problémov Robustnost triedy prakticky riešiteľných problémov CT hypotéza ukazuje robustnosť pojmu rozhodnutelný problém. Polynomiálna ekvivalencia zjemňuje toto pozorovanie na prakticky riešiteľné problémy. Sekvenčná výpočtová hypotéza Pojem prakticky riešiteľného problému je robustný, tj. je nezávislý na konkrétnej voľbe výpočtového modelu resp. programovacieho jazyka. Hypotéza sa nevztahuje na modely s neohraničeným zdrojom paralelizmu, preto sa označuje ako "sekvenčná". Triedy P, N P, PSPACE, EXPTIME sú robustné Triedy s lineárnou časovou zložitostou nie sú robustné. I Robustnost triedy prakticky riešitelných problémov Nedeterministické Turingove stroje pre rozhodovacie problémy • v prechodovom diagrame je povolené, aby s jedného stavu vychádzal ľubovoľný počet hrán označených zhodým spínačom (symbolom, ktorý sa číta) • stroj má možnosť výberu, ktorý z prechodov použije • pre vstup X dá TS odpoveď "Áno" (akceptuje) práve ak existuje taká postupnosť výberu prechodov, pre ktorú výpočet skončiv koncovom stave YES (stroj uváži všetky možné výpočty na X a akceptuje X práve ak aspoň jeden z výpočtov skončí v stave YES) • v opačnom prípade, tj. ak žiaden výpočet neskončiv stave YES, dá odpoveď "Nie" Nedeterministické TS sú ekvivalentné (deterministickým) TS. Robustnost triedy prakticky riešitelných problémov P=NP? problém - revízia Formálna definícia tried P a NP Trieda P (NP) obsahuje rozhodovacie problémy, ktoré sú riešiteľné Turingovymi strojmi (nedeterministickými TS) s polynomiálnou časovou zložitosťou. P=NP? problém Sú deterministické a nedeterministické Turingove stroje polynomiálně ekvivalentné? I Robustnost triedy prakticky riešitelných problémov P=NP? problém - revízia Definícia NP-ťažkého a NP-úplného probému Rozhodovací problém sa nazýva NP-ťažký ak každý problém z triedy P je na neho polynomiálně redukovateľný. Rozhodovací problém sa nazýva NP-úplný ak je NP-ťažký a naviac patrí do triedy N P. Fakty Ak nejaký NP-úplný problém patrí do triedy P, tak P = NP. Ak P 7^ NP, tak žiaden NP-úplný problém nieje riešiteľný algoritmom polynomiálnej zložitosti. I Robustnost triedy prakticky riešitelných problémov Turingove stroje a dolné odhady zložitosti problémov • dôkaz nerozhodnuteľnosti problému redukcia problému o ktorom je už dokázané, že je nerozhodnutelný, na problém o ktorom chceme dokázať, že je nerozhodnutelný príklad redukcia problému zastavenia na problém domina • dôkaz vzťahu medzi zložitostnými triedami metóda diagonalizácie príklady P C EXPTIME, PSPACE c EXPSPACE • dôkaz, že problém nepatrí do zložitostnej triedy dôsledok úplnosti príklad žiaden EXPTIME-úplný problém nepatrí do triedy P pre dôkaz horných odhadov zložitosti problémov nie sú TS vhodné; naopak je vhodné použil: programovací jazyk vyššej úrovne Robustnost triedy prakticky riešitelných problémov Redukcia problému zastavenie na problém domina problém domina úlohou je pokryť hornú polovicu nekonečnej plochy s podmienkou, že prvá dlaždica v T (nazveme ju ŕ) je umiestnená niekde v spodnom riadku problém zastavenia odpoveď "Áno" pre vstup (M, X) taký, že výpočet M na X sa nezastaví Robustnost triedy prakticky riešitelných problémov Redukcia problému zastavenie na problém domina Redukcia Vstup dvojica (M,X) Výstup množina typov dlaždíc T a dlaždica t Princíp konštrukcie (T, t) pokrytie dlaždicami korešponduje s výpočtom; pokrytie nekonečnej plochy je možné len v prípade existencie nekonečného výpočtu Robustnost triedy prakticky riešitelných problémov 24 / 25 Robustnost triedy prakticky riešitelných problémov 25 / 25