150 likes | 352 Views
Turingův stroj. Neformální popis Turingova stroje. 1936 Alan Turing Konečný automat s nekonečnou páskou na pásce je napsaný vstup symbol a y na pásce lze libovolně přepisovat po pásce se lze pohybovat oběma směry je možné měnit vnitřní stav Konečný automat neměl žádnou paměť
E N D
Neformální popis Turingova stroje • 1936 Alan Turing • Konečný automat s nekonečnou páskou • na pásce je napsaný vstup • symbolay na pásce lze libovolně přepisovat • po pásce se lze pohybovat oběma směry • je možné měnit vnitřní stav • Konečný automat neměl žádnou paměť • jen konečný počet stavů • Zásobníkový automat měl nekonečný zásobník s přístupem pouze k symbolu na vrcholu • Turingův stroj má nekonečnou pásku s přístupem kamkoliv. Zdroj: www.ecs.syr.edu
Proč zavádíme Turingův stroj • Je to zjednodušený model počítače • tzv. “výpočetní model” • model jakéhokoliv možného výpočtu • Má jasnou formální definici umožňující dokazovat (ne)řešitelnost problémů • Je formálním ekvivalentem vágně definované “algoritmické řešitelnosti” • Cílem je ukázat, že existují problémy neřešitelné pomocí počítače
Definice Turingova stroje • Turingův stroj je devíticeM = (Q, , , , , , q0, qA, qR), 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 – {qA, qR}) Q{L,R} je přechodová funkce • q0Q je počáteční stav • qAQ je koncový akceptující stav • qRQ je koncový zamítající stav
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ů qA, qR.
Konfigurace Turingova stroje • Konfigurace je jednoznačně určena • vnitřním stavem • obsahem pásky • pozicí čtecí hlavy • Může být obsah pásky „nekonečný“? • Konfiguraci tedy lze popsat trojicí • K = (qQ,*, n) Q * N0 • Počáteční konfigurace (q0, w, 0) • počáteční stav • na pásce je vstupní slovo • čtecí hlava se nachází na počátečním políčku pásky
Akceptující a zamítající konfigurace • Výpočet TS končí, dostane-li se do některého ze stavů qA, qR. • Akceptující konfigurace je tedy konfigurace tvaru (qA, , n) • Zamítající konfigurace je pak konfigurace tvaru (qR, , n)
Krok výpočtu TS • Na množině všech konfigurací TS definujeme binární relaci krok výpočtuoznačovanou M • (p, , n) M{ • (q, snb(), n+1) pro (p,n) = (q,b,R) • (q, snb(), 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 N0 • tedy přechod přes 0-k kroků
Zkrácený zápis konfigurace • Konfiguraci (q,X1X2…Xk,n) lze zapsat jako řetězec X1X2…Xn-1qXnXn+1…Xk • označení stavů nesmí být páskovými symboly • pozice stavu jednoznačně určuje pozici čtecí hlavy • Krok výpočtu pak lze psát jako • X1…Xn-1pXn…Xk M X1…Xn-1bqXn+1…Xk pro (p,Xn) = (q,b,R) • X1…Xn-1pXn…Xk M X1…Xn-2qXn-1bXn+1…Xk pro (p,Xn) = (q,b,L)
Výpočet Turingova stroje • Výpočet TS je posloupnost konfigurací K0, K1, K2, … • K0 je počáteční konfigurace TS • KiM Ki+1i≥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.
TS 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 (q0, w*, 0) M* (qA, z, n) • zamítá, jestliže výpočet M je konečný a poslední konfigurace je zamítající, tedy (q0, w*, 0) M* (qR, 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ý.
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.
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í.
Příklady • Navrhněte TS rozhodující jazyk L = {xux| x {0,1}, u {0,1}*} • Navrhněte TS rozhodující jazyk L = {cdwcd | c,d {0,1}, w {0,1}*} • Navrhněte TS rozhodující jazyk L = {anbncn | n >= 0} • Navrhněte TS rozhodující jazyk L = {w | w {a}*, |w| = 2n, n ≥ 1} • Navrhněte TS rozhodující jazyk “dominových kostek” L = {w| w{a..z}2, wi[2] = wi+1[1] i}
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 {a}*, |w| = 2n, n ≥ 1} • Tedy jazyk všech slov nad jednoprvkovou abecedou, jejichž délka je mocninou dvojky • Používání více pásek