(definice, vztah ke gramatikám Chomského hierarchie, rekurzivní a rekurzivně spočetné jazyky, uzávěrové vlastnosti)
Turingov stroj
Naviac požadujeme, aby Turingov stroj nikdy neprepísal svoju ľavú koncovú značku iným symbolom a aby nikdy neposunul svoju hlavu vľavo od políčka obsahujúceho ľavú koncovú značku. Formálne, požadujeme aby pre každé existoval stav , taký že:
Množina stavov spolu s prechodovou funkciou sa niekedy súhrnne označuje ako riadiacia jednotka Turingovho stroja.
Turingov stroj má konečnú množinu stavov Q, pásku, ktorá je rozdelená na jednotlivé políčka, a hlavu, ktorá sa môže po páske pohybovať doľava a doprava, čítať a zapisovať symboly. Na každom políčku pásky je zapísaný práve jeden z konečne mnoho páskových (pracovných) symbolov.
Páska je jednosmerne nekonečná. Na najľavejšom políčku je zapísaný symbol ľavého konca pásky . Na začiatku výpočtu je na prvom až n-tom () políčku pásky zapísaný vstupný reťazec. Ostatných nekonečne mnoho políčok napravo od vstupu je prázdnych (znak ).
Výpočet začína v počiatočnom stave , pričom hlava sníma nulté políčko obsahujúce značku . Krok výpočtu spočína v tom, že stroj v závislosti na momentálnom stave a symbolu snímaného hlavou:
Spôsob, akým sa má zmeniť stav, prepísať symbol a posunúť hlava, predpisuje prechodová funkcia . teda znamená, že ak stroj v stave q sníma symbol a, tak prejde do stavu p, symbol a prepíše symbolom X a hlavu posunie o jedno políčko doprava (R - right, L - left). Stroj akceptuje vstupný reťazec, ak prejde do stavu , zamieta, ak prejde do stavu .
Na niektorých vstupoch môže stroj bežať nekonečne dlho bez toho, aby vstupné slovo akceptoval alebo zamietol - v tom prípade stroj cyklí. Turingov stroj sa nazýva úplný práve vtedy, keď pre každý vstup zastaví.
Jazyk akceptovaný TM
Jazyk akceptovaný Turingovým strojom M definujeme ako množinu reťazcov, ktoré M akceptuje:
Ak je M úpný, hovoríme, že jazyk L(M) je rozhodovaný strojom M alebo že stroj M rozhoduje jazyk L(M).
Príklad na TM
Definícia
Ku každému rekurzívnemu jazyku L existuje Turingov stroj, ktorý ho rozhoduje. Rekurzívne spočetný jazyk musí splňovať slabšiu podmienku: musí existovať Turingov stroj, ktorý ho akceptuje, t.j. akceptuje každé slovo z L, ale výpočet na slove nepatriaceho L môže byť buď zamietajúci alebo nekonečný.
Medzi rekurzívne jazyky patria regulárne, bezkontextové, kontextové jazyky a ďalšie jazyky, ktoré spĺňajú podmienku rekurzívneho jazyka. Každý rekurzívny jazyk je aj rekurzívne spočetný (opačne to neplatí). Rekurzívne spočetné jazyky sa dajú generovať gramatikami typu 0. Metódou diagonalizácie sa dá dokázať, že existuje jazyk, ktorý nie je rekurzívne spočetný.
S rekurzívnymi a rekurzívne spočetnými množinami úzko súvisia rozhodnuteľné, nerozhodnuteľné a čiastočne rozhodnuteľné problémy:
Problémy
Uzáverové vlastnosti
Nech sú jazyky akceptované Turingovými strojmi s disjunktými množinami stavov:
Nedeterminstický stroj akceptujúci dostaneme zjednotením strojov . Stroj bude mať nový počiatočný stav a v prvom kroku výpočtu stroj nedeterministicky prejde buď do počiatočného stavu alebo . V druhom kroku simuluje výpočet zvoleného stroja.
Stroj akceptujúci bude mať pásku s troma stopami. Na prvej je zapísaný vstupný reťazec a jej obsah sa v priebehu výpočtu nemení. Stroj okopíruje svoj vstup w na druhú stopu a simuluje na nej výpočet . Ak akceptoval, okopíruje vstup na tretiu stopu a na nej simuluje výpočet . Ak akceptuje, akceptuje aj , v iných prípadoch zamietne.
Nedeterministický stroj akceptujúci bude mať pásku s troma stopami. Na prvej stope je zapísané vstupné slovo. Stroj prekopíruje nejaký (môže byť aj prázdny) prefix vstupného slova na druhú stopu - dĺžku prefixu určí nedeterminsiticky. Okopírované symboly sa na prvej páske označia. Na druhej stope potom simuluje výpočet . Ak akceptuje, prekopíruje na tretiu stopu zvyšnú neoznačkovanú časť slova a simuluje na nej výpočet . akceptuje práve vtedy, keď akceptuje.
Nedeterministický stroj akceptujúci jazyk je zobecnením stroja .
Komplement
Ak L je jazyk akceptovaný úplným TM, stroj akceptujúci co-L zosrojíme jednoducho tak, že v definícii prechodovej funkcie zameníme navzájom akceptujúci stav a zamietajúci stav .
Postova veta
Dôsledkom Postovej vety je, že trieda rekurzívne spočetných jazykov nie je uzavretá na komplement. Ak by platil opak, triedy rekurzívnych a rekurzívne spočetných jazykov by sa rovnali.
Veta 1.1
Dôkaz je možné nájsť v skriptách 2).
Každý rekurzívný jazyk je možné rozhodovať nejakým úplným Turingovým strojom. Z toho bezprostredne vyplýva, že ku gramatikám typu 1-3 (kontextová, bezkontextová, regulárna) vždy existuje úplný Turingov stroj, ktorý rozhoduje jazyk generovaný danou gramatikou. Ku gramatike typu 0 existuje TS, ktorý akceptuje jazyk generovaný touto gramatikou.
Nech L je jazyk generovaný gramatikou G=(N, Σ, P, S) typu 0. Nedeterministický TS M akceptujúci jazyk L bude mať 2 stopy. Na prvej stope je zapísaný vstupný reťazec a behom výpočtu sa nemení. Na druhej stope simuluje M odvodenie v G a je na nej zapísaná (do daného okamihu vygenerovaná) vetná forma α gramatiky G. Na zaciatku je obsah druhej stopy S a M opakovane prevádza tieto kroky:
Odvodenie v gramatike musí nejakým spôsobom simulovať výpočet stroja M. V gramatike G vygenerujeme dve kópie slova w nad abecedou Σ a nad druhou z nich v každom kroku odvodenia simulujeme jeden krok výpočtu stroja M. Ak stroj M neakceptuje, odvodenie nikdy nepovedie k terminálnemu reťazcu. Pravidlá na tvorenie pravidiel gramatiky sú pomerne zložité, nájsť ich môžete v skriptách 3)
* FI:IB005 Formální jazyky a automaty I (jaro 2006), prof. RNDr. Mojmír Křetínský, CSc.
Dušan Katona, ICQ: 426 081 873
hotovo: <99%>
môžete kluďne niečo doplniť alebo opraviť
Je potřeba ještě zapracovat poznámky od Jitky Pospíšilové.