TURINGOVY STROJE Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 12 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 1 / 15 21
Turingovy stroje *) Seznámíme se s následujícími pojmy: struktura a chování Turingova stroje, konfigurace T.S.,přechod mezi konfiguracemi, jazyk rozhodovaný T.S., zobrazení počítané T.S. jazyk polorozhodovaný T.S., možná zobecnění T.S., nedeterministický T.S., univerzální T.S., nerozhodnutelné problémy Skripta odst. 11.2, str. 181-200 *) A.M. Turing: On computable numbers, with an application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, Series 2, Vol.42 (1936-37) pp. 230 265 (zasláno 28. května 1936) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 2 // 15 21
Turingovy stroje Turingovým cílem bylo vytvořit model vyčíslitelnosti / vypočitatelnosti tak, aby byl co nejjednodušší pro definici, popis a studium současně dostatečně obecný Konečná řídicí jednotka, V/V hlava a páska 4 a b a a b # # # řídicí jednotka Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 3 // 15 21
Turingovy stroje DF: Turingův stroj M = Q, A, δ, s, H Q - konečná množina stavů A - abeceda obsahující # (prázdný symbol) a 4 (symbol konce pásky), A neobsahuje symboly a s - počáteční stav H - množina koncových stavů H Q δ : (Q-H) A Q (A {, }) je přechodové zobrazení pro všechna q Q-H platí: δ(q,4) = (p, ) pro všechna q Q-H, a A platí: δ(q,a) = (p,b) b 4 (tzn. symbol 4 na levém konci se nikdy nepřepíše symbol 4 se nezapíše nikam dovnitř pásky) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 4 // 15 21
Turingovy stroje Interpretace přechodového zobrazení δ : je-li pro q Q-H, a A, δ(q,a) = (p,b) b A... stroj přepíše symbol a na pásce symbolem b b {, }... stroj posune hlavu vlevo/vpravo Př.: M 1 = Q, A, δ 1, s, {h} M 2 = Q, A, δ 2, s, {h} stav znak δ 1 s a (r, #) s # (h, #) s 4 (s, ) r a (s,a) r # (s, ) r 4 (r, ) stav znak δ 2 s a (s, ) s # (r, ) s 4 (r, ) r a (r, ) r # (s, ) r 4 (h, ) Jak funguje M 1 / M 2?? Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 5 // 15 21
Formalizace činnosti T.S. Konfigurace T.S. M = Q, A, δ, s, H je prvek kartézského součinu Q 4A* (A*(A-{#}) {ε}) stav páska zleva k hlavě páska vpravo konfigurace poloha hlavy zkratka (q,4a, baa) 4 a b a a (q, 4abaa) (q,4 ###, #a) 4 # # # # a # # (q, 4####a) (q,4#a##, ε) 4 # a # # (q, 4#a##) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 6 // 15 21
Přechod mezi konfiguracemi M výchozí konfigurace (q, wau) přepis symbolu na pásce pro δ(q,a) = (p,b), b A (q, wau) M (p, wbu) posun vlevo pro δ(q,a) = (p, ), w = w'a' je-li a # nebo u ε (q, wau) = (q, w'a'au) M je-li a = # a současně u = ε (q, w#) = (q, w'a'#) M (p, w'a'au) (p, w'a') posun vpravo pro δ(q,a) = (p, ), w = w'a' je-li u = a'u', a' A (q, wau) = (q, waa'u') M (p, waa'u') je-li u = ε (q,wa) M (p, wa#) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 7 // 15 21
Výpočet délky n Výpočet délky n : C 0 M C 1 M... M C n M = K, A, δ, s, H, H = {y,n}, w (A - {4,#})* počáteční konfigurace T.S. M při vstupu w... (s, 4#w) přijímající / odmítající konfigurace (y,4w') / (n,4w') M přijímá / odmítá vstup w (A - {4,#})*, pokud platí (s,4#w) (y,4w') M (s,4#w) (n,4w'') M (přijímá) (odmítá) Označme A 0 (A - {4,#}) - vstupní abeceda M rozhoduje jazyk L A 0* : pro každé w A 0* platí je-li w L, pak M přijímá w je-li w L, pak M odmítá w * * Jazyk L je rekurzivní existuje T.S. M, který jej rozhoduje. Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 8 // 15 21
Zjednodušený popis Turingových strojů Základní stroje (předpokládáme pevnou abecedu A) stroj píšící jeden znak - označení M a (zjednodušeně a) M a = {s,h}, A, δ, s, {h}, a A - {#} δ(s,x) = (h,a) pro všechna x 4 δ(s,4) = (h, ) stroj provádějící krok vlevo/vpravo M = L, M = R L = {s,h}, A, δ, s, {h} R = {s,h}, A, δ, s, {h} δ(s,x) = (h, ) pro vš. x 4 δ(s,x) = (h, ) pro vš. x 4 δ(s,4) = (h, ) δ(s,4) = (h, ) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 9 // 15 21
Pravidla kompozice M : M 1 a M 2 b M 3 M 1 pracuje do zastavení, pak pro a začne M 2 od s 2 pro b začne M 3 od s 3?Odpovídá kompozice definici Turingova stroje? M 1 = K 1, A, δ 1, s 1, H 1 M 2 = K 2, A, δ 2, s 2, H 2 K i K j = M 3 = K 3, A, δ 3, s 3, H 3 Výsledkem kompozice je T.S. M = K, A, δ, s, H určený takto: Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 10 // 15 21
Pravidla kompozice K = K 1 K 2 K 3, s = s 1, H = H 2 H 3 δ : pro x A, q K-H položíme δ(q,x) = δ 1 (q,x) pro q K 1 -H 1 δ(q,x) = δ 2 (q,x) pro q K 2 -H 2 δ(q,x) = δ 3 (q,x) pro q K 3 -H 3 pro q H 1 δ(q,a) = (s 2,a) δ(q,b) = (s 3,b) δ(q,x) = (h,x), h H pro x a,b Kompozice je tedy korektní! Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 11 // 15 21
Využití kompozice a další zkratky a R b # R R a,b, #, R R R RR R 2 4 R # R x # R # "postupuj vpravo až k mezeře" # # # # R L R L R # L # R # L # najde nejbližší mezeru vpravo od aktuelní pozice (mezeru vlevo, nemezeru vpravo, nemezeru vlevo) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 12 // 15 21
Příklad Př.: kopírovací Turingův stroj, w (A - {#})* # w # # w # w # L # R x # # R #2 x L #2 x # R # 4#011##... L # 4#011##... R 4##11#0...... 4#011#0#... R 4#011#01#...... 4#011#01#... R 4#011#011#...... 4#011#011#... R 4#011#011#... R # Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 13 // 15 21
Příklad Př.: Co dělá následující Turingův stroj?? L x # # R # x L # x 4# w #??? # R # Př.: Jak udělat Turingův stroj S L, který posune obsah pásky vlevo o jedno políčko?? A co posun vpravo S R? (w neobsahuje mezeru) 4# w # 4w # 4# w # 4##w # Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 14 // 15 21
Příklad Př.: Turingův stroj rozhodující jazyk {a n b n c n : n 0} d a,d b,d R a dr b dr c dl # # b,c #,c #,a y n FSA a T.S. pracují při rozpoznávání jazyka různým způsobem (FSA se vždy zastaví) Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 15 // 15 21
Počítající Turingův stroj Df.: Nechť M = K, A, δ, s, {h}, A 0 A - {4,#}, w A 0 * z je výstup M na vstup w (píšeme z = M(w)) M se zastaví pro vstup w a platí (s,4#w) M (h,4#z) M počítá zobrazení f : A 0 * A 0 * pro každé w A 0 * platí f(w) = M(w) f je rekurzivní existuje T.S. M, který počítá f Přechod od řetězů na čísla - kódování, např. binární Př.: R # 1 L 0 # 0 Turingův stroj, který počítá funkci succ(n) = n+1 1S R 1L # Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 16 // 15 21
Polorozhodující Turingův stroj Df.: Nechť M = K, A, δ, s, {h}, A 0 A - {4,#}, L A 0 * M polorozhoduje jazyk L pokud pro lib. w A 0 * platí w L M se zastaví pro vstup w L je rekurzivně spočetný existuje Turingův stroj M, který polorozhoduje L V.: Nechť L je rekurzivní jazyk. Potom platí L je rekurzivně spočetný doplněk L = A 0 * - L je rekurzivní Zobecnění T.S.: vícepáskové oboustranně nekonečná páska více hlav dvojrozměrná páska s náhodným přístupem nedeterministický Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 17 // 15 21
Nerozhodnutelné problémy?? Kde jsou meze Turingových strojů?? (zatím jsou podobné pevně naprogramovanému počítači) Univerzální T.S. U - je schopen simulovat libovolný T.S. M "M" = zakódování stroje M pomocí řetězu "w" = zakódování vstupu w U("M" "w") = "M(w)" kódování stavů qxx...x kódování symbolů ayy...y x,y {0,1}? Jak pracuje univerzální Turingův stroj? Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 18 // 15 21
Problém zastavení Turingova stroje U má 3 pásky simuluje pásku stroje M zakódování struktury stroje M zakódování akt. stavu stroje M U se zastaví na vstup "M" "w" právě když se M zastaví na vstup w a vrátí i stejný výsledek Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 19 // 15 21
Problém zastavení Turingova stroje Pro T.S. zadaný kódem "M" a vstup zadaný kódem "w" rozhodnout, zda se M zastaví pro vstup w. Zjednodušená varianta: Pro T.S. zadaný kódem "M" rozhodnout, zda se M zastaví pro vstup "M". Předpokládejme, že T.S. A rozhoduje tento problém. Doplníme T.S. A na stroj B tak, že přidáme nový stav a necháme B cyklit, jakmile se dostane do původního stavu y. Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 20 // 15 21
Problém zastavení Turingova stroje B A y A y z n n δ(y,a)=(z, ) δ(z,a)=(y, ) pro vš. a A?? Jak se chová B?? B se zastaví (ve stavu n), když M se na vstup "M" nezastaví B se nezastaví, když M se na vstup "M" zastaví?? Co se stane, když dáme "B" na vstup stroje B?? Problém zastavení je nerozhodnutelný Doc. Josef Kolář (ČVUT) Prohledávání Turingovy stroje grafů GRA, LS 2010/11, Lekce 12 4 21 // 15 21