Obsah
IN12 Turingovy stroje a jazyky typu 0
(definice, vztah ke gramatikám Chomského hierarchie, rekurzivní a rekurzivně spočetné jazyky, uzávěrové vlastnosti)
Vypracovanie
Definícia
Turingov stroj
je konečná množina stavov
je konečná množina vstupných symbolov
je konečná množina páskových (pracovných) symbolov, obsahujúca ako svoju podmnožinu abecedu
je ľavá koncová značka
je symbol označujúci prázdne políčko
je totálna prechodová funkcia
je počiatočný stav
je akceptujúci stav
je zamietajúci stav
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.
Neformálny popis
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:
- zmení svoj stav (resp. ho môže zmeniť)
- zapíše symbol na políčko snímané hlavou (čím prepíše symbol, ktorý tam bol predtým)
- posunie hlavu o jedno políčko doprava alebo doľava
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
Idea riešenia:1) Stroj najskôr posúva svoju hlavu až na koniec vstupného reťazca a kontroluje, či je zapísaný na páske v tvare
Rekurzivne a rekurzivne spočetné jazyky
Definícia
- rekurzívne spočetný práve vtedy, keď L = L(M) pre nejaký Turnigov stroj M
- rekurzívny práve vtedy, keď L = L(M) pre nejaký úplný Turnigov stroj M
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
- rozhodnuteľný práve keď množina všetkých reťazcov, ktorá má vlastnosť P, je rekurzívna
- nerozhodnuteľný práve keď nie je rozhodnuteľný
- čiastočne rozhodnuteľný práve keď množina všetkých reťazcov, ktorá má vlastnosť P, je rekurzíve spočetná
Uzáverové vlastnosti
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
L je rekurzívny
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.
Vzťah TS ku gramatikám Chomského hierarchie
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.
Prevod gramatiky typu 0 na TS
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:
- nedeterministicky vybere pozíciu i v reťazci α na druhej stope.
- nedeterminsticky zvolí pravidlo β → γ gramatiky G
- ak je β podreťazcom reťazcu α začínajúcim na pozícii i, nahradí β reťazcom γ (ak nie sú rovnako dlhé, tak zvyšok druhej pásky posunie doľava alebo doprava)
- ak sa reťazec na 1.stope rovná reťazcu na 2.stope - akceptuje, inak pokračuje znova krokom 1.
Prevod TS na gramatiku typu 0
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)
Predmety
* FI:IB005 Formální jazyky a automaty I (jaro 2006), prof. RNDr. Mojmír Křetínský, CSc.
Použitá literatúra
Vypracoval
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é.
