opora

frantisek.plesicek
from frantisek.plesicek More from this publisher
10.02.2019 Views

KAPITOLA 5. TURINGOVY STROJE 113 Příklad 5.3.5 Sestrojíme dvoupáskový nedeterministický stroj, který bude akceptovat jazyk L = {ww R | kde w ∈ {x, y} ∗ }. Nedeterminismus zde využijeme k „uhádnutí“ poloviny vstupního slova. To znamená, že stroj nejprve čte slovo na první pásce a přečtené symboly zapisuje na druhou pásku. V určitém okamžiku stroj nedeterministicky přejde do stavu, kdy začne porovnávat obsah druhé pásky s dosud nepřečteným vstupem na první pásce (na druhé pásce se pohybuje zprava doleva). Budeme předpokládat, že v počáteční konfiguraci mají pásky tvary: – první páska: ∆w∆∆ . . . – druhá páska: ∆∆ . . . Jelikož stroj je nedeterministický, jeho přechodová funkce δ vrací množinu stavů. To znamená, že v jednotlivých poličkách tabulky pro přechodovou funkci může být víc než jedna položka. Stroj bude vypadat takto: M = {Q, Σ, Γ 1 , Γ 2 , δ, q 0 , q F } kde: Q = {q 0 , q 1 , q 2 , q F } Σ = {x, y} Γ 1 = {x, y, ∆} Γ 2 = {x, y, ∆} δ ∆, ∆ x, ∆ x, x y, ∆ y, y x, y y, x ∆, x ∆, y q 0 q 1 , R, R q 1 q 0 , R, R q 1 , x, x q 1, R, R q 2 , R, x q 1, y, y q 1, R, R q 2 , R, y q 2 q F q 0 , x, ∆ q 2 , R, L q 0 , y, ∆ q 2 , R, L q 0 , x, y q 0 , y, x q 0 , ∆, x q 0 , ∆, y Pro popis NTS je opět možno užít kompozitních diagramů. Jejich použití je podobné jako v případě DTS, odpadají zde ale některá omezení vyskytující se u DTS. U NTS je možné podmíněné předání řízení přes stejný symbol více strojům, šipky doplňkového podmíněného předání řízení (s využitím symbolu ¬) nemusí být označeny seznamem symbolů vytvářejícím přesný doplněk množiny symbolů vyskytujících se v ostatních podmíněných předáních řízení a je možná i kombinace podmíněného a nepodmíněného předání řízení. Je-li kombinováno podmíněné a nepodmíněné předání řízení, nedoplňují se implicitní přechody do nového koncového stavu přes symboly nepokryté podmíněným předáním řízení. Příklad 5.3.6 Navrhněte vícepáskový nedeterministický TS akceptující jazyk {a p | kde p není prvočíslo}. Věta 5.3.3 Pro každý NTS M existuje DTS M ′ takový, že L(M) = L(M ′ ). Důkaz. (idea) • NTS M budeme simulovat třípáskovým DTS. Význam jednotlivých pásek tohoto stroje je následující: – Páska 1 obsahuje přijímaný vstupní řetězec. – Páska 2 je pracovní páska. Obsahuje kopii pásky 1 ohraničenou vhodnými speciálními značkami. Po neúspěšném pokusu o přijetí je její obsah smazán a obnoven z první pásky.

KAPITOLA 5. TURINGOVY STROJE 114 – Páska 3 obsahuje kódovanou volbu posloupností přechodů; při neúspěchu bude její obsah nahrazen jinou posloupností. • Zvolená posloupnost přechodů je kódována posloupností čísel přiřazených přechodům simulovaného stoje. • Jednotlivé posloupnosti přechodů na pásce 3 je možno generovat modifikovaným TS pro generování posloupnosti řetězců ε, x, y, z, xx, .... • Vlastní simulace probíhá takto: 1. Okopíruj obsah pásky 1 na pásku 2. 2. Generuj příští posloupnost přechodů na pásce 3. 3. Simuluj provedení posloupnosti z pásky 3 na obsahu pásky 2. 4. Vede-li zkoumaná posloupnost do q F simulovaného stroje, zastav – vstupní řetězec je přijat. V opačném případě smaž pásku 2 a vrať se k bodu 1. • Není obtížné nahlédnout, že jazyk přijímaný takto vytvořeným strojem odpovídá jazyku přijímaným původním NTS. Závěr: Zavedením nedeterminismu do TS se nezvyšují jejich schopnosti přijímat jazyky! ✷ 5.4 Jazyky rekurzivně vyčíslitelné a jazyky rekurzivní Zavedeme klasifikaci jazyků (problémů) vzhledem k jejich akceptovatelnosti Turingovými stroji (řešitelnosti). Dojdeme k základním třem třídám jazyků, které reprezentují problémy řešitelné, problémy řešitelné jen částečně a problémy algoritmicky neřešitelné. 5.4.1 Rekurzivní vyčíslitelnost a rekurzivnost Turingův stroj se nazývá úplný (total), právě když pro každý vstup zastaví. Definice 5.4.1 Jazyk L ⊆ Σ ∗ se nazývá • rekurzívně vyčíslitelný, jestliže L = L(M) pro nějaký TS M, • rekurzívní, jestliže L = L(M) pro nějaký úplný TS M. Je-li M úplný Turingův stroj, pak říkáme, že M rozhoduje jazyk L(M). Ke každému rekurzívnímu jazyku existuje TS, který ho rozhoduje, tj. zastaví pro každé vstupní slovo – tento TS lze samozřejmě upravit tak, aby pro každý řetězec z daného jazyka zastavil s páskou ∆Y ∆∆..., a jinak zastavil s páskou ∆N∆∆.... TS přijímající rekurzívně vyčíslitelný jazyk L zastaví pro každé w ∈ L, ovšem pro w ∉ L může zastavit, ale také může donekonečna cyklit.

KAPITOLA 5. TURINGOVY STROJE 114<br />

– Páska 3 obsahuje kódovanou volbu posloupností přechodů; při neúspěchu<br />

bude její obsah nahrazen jinou posloupností.<br />

• Zvolená posloupnost přechodů je kódována posloupností čísel přiřazených přechodům<br />

simulovaného stoje.<br />

• Jednotlivé posloupnosti přechodů na pásce 3 je možno generovat modifikovaným<br />

TS pro generování posloupnosti řetězců ε, x, y, z, xx, ....<br />

• Vlastní simulace probíhá takto:<br />

1. Okopíruj obsah pásky 1 na pásku 2.<br />

2. Generuj příští posloupnost přechodů na pásce 3.<br />

3. Simuluj provedení posloupnosti z pásky 3 na obsahu pásky 2.<br />

4. Vede-li zkoumaná posloupnost do q F simulovaného stroje, zastav – vstupní<br />

řetězec je přijat. V opačném případě smaž pásku 2 a vrať se k bodu<br />

1.<br />

• Není obtížné nahlédnout, že jazyk přijímaný takto vytvořeným strojem odpovídá<br />

jazyku přijímaným původním NTS.<br />

Závěr:<br />

Zavedením nedeterminismu do TS se nezvyšují jejich schopnosti<br />

přijímat jazyky!<br />

✷<br />

5.4 Jazyky rekurzivně vyčíslitelné a jazyky rekurzivní<br />

Zavedeme klasifikaci jazyků (problémů) vzhledem k jejich akceptovatelnosti Turingovými<br />

stroji (řešitelnosti). Dojdeme k základním třem třídám jazyků, které reprezentují<br />

problémy řešitelné, problémy řešitelné jen částečně a problémy algoritmicky<br />

neřešitelné.<br />

5.4.1 Rekurzivní vyčíslitelnost a rekurzivnost<br />

Turingův stroj se nazývá úplný (total), právě když pro každý vstup zastaví.<br />

Definice 5.4.1 Jazyk L ⊆ Σ ∗ se nazývá<br />

• rekurzívně vyčíslitelný, jestliže L = L(M) pro nějaký TS M,<br />

• rekurzívní, jestliže L = L(M) pro nějaký úplný TS M.<br />

Je-li M úplný Turingův stroj, pak říkáme, že M rozhoduje jazyk L(M).<br />

Ke každému rekurzívnímu jazyku existuje TS, který ho rozhoduje, tj. zastaví<br />

pro každé vstupní slovo – tento TS lze samozřejmě upravit tak, aby pro každý<br />

řetězec z daného jazyka zastavil s páskou ∆Y ∆∆..., a jinak zastavil s páskou<br />

∆N∆∆....<br />

TS přijímající rekurzívně vyčíslitelný jazyk L zastaví pro každé w ∈ L, ovšem<br />

pro w ∉ L může zastavit, ale také může donekonečna cyklit.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!