Turingovy stroje Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz
Teoretická informatika strana 2 Opakování z minulé přednášky Jaké znáte algebraické struktury s jednou operací? Co je to okruh, obor integrity, těleso? Co je to homomorfismus, vnoření a izomorfismus? Co je to polynom? Nad jakou algebraickou strukturou se tvoří? Co nám říká základní věta algebry?
Teoretická informatika 3 Osnova dnešní a zítřejší přednášky Opakování Definice jazyka a gramatiky Chomského hierarchie jazyků Regulární jazyky a konečné automaty Bezkontextové jazyky a zásobníkové automaty Popis Turingova stroje Definice, konfigurace, krok výpočtu Jazyky a problémy Rekursivní a rekursivně spočetné jazyky Rozhodnutelnost problémů Výpočet funkcí pomocí TS Varianty TS Vícepáskový TS Nedeterministický TS Konstrukce TS Uzávěrové vlastnosti rekursivních a rekursivně spočetných jazyků
Teoretická informatika 4 Opakování: Abeceda a jazyk Abecedou rozumíme libovolnou konečnou množinu Σ, jejíž prvky nazýváme znaky Slovo (řetězec) nad abecedou Σ je libovolná konečná posloupnost znaků této abecedy Délku slova w značíme w Prázdné slovo značíme ε Množinu všech slov nad abecedou Σ značíme Σ * Na množině všech slov zavádíme asociativní operaci (zřetězení) Na základě zřetězení definujeme i-tou mocninu slova w takto: w 0 = ε w i+1 = w w i Jazyk je libovolná podmnožina Σ * tedy libovolná množina slov nad abecedou Σ
Teoretická informatika strana 5 Opakování: Operace nad jazyky Nechť L 1, L 2 jsou jazyky nad abecedou Σ. Sjednocením jazyků L 1 L 2 = {w w L 1 w L 2 } Totéž jako množinové sjednocení Obsahuje slova z prvního i druhého jazyka L 1 L 2 = {w w L 1 w L 2 } Totéž jako množinový průnik Obsahuje slova patřící do obou jazyků současně L 1 L 2 = {w w = uv, u L 1 v L 2 } Obsahuje slova tvořící zřetězení slov z prvního jazyka se slovy z druhého jazyka Analogicky jako u slov definujeme i-tou mocninu jazyka L 1 * = {w w = u*, u L 1 } Doplněk jazyka L1: co-l 1 = Σ * L 1
Teoretická informatika 6 Opakování: Gramatika Gramatika G je čtveřice (N, Σ, P, S), kde N je konečná neprázdná množina neterminálních symbolů Σ je konečná množina terminálních symbolů disjunktní s množinou N P (N Σ)*N(N Σ)* (N Σ)* je konečná množina přepisovacích pravidel přepisovací pravidla obvykle zapisujeme ve tvaru α β, kde α musí obsahovat alespoň jeden neterminál. S N je počáteční symbol (též kořen gramatiky) Na množině (N Σ)* definujeme relaci odvození G a její reflexivní a tranzitivní uzávěr G * Pak definujeme jazyk generovaný gramatikou G jako množinu všech slov odvoditelných z počátečního symbolu Tedy L(G) = {w w Σ *, S G * w}
Teoretická informatika 7 Opakování: Chomského hierarchie gramatik a jazyků Typ 0: Na tvar pravidel nejsou kladeny žádné omezující požadavky Frázové gramatiky Typ 1: Pro každé pravidlo α β platí, že α β s eventuelní výjimkou pravidla S ε, pokud se S nevyskytuje na pravé straně žádného pravidla Kontextové gramatiky Typ 2: Každé pravidlo je tvaru A α, kde α 1 s eventuelní výjimkou pravidla S ε, pokud se S nevyskytuje na pravé straně žádného pravidla Bezkontextové gramatiky Typ3: Každé pravidlo je tvaru A ab nebo A a s eventuelní výjimkou pravidla S ε, pokud se S nevyskytuje na pravé straně žádného pravidla Regulární gramatiky
Teoretická informatika 8 Opakování: Konečné automaty Konečný automat je pětice M = (Q, Σ, δ, q 0, F), kde Q je neprázdná množina vnitřních stavů Σ je konečná množina vstupních symbolů nazývaná též abeceda δ: Q Σ Q je přechodová funkce F Q je neprázdná množina koncových stavů Jazyk akceptovaný KA M je množina všech slov, pod kterými automat přejde do některého z koncových stavů L(M) = {w δ^(q 0,w) F} δ^ je rozšířená přechodová funkce definovaná induktivně vzhledem k délce slova Nedeterministický konečný automat Automat s ε-kroky
Teoretická informatika 9 Opakování: Regulární výrazy Třída regulárních jazyků nad abecedou Σ, označovaná jako R(Σ) je definována induktivně:, {ε}, {a} pro každé a Σ je regulární jazyk nad Σ Jsou-li K, L regulární jazyky nad Σ, pak i K L, K L a K* jsou regulární jazyky nad Σ Nic jiného není regulární jazyk nad Σ Kleeneho věta: Libovolný jazyk je regulární právě tehdy, když je rozpoznatelný konečným automatem
Teoretická informatika 10 Opakování: Bezkontextové jazyky Nechť G = (N, Σ, P, S) je CFG. Pak pro každé slovo z L(G) existuje derivační strom v gramatice G takový, že: S je kořen derivačního stromu Každý uzel má návěští, které je symbolem z N Σ {ε} Návěští následníků každého uzlu odpovídají symbolům z použitého přepisovacího pravidla Zřetězením návěští listů dostaneme odvozené slovo
Teoretická informatika 11 Opakování: Zásobníkové automaty I. Nedeterministický zásobníkový automat (PDA) je sedmice M = (Q, Σ, Γ, δ, q 0, Z 0, F), kde Q je konečná množina vnitřních stavů Σ je konečná množina vstupních symbolů Γ je konečná množina zásobníkových symbolů δ: Q (Σ ε) Γ P fin (Q Γ * ) je přechodová funkce q 0 Q je počáteční stav Z 0 Γ je počáteční symbol v zásobníku F Q je množina koncových stavů
Teoretická informatika strana 12 Opakování: Zásobníkové automaty II. Konfigurace PDA M je libovolný prvek (q, w, γ) Q Γ * q je momentální stav w je dosud nepřečtená část vstupního slova γ je obsah zásobníku Počáteční konfigurace PDA M je (q 0, w, Z 0 ) Krok výpočtu je relace na množině všech konfigurací označovaná symbolem M a definovaná (p, aw, Zα) M (q, w, γα) (q,γ) δ(p,a,z) pro a Σ {ε} Reflexivní a tranzitivní uzávěr relace M značíme symbolem M *
Teoretická informatika 13 Opakování: Zásobníkové automaty III. Jazyk rozpoznávaný konečným stavem PDA M L(M) = {w (q 0, w, Z 0 ) M (q f, ε, α) } Jazyk rozpoznávaný prázdným zásobníkem PAD M L(M) = {w (q 0, w, Z 0 ) M (q, ε, ε) } Oba způsoby akceptování jsou ekvivalentní
Teoretická informatika 14 Syntaktická analýza Ke každé CFG G lze sestrojit PDA M takový, že L(G) = L(M) Ke každému PDA M existuje CFG G taková, že L(M) = L(G) Nedeterministická syntaktická analýza shora dolů simulace odvozovacích pravidel Nedeterministická syntaktická analýza zdola nahoru budování pravé větné formy jako zřetězení obsahu zásobníku a dosud nepřečteného vstupu
Teoretická informatika 15 Definice Turingova stroje Turingův stroj je devítice M = (Q, Σ, Γ,,, δ, q 0, q A, q R ), kde Q je konečná množina vnitřních stavů Σ je konečná množina vstupních symbolů Σ, Σ Γ je konečná množina páskových symbolů Σ Γ, Γ, Γ (Γ Σ) je počáteční symbol pásky (Γ Σ) je prázdný symbol δ: (Q {q A, q R }) Γ Q Γ {L,R} je přechodová funkce q 0 Q je počáteční stav q A Q je koncový akceptující stav q R Q je koncový zamítající stav
Teoretická informatika 16 Výpočet Turingova stroje I. Turingův stroj čte symboly ze vstupní pásky Na základě vnitřního stavu a čteného symbolu TS podle přechodové funkce změní svůj vnitřní stav zapíše na pásku nový symbol posune čtecí hlavu doleva, nebo doprava Vstupní páska je jednosměrně nekonečná Zaplněno je vždy jen konečně mnoho políček Ostatní políčka obsahují prázdný symbol Výpočet TS končí, jestliže se stroj dostane do některého ze stavů q A, q R.
Teoretická informatika 17 Konfigurace Turingova stroje Konfigurace je jednoznačně určena vnitřním stavem obsahem pásky pozicí čtecí hlavy Konfiguraci tedy lze popsat trojicí K = (δ Q, γ Γ *, n) Q Γ * N 0 Počáteční konfigurace počáteční stav na pásce je vstupní slovo čtecí hlava se nachází na počátečním políčku pásky
Teoretická informatika 18 Akceptující a zamítající konfigurace Výpočet TS končí, dostane-li se do některého ze stavů q A, q R. Akceptující konfigurace je tedy konfigurace tvaru (q A, γ, n) Zamítající konfigurace je pak konfigurace tvaru (q R, γ, n)
Teoretická informatika 19 Krok výpočtu TS Na množině všech konfigurací TS definujeme binární relaci krok výpočtu označovanou M (p, γ, n) M { (q, s n b (γ), n+1) pro δ(p,γ n ) = (q,b,r) (q, s n b (γ), n-1) pro δ(p,γ n ) = (q,b,l) Reflexivní a tranzitivní uzávěr relace M značíme M * a definujeme jako k-násobný součin relace M pro všechna k N 0
Teoretická informatika 20 Výpočet Turingova stroje II. Výpočet TS je posloupnost konfigurací K 0, K 1, K 2, K 0 je počáteční konfigurace TS K i M K i+1 i 0 Výpočet může být buď konečný, nebo nekonečný. Je-li konečný, pak poslední konfigurací ve výpočtu je akceptující, nebo zamítající konfigurace.
Teoretická informatika 21 Akceptuje, zamítá, cyklí Řekneme, že TS M daný vstupní řetězec w Σ * akceptuje, jestliže výpočet M je konečný a poslední konfigurace je akceptující, tedy (q 0, w *, 0) M * (q A, z, n) zamítá, jestliže výpočet M je konečný a poslední konfigurace je zamítající, tedy (q 0, w *, 0) M * (q R, z, n) Řekneme, že TS M pro daný vstupní řetězec w Σ * cyklí, jestliže výpočet TS M na slově w je nekonečný. Jestliže TS M dané slovo w akceptuje, nebo zamítá, pak říkáme, že nad daným slovem zastaví. TS, který zastaví pro každý vstup, se nazývá úplný.
Teoretická informatika 22 Jazyk akceptovaný a rozhodovaný TS Jazyk akceptovaný TS M označujeme L(M) a definujeme jako množinu slov, které TS M akceptuje: L(M) = {w Σ * M akceptuje w} Je-li M navíc úplný TS, říkáme, že M rozhoduje jazyk L.
Teoretická informatika 23 Příklad Navrhněte TS rozhodující jazyk L = {a n b n c n n >= 0}
Teoretická informatika 24 Rekursivní a rekursivně spočetné jazyky Jazyk L Σ * nazýváme rekursivně spočetný právě tehdy, když L = L(M) pro nějaký TS M rekursivní právě tehdy, když L = L(M) pro nějaký úplný TS M Tedy Ke každému rekursivnímu jazyku existuje TS, který jej rozhoduje, tj. jeho výpočet je konečný Ke každému rekursivně spočetnému jazyku musí existovat TS, který akceptuje každé slovo w L, ale pro slova nepatřící do L buď zamítá, nebo cyklí.
Teoretická informatika 25 Rozhodnutelnost problémů Problém určit, zda řetězec w má vlastnost P, nazýváme rozhodnutelný právě tehdy, když množina všech řetězců majících vlastnost P je rekursivní tj. existuje TS akceptující každé slovo mající vlastnost P a zamítající každé slovo nemající vlastnost P částečně rozhodnutelný právě tehdy, když množina řetězců majících vlastnost P je rekursivně spočetná tj. existuje TS akceptující každé slovo mající vlastnost P a zamítající nebo cyklící nad každým slovem, které vlastnost P nemá nerozhodnutelný právě tehdy, když není rozhodnutelný, ani částečně rozhodnutelný
Teoretická informatika 26 Ekvivalence jazyků a problémů Problém určit, zda řetězec w má vlastnost P je rozhodnutelný Vlastnost P je rozhodnutelná Problém P je rozhodnutelný P je rozhodnutelný jazyk {w w má vlastnost P} je rekursivní L je rekursivní problém w L je rozhodnutelný P je částečně rozhodnutelný jazyk {w w má vlastnost P} je rekursivně spočetný L je rekursivně spočetný problém w L je částečně rozhodnutelný
Teoretická informatika strana 27 Výpočet funkcí pomocí TS Doposud jsme se zabývali pouze tím, v jakém stavu TS skončí (skončí-li) bez ohledu na stav pásky v koncové konfiguraci Řekneme, že TS M počítá funkci f:n 0 k N 0 právě tehdy, když akceptuje každé vstupní slovo tvaru vstupní páska na konci výpočtu obsahuje řetězec Funkce f:n 0 k N 0 se nazývá částečně rekursivní právě tehdy, když existuje TS M počítající funkci f rekursivní právě tehdy, když existuje úplný TS M počítající funkci f
Teoretická informatika 28 Příklad Navrhněte TS počítající součet a součin dvou čísel zapsaných v unární soustavě
Teoretická informatika 29 Vícepáskový TS Uvažujme TS, který má namísto jedné pásky k pásek, k N na každé pásce je samostatná čtecí hlava. Otázka: Existují jazyky akceptované/ rozhodované tímto strojem, které nejsou akceptované/rozhodované jednopáskovým TS? Jinými slovy: Je vícepáskový TS mocnější než jednopáskový TS? Příklad: Navrhněte TS rozhodující, zda dané číslo, napsané na vstupní pásce v binární soustavě, je prvočíslo či nikoliv.
Teoretická informatika 30 Nedeterministický TS I. Nedeterministický Turingův stroj je devítice M = (Q, Σ, Γ,,, δ, q 0, q A, q R ), kde Q je konečná množina vnitřních stavů Σ je konečná množina vstupních symbolů Σ, Σ Γ je konečná množina páskových symbolů Σ Γ, Γ, Γ (Γ Σ) je počáteční symbol pásky (Γ Σ) je prázdný symbol δ: (Q {q A, q R }) Γ 2 Q Γ {L,R} je přechodová funkce q 0 Q je počáteční stav q A Q je koncový akceptující stav q R Q je koncový zamítající stav
Teoretická informatika 31 Nedeterministický TS II. Nedeterministický TS může mít v každém kroku na výběr několik možností Podobně jako u DTS definujeme i u NTS relaci krok výpočtu předpisem (p, γ, n) M * { (q, s n b (γ), n+1) pokud (q,b,r) δ(p,γ n ) (q, s n b (γ), n-1) pokud (q,b,l) δ(p,γ n ) Všechny možnosti výpočtu TS lze popsat stromem (tzv. výpočtový strom), jehož uzly jsou konfigurace, kořen je počáteční konfigurace a listy jsou koncové konfigurace.
Teoretická informatika 32 Simulace NTS pomocí DTS Pro každý NTS N existuje DTS D takový, že L(N) = L(D) Stroj D, který bude simulovat výpočet stroje N, musí prozkoumat všechny možné výpočty stroje N Musí tedy prohledat výpočtový strom stroje N Stroj D bude mít 3 pásky 1. bude obsahovat vstupní slovo a její obsah se nebude v průběhu výpočtu měnit 2. bude sloužit k simulaci aktuálního výpočtu stroje N 3. bude obsahovat informace o dosud prozkoumaných možnostech výpočtu stroje N posloupnost přirozených čísel; pro každý stav určují, kolikátý následník byl zvolen Narazí-li D v průběhu výpočtu na akceptující/zamítající konfiguraci stroje N, pak akceptuje/zamítá Pokud stroj N při všech výpočtech cyklí, bude cyklit i stroj D.
Teoretická informatika 33 Stroj se dvěma zásobníky Představme si TS, který má namísto vstupní pásky dva zásobníky Zásobník S 1 obsahuje vše, co je od čtecí hlavy nalevo Zásobník S 2 obsahuje vše, co je od čtecí hlavy napravo a na vrcholu má právě čtený symbol Počáteční konfigurace: S 1 je prázdný S 2 obsahuje vstupní řetězec Krok výpočtu Posun hlavy doleva: push(s 2, pop(s 1 )) Posun hlavy doprava: push (S 1, pop(s 2 )) Výpočetně ekvivalentní Používá se při implementaci TS
Teoretická informatika 34 Připomenutí: Souvislosti Konečný automat nemá žádnou paměť rozpoznává regulární jazyky Zásobníkový automat má jeden zásobník rozpoznává bezkontextové jazyky Turingův stroj má dva zásobníky rozpoznává jazyky typu 0
Teoretická informatika 35 Metody konstrukce TS Zapamatování v řídicí jednotce Navrhněte TS rozhodující jazyk L = {xux x {a,b}, u {a,b} * } {a,b} Tedy jazyk všech slov, které začínají a končí stejným symbolem Označování symbolů Navrhněte TS rozhodující jazyk L = {w w \in {a} *, w = 2 n, n 1} Tedy jazyk všech slov nad jednoprvkovou abecedou, jejichž délka je mocninou dvojky Používání více pásek
Teoretická informatika 36 Vlastnosti rekursivních a rekursivně spočetných jazyků I. Třídy rekursivních a rekurzivně spočetných jazyků jsou uzavřeny vzhledem k operacím,,, * Jinými slovy sjednocení rekursivních / rekursivně spočetných jazyků je opět rekursivní / rekursivně spočetný jazyk totéž platí pro průnik, zřetězení a iteraci Jak zkonstruovat TS akceptující / rozhodující zmíněné jazyky?
Teoretická informatika 37 Vlastnosti rekursivních a rekursivně spočetných jazyků II. Třída rekursivních jazyků je uzavřená vzhledem k operaci komplementu Nechť jazyk L i jeho komplement co-l jsou rekursivně spočetné. Pak jsou jazyky L i co-l rekursivní. Třída rekursivně spočetných jazyků není uzavřena vzhledem k operaci komplementu.