210 likes | 505 Views
TURINGOVY STROJE Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 201 2 /201 3 , Lekce 12 https://edux.fit.cvut.cz/courses/BI-GRA. Turingovy stroje *). Seznámíme se s následujícími pojmy:
E N D
TURINGOVY STROJEDoc. RNDr. Josef Kolář, CSc.Katedra teoretické informatiky, FITČeské vysoké učení technické v PrazeBI-GRA, LS 2012/2013, Lekce 12https://edux.fit.cvut.cz/courses/BI-GRA Turingovy stroje
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)
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ý Turingovy stroje a b a a b # # # řídicí jednotka Konečná řídicí jednotka, V/V hlava a páska
DF:Turingův strojM = Q, A, , s, H Turingovy stroje • Q - konečná množina stavů • A - abecedaobsahuje# (prázdný symbol) a (symbol konce pásky), Aneobsahuje symboly ⇦a ⇨ • s - počáteční stav • H - množina koncových stavůHQ • : (Q-H) A Q (A {⇦, ⇨}) je přechodové zobrazení • pro všechna qQ-H platí: (q,) = (p, ⇨) • pro všechna qQ-H, aA platí: (q,a) = (p,b) b (tzn. symbol na levém konci se nikdy nepřepíše symbol se nezapíše nikam dovnitř pásky)
Interpretace přechodového zobrazení : je-li pro qQ-H, aA, (q,a) = (p,b) bA ... stroj přepíše symbol a na pásce symbolem b b{⇦,⇨} ... stroj posune hlavu vlevo/vpravo Turingovy stroje Př.:M1 = Q, A, 1, s, {h} M2 = Q, A, 2, s, {h} stav znak 1 stav znak 2 s a (r, #) s a (s,⇨) s # (h, #) s # (r,⇦) s (s,⇨) s (r,⇨) r a (s,a) r a (r,⇦) r # (s,⇨) r # (s,⇨) r (r,⇨) r (h,⇨) Jak funguje M1 / M2 ??
Formalizace činnosti T.S. konfiguracepoloha hlavyzkratka (q,a, baa) a b a a(q, abaa) (q, ###, #a) #### a ## (q, ####a) (q,#a##, ) # a ##(q, #a##) Konfigurace Turingova stroje M = Q, A, , s, H je prvek kartézského součinu Q A* (A*(A-{#}){}) stav páska zleva k hlavě páska vpravo
výchozí konfigurace (q, wau) přepis symbolu na pásce pro (q,a) = (p,b), bA (q, wau) ⊢M(p, wbu) posun vlevo pro (q,a) = (p,⇦), w = w’ x je-li a # nebo u (q, wau) = (q, w‘xau)⊢M(p, w‘xau) je-li a = # a současně u = (q, w#) = (q, w‘x#)⊢M(p, w‘x) posun vpravo pro (q,a) = (p,⇨), je-li u = x u', a'A (q, wau) = (q, wax'u') ⊢M(p, waxu') je-li u = (q,wa)⊢M (p, wa#) Přechod mezi konfiguracemi⊢M
Výpočet délky n : C0⊢M C1⊢M ... ⊢M Cn M = K, A, , s, H, H = {y,n}, w (A - {,#})* počáteční konfigurace T.S. M při vstupu w . . . (s, #w) přijímající / odmítající konfigurace(y,w') / (n,w') M přijímá / odmítá vstup w (A - {,#})*, pokud platí (s,#w) (y,w') (přijímá) (s,#w) (n,w'') (odmítá) Označme A0(A - {,#}) - vstupní abeceda M rozhoduje jazyk LA0* : pro každé wA0* platí je-li wL, pak M přijímá w je-li wL, pak M odmítá w Jazyk L je rekurzivní existuje T.S. M, který jej rozhoduje. * * M M Výpočet délky n
Zjednodušený popis Turingových strojů Základní stroje (předpokládáme pevnou abecedu A) stroj píšící jeden znak- označení Ma (zjednodušeně a) Ma = {s,h}, A, , s, {h}, a A - {#} (s,x) = (h,a) pro všechna x (s,) = (h,⇨) stroj provádějící krok vlevo/vpravoM⇦ = L, M⇨ = R L = {s,h}, A, , s, {h} R = {s,h}, A, , s, {h} (s,x) = (h,⇦) pro vš. x(s,x) = (h,⇨) pro vš. x (s,) = (h,⇨) (s,) = (h,⇨)
Pravidla kompozice ?Odpovídá kompozice definici Turingova stroje? M1 = K1, A, 1, s1, H1 M2 = K2, A, 2, s2, H2 Ki Kj = M3 = K3, A, 3, s3, H3 Výsledkem kompozice je T.S. M = K, A, , s, H určený takto: a M1 M2 • M1 pracuje do zastavení, pak • pro a začne M2 od s2 • pro b začne M3 od s3 b M : M3
K = K1 K2 K3 , s = s1, H = H2 H3 : pro x A, q K-H položíme (q,x) = 1(q,x) pro q K1-H1 (q,x) = 2(q,x) pro q K2-H2 (q,x) = 3(q,x) pro q K3-H3 pro q H1 (q,a) = (s2,a) (q,b) = (s3,b) (q,x) = (h,x), h H pro x a,b Kompozice je tedy korektní ! Pravidla kompozice
Využití kompozice a další zkratky a b # a,b, #, R R R R R R RR R2 # x# "postupuj vpravo až k mezeře" R# R R # # # # R L R L R# L# R# L# najde nejbližší mezeruvpravo od aktuelní pozice (mezeru vlevo, nemezeru vpravo, nemezeru vlevo)
Př.: kopírovací Turingův stroj, w (A - {#})* # w ## w # w # Příklad x # L# R # R#2xL#2x # #011##... L# #011## ... R ##11#0 ... ... #011#0# ... R #011#01# ... ... #011#01# ... R #011#011# ... ... #011#011# ... R #011#011# ... R# R#
Př.: Co dělá následující Turingův stroj ?? Příklad # w # ??? x # L #R#xL#x # R# Př.: Jak udělat Turingův stroj SL, který posune obsah pásky vlevo o jedno políčko ?? A co posun vpravo SR ? (w neobsahuje mezeru) # w #w ## w ###w #
Př.: Turingův stroj rozhodující jazyk {anbncn : n 0} Příklad d a,d b,d a b c R dR dR 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í)
Df.: Nechť M = K, A, , s, {h}, A0 A-{,#}, wA0* z je výstup M na vstupw (píšeme z =M(w)) M se zastaví pro vstup w a platí (s,#w) ⊢M(h,#z) M počítá zobrazení f : A0* A0* pro každé wA0* 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ř.: Počítající Turingův stroj 1 Turingův stroj, který počítá funkci succ(n) = n+1 R# L 0 # 0 1SR 1L#
Df.: Nechť M = K, A, , s, {h}, A0 A-{,#}, L A0* M polorozhoduje jazyk L pokud pro lib. wA0* platí wL 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 = A0* - 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ý Polorozhodující Turingův stroj
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?
U má 3 pásky U se zastaví na vstup "M" "w" právě když se M zastaví na vstup w a vrátí i stejný výsledek Problém zastavení Turingova stroje simuluje pásku stroje M zakódování struktury stroje M zakódování akt. stavu stroje M
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.
?? 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ý Problém zastavení Turingova stroje B A (y,a)=(z,⇨) (z,a)=(y,⇦) pro vš. aA A y n y n z