Automaty Jednosmerné TS alebo konečné automaty • TS sú robustné voči modifikáciám • existuje modifikácia, ktorá zmení (zmenší) výpočtovú silu TS? • áno, modifikácia ale musí ohraničiť výpočtový zdroj Turingovho stroja polynomiálny čas trieda P polynomiálny priestor trieda PSPACE (triedy P a PSPACE sú menšie než trieda rozhodnutelných problémov) jeden smer pohybu na páske ohraničenie spočíva v tom, že TS nemá možnosť vrátiť sa k informácii, ktorú už raz prečítal a ani nemá možnosť si o prečítanom úseku uchovať kompletnú informáciu (riadiaca jednotka má len konečný počet stavov) = konečné automaty 1 / 10 Automaty Konečné automaty • vstupný reťazec sa číta zľava doprava, symbol po symbole • prečítaný symbol sa neprepisuje • výpočet sa zastaví po prečítaní posledného symbolu alebo v situácii, keď prechodový diagram neumožňuje žiadny ďalší krok • ak sa výpočet zastaví po prečítaní celého vstupu v stave YES, znamená to odpoveď "Áno" (konečný automat akceptuje vstup); ak sa výpočet zastaví v inom stave alebo sa zastaví a nie je prečítaný celý vstup, znamená to odpoveď "Nie" (automat zamieta vstup) 2/10 Automaty Konečné automaty - dolné odhady Problém rozhodnúť, či daný reťazec obsahuje rovnaký počet symbolov a, b Tvrdenie Neexistuje konečný automat, ktorý rieši tento problém. Dôkaz Sporom. Predpokladajme, že existuje automat F, ktorý problém rieši. Označme N počet stavov automatu F. Uvážme vstupný reťazec, ktorý obsahuje presne N + 1 symbolov a, za ktorými nasleduje presne N + 1 symbolov b. Pri čítaní úvodnej sekvencie a-čok musia byť dve políčka, ktoré automat číta v tom istom stave {počet políčok je N + 1, počet stavov je N). Vytvorme nový vstupný reťazec tak, že odstránime všetky symboly medzi týmito dvoma a-čkami (viz obrázok). Výpočet na novom vstupnom reťazci skončiv tom istom stave a v tej istej pozícii ako výpočet na pôvodnom vstupnom reťazci. Ak automat akceptuje obidva reťazce dostávame spor {modifikovaný reiazec nemá požadovanú vlastnosť). Naopak, ak automat obidva reťazce zamieta - spor {pôvodný retazec má požadovanú vlastnosť). 3/10 Automaty stav s stav s U.I Y a(a a a a\a a a a ifr ŕ b b b b b ŕ; fe b i 2\3 4 5 6/7 8 9 10 |1 2 3 4 5 6 7 8 9 10 F£S.' vyber zo slova stav s j V fl íí Ír a a b Ŕ /> b /; b /j /; Ŕ *l 1 2 3 v 4 5 6 1 2 3 4 Y 5 6 7 8 9 10 YES! (správne NOV) automat počíta presne ako na pôvodnej postupnosti X 4/10 Automaty Konečné automaty ako model systému s udalosťami 5/10 Automaty Konečné automaty - terminológia pojem jazyka ako ekvivalentu pojmu rozhodovací problém regulárny jazyk regulárne výrazy 6/10 Generatľvne výpočtové modely Generatívne výpočtové modely Fixujme rozhodovací problém P (resp. jazyk Pi) rozhodovanie určiť, či pre daný vstup X je odpoveď "Áno" alebo "Nie" (resp. určit, či X patrí do jazyka Z_x) generovanie vymenovať všetky vstupy, pre ktoré je odpoveď "Áno" (resp. vymenoval: všetky slová jazyka Pi) Motivácia návod, ako vytvoriť "správny" reťazec formálna gramatika 7/10 Generatľvne výpočtové modely Formálne gramatiky príklad 8/10 Generatľvne výpočtové modely Formálne gramatiky - vlastnosti Fakt Trieda jazykov generovaných formálnymi gramatikami je práve trieda rozhodnutelných problémov. Formálne gramatiky s obmedzeniami kontextové gramatiky reťazec na ľavej strane pravidla je nie je dlhší než reťazec na pravej strane pravidla bezkontextové gramatiky na ľavej strane každého pravidla je práve jeden neterminálny symbol regulárne gramatiky 9/10 Generatľvne výpočtové modely Formálne gramatiky - problém syntaktickej analýzy Pre danú formálnu gramatiku a reťazec rozhodnúť, či je slovo sa gramatikou vygenerovať. rozhodnut, či program v programovacom jazyku (definovanom gramatikou) je syntakticky správny Problém syntaktickej analýzy je čiastočne rozhodnutelný pre formálne gramatiky rozhodnutelný pre kontextové gramatiky polynomiálně riešiteľný pre bezkontextové gramatiky je dôležité, aby sme pre definíciu syntaxe programovacieho jazyka použili čo najjednoduchší typ gramatiky 10 / 10