Ch ng Máy Turing Máy Turing nh ngh a má máy Turing Ngôn ng th a nh n đ c và ngôn ng xác đ nh đ Các hà hàm tí tính đ c b i má máy Turing Các ngôn ng đ quy và li t kê đ quy Lu n đ TuringTuring-Church K thu t xây d ng má máy Turing M r ng cá má máy Turing Máy turing không đ n đ nh Máy Turing v n n ng Ôtômat n tí tính gi i n i V n ph m c m ng c nh Lý thuy t tí ính toá án ttính to toán (Theory (Theory of of Computation) Computation) PGS.TS Phan Huy Khá Khánh khanhph@vnn.vn Ch ng Máy Turing Máy c 2/58 2/ 58 M đ u Mô t máy Turing đ n đ nh Ôhh đ y xu ng không th đoán nh n NN anbncn dù có hai b nh l n tù tùy ý th a nh n anbncn, ph i tì tìm ki m l p ôtômat khác, đó má má y Turing S khác c n b n gi a má máy Turing ô đ y xu ng : Máy Turing ch có m t b nh l n tù tùy ý Máy Turing có có th đ c và ghi Cách s d ng b nh tu ý, không h n ch nguyên lý danh sá sách đ y xu ng (Stack hay LIFO) Máy Turing đ n đ nh (Deterministic Turing Machine) g m : Alan Turung (1912 (19121954) : nhà nhà Toá Toán h c ng i Anh, ng i đ u tiên nghiên c u lý thuy t ôtômat n m 1936 M t b ng vào/ra (IO Tape) : M t đ u đ c-ghi (Read/Write Head) di chuy n b ng M t t p h p h u h n cá tr ng thá thái đó có : M t tr ng thá thái đ u M t t p h p cá cá c tr ng thá thái th a nh n (cu i) M t hà hàm chuy n ti p Y X a b a b b # # qk 3/58 3/ 58 4/58 4/ 58 C u hì hình ban đ u c a má máy Turing Mô t chi ti t B ng vào/ra : Là m t b nh vô h n đ c chia thành nhi u ô M i ô có có th ch a m t ký t a đó (Tape (Tape Alphabet) B ng ch có c n trá trái, c n ph i quy C u hì hình ban đ u c a má máy Turing đ Tr ng thá thái hi n hà hành c a má máy Ký t đ c đ c v trí trí d i đ u đ c Tr ng thá thái ti p theo c a má máy Ký t s ghi lên b ng t i v trí trí ký t v a đ c đ Chi u di chuy n c a đ u đ c-ghi (qua trá trái, ph i hay đ ng yên) Câu vào w * n m M i ô l i c a b ng ch a m t ký hi u đ c bi t, g i là ký hi u tr ng (Blank (Blank Symbol) c có có th kéo dà dài vô h n Hàm chuy n ti p g m cá tham đ i : c mô t nh sau : mút trá trái nh t c a b ng u đ c-ghi n m Máy ô đ u tiên c a b ng (mú (mút trá trái nh t) tr ng thá thái đ u tiên, gi s q0 Máy s n sà sàng th c hi n b ng cá cách đ c ký hi u v trí trí đ u đ c c b a a b a b b # # q0 5/58 5/ 58 6/58 6/ 58 Ho t đ ng c a má máy Turing Ho t đ ng c a má máy Turing đ nh ngh a hì hình th c má máy Turing Máy Turing đ c mô t nh sau : đó : Ghi đè đè lên ký hi u v a đ c m t ký hi u khác Di chuy n đ u đ c-ghi sang ph i, ho c sang trá trá i m t ô Thay đ i tr ng thá thái X Y X X X # # q0 Q là tr ng thá thái đ u F Q là t p h p cá tr ng thá thái th a nh n # - ký t tr ng : hà hàm chuy n ti p Máy th a nh n câu đ t t i tr ng thá thái th a nh n, gi s qj F X Q là t p h u h n cá tr ng thá thái b ng ch ghi lên b ng b ng ch vào Y c mô t b i m t b b y : M = (Q, , , , q0, #, F) Máy đ c ký hi u n m d i đ u đ c Tu theo tr ng thá thái hi n hà hành, hàm chuy n ti p cho phé phép má máy th c hi n : qj 7/58 7/ 58 8/58 8/ 58 Mô t hàm chuy n ti p C u hì hình c a má máy Turing Hàm chuy n ti p : C u hì hình (hay c u hì hình) c a má máy Turing m t ph n t c a quan h : (q, 1, 2) Q** : Q Q QM M Trong đó : g m cá ph n t (q, a) = (q’ (q’, x, x, m), m), đó : q, q’ q’ Q ; a ; x; m M = { L, R } L ch đ nh d ch đ u đ c-ghi sang trá trái (Left) q Q : tr ng thá thái hi n hà hành c a má má y 1 : ph n câu b ng phí phía tr 2 : Ph n câu b ng t v trí trí đ u đ c-ghi đ n h t câu (ký t cu i cù khác ký t tr ng #) R ch đ nh d ch đ u đ c-ghi sang ph i (Right) Có th vi t g n m i ph n t c a: 1 c v trí trí đ u đ c-ghi 2 ho c (q, a, x, m, q’ q’) b ho c qa qamxq’ mxq’ a a b a b b # # q 9/58 9/ 58 Chuy n ti p m t b cC Chuy n ti p m t b C’ Cho c u hì hình C = (q, 1, 2 ) và C’ = (q’ (q’, ’1, ’2) tr Gi s 2 = b b’2 Chuy n ti p m t b Tr ng h p 2 = , l y b = # cC C’ đ c đ nh ngh a nh sau : ng h p : N u (q, b) = (q’ (q’, b’ b’, R), ta có có : (q, 1, b b’2) (q’ (q’, 1b’, ’2) b a b b a b b # Chuy n ti p m t b 1 b a b’ b a b b # v i ’2 = ab’ ab’3 ’2 3 q 11/58 11/ 58 c đ nh ngh a nh sau : ’1 q’ C’ đ (q’ (q’, ’1, ab’ ab’3) b b a b a b b # q cC 2 ’1 C’ ng h p : N u (q, b) = (q’ (q’, b’ b’, L), ta có có : (q, ’1a, 2 ) ’2 ’1 ’2 cC Cho c u hì hình C = (q, 1, 2 ) và C’ = (q’ (q’, ’1, ’2) Gi s 1 = ’1a 1 2 = b tr ng h p 2 = , l y b = # b3 Tr v i ’1 = 1b’ 2 1 10/58 10/ 58 b b 3 a b’ a b b # q’ 12/58 12/ 58 Chuy n ti p nhi u b Máy Turing đoán nh n câu c a ngôn ng c Cho c u hì hình C = (q, 1, 2 ) và C’ = (q’ (q’, ’1, ’2) T ng t ôhh, ta nói chuy n ti p nhi u b Máy Turing đoán nh n câu c a m t ngôn ng nh là ôtômat h u h n xé xét c Cho w : C * C’ n u: k và c u hì hình trung gian C0, C1, , Ck cho : C C0 Câu w đ c m t má máy Turing M đoán nh n n u : (q0, , w) * (qj, , , 2) v i , , 2 * C’ Ck Ci Ci+1 v i i k Câu w đ c m t má máy Turing th a nh n n u : (q0, , w) * (qj, , , 2) v i , , 2 * và qj F M t ngôn ng L đ L = L(M), n u : c th a nh n b i m t má máy Turing M, L(M) = { w (q (q0, , w) * (qj, , , 2) v i qj F } 13/58 13/ 58 14/58 14/ 58 Bi u di n đ th Ví d Cho má máy Turing M (Q, , , , q0, B, F) v i : Q q0, q1, q2, q3, q4 { a, b, X, Y, # }, { a, b } F { q4} đ c cho b i b ng d i (d u " "" ch r ng hà hàm chuy n ti p không đ q0 q1 q2 q3 q4 b X Y # q0 (q1, X, R) (q3, Y, R) q1 (q1, a, R) (q2, Y, L) (q1, Y, R) q2 (q1, a, L) (q0, X, R) (q2, Y, L) # R) R) L) R) (q4, #, R) VV tt qua qua ph ph ii áánh nh dd uu con aa trá nh tr trái nh tt c đ nh ngh a) a a b X Y (q1, X, R) (q3, Y, (q1, a, R) (q2, Y, L) (q1, Y, (q1, a, L) (q0, X, R) (q2, Y, (q3, Y, X/X, R q0 q0 Y/Y, R a/X, R q1 q1 (q3, Y, R) (q4, #, R) q4 Y/Y, R q3 q3 Y/Y, R q2 q2 a/a, L a/a, R Y/Y, R q3 b/Y, L #/#, R q4 q4 15/58 15/ 58 16/58 16/ 58 Máy Turing đoán nh n câu a2b2 Các chuy n ti p đoán nh n câu aabb l n l Máy Turing đoán nh n câu a3b3 t nh sau : dãy cá chuy n ti p t câu và o aaabbb đ c cho nh sau : q0aabb# q0XaYb# q0XXYY# q0aaabbb# q2XaaYbb# q2XXXYYY# q1Xabb# q1Xabb# q1XXYb# q1XXYb# q3XXYY# q3XXYY## q1Xaabbb# q1Xaabbb# q0XaaYbb# q0XXXYYY# q3XXXYYY# q2XaYb# q2XaYb# q2XXYY# q2XXYY# q4XXYY## th a nh n q1Xaabbb# q1XXXYYb# q3XXXYYY# q2XaaYbb# q2XaaYbb# q2XXXYYY# q2XXXYYY# q3XXXYYY# q4XXXYYY## th a nh n ! 17/58 17/ 58 18/58 18/ 58 Ví d nh ngh a Máy Turing th a nh n ngôn ng chí quy aa* + b(a+b)* Máy Turing đoán nh n m t câu w th c hi n (x lý) m t dãy c c đ i cá c u hì hình : (q0, , w) = C0 a|a, R q0 y y, R q3 q4 , L y y, R q0 q1 y y, R a a, R a x, R Ck = (qk, k, k) C1 ngh a là cho : #|#, L q1 Dãy t k t thú thúc t i m t c u hì hình có có ch a tr ng thá thái k t thú thúc th a nh n câu w ho c y y, L a a, L b y, L Dãy t k t thú thúc t i m t c u hì hình không ch a tr ng thá thái k t thú thúc mà mà t đó, không c u hì hình nà có có th chuy n đ n : máy b hóc ho c q2 x x, R Dãy c u hình là vô h n, má máy không bao gi d ng 19/58 19/ 58 Tính xá xác đ nh đ M t ngôn ng L đ 20/58 20/ 58 Hình th c hó hóa tí tính xá xác đ nh đ c (Deterministic) c xá xác đ nh b i m t má máy Turing M n u : M th a nh n L M có x lý vô h n Nh n xé xét : T n t i thu t toá toán cho phé phép má máy Turing đoán nh n m t ngôn ng , hay ki m tra tí tính xá xác đ nh đ c i v i cá ôtômá ôtômát h u h n đ n đ nh, u đó hi n nhiên i v i m t ôtômá ôtômát h u h n không đ n đ nh, không ph i luôn t n t i thu t toá toán, : T i m i giai đo n đoán nh n, không th ch chuy n ti p ti p theo s đ c ch n m t cá cách t ng minh Tính xá xác đ nh đ c c a má máy Turing có có th hi u nh sau : V i m i ph n t (q, a) QG, t n t i nhi u nh t m t quy t c (q, a) (q’ (q’, a’ a’, m), vi t g n qama’ qama’q’, v i m M={L, R} Hàm b ph n Q QG QGM có có th tách thành ba hà hàm : nc : QG G Hàm “ký t m i” Hàm “di chuy n đ u đ c” mh : QG M Hàm “tr ng thá thái m i” hay nc(q, a) = a’ a’ hay mh(q, a) =m ns : QG Q hay ns(q, a) = q’ q’ 21/58 21/ 58 22/58 22/ 58 Máy Turing tí tính hà hàm Notation of Function Máy Turing có có th tính hà hàm theo cá cách hi u nh sau : Tham đ i c a hà hàm là câu vào w n m b ng Giá Giá tr tr v c a hà hàm là câu đ c ghi b ng sau má máy Turing k t thú thúc vi c x lý (đ c h t w) A function f(w) has: w Result Region: S Domain: D wD Máy Turing tí tính m t hà hàm f : n u : c f (w ) f (w) S V i m t câu vào w w b t k , má máy luôn d ng m t c u hì hình mà mà f(w) có có m t b ng Hàm f đgl tí tính đ c b i m t má máy Turing n u t n t i m t máy Turing tí tính đ c nó A function may have many parameters: Example: Addition function f(x, y) = x + y 23/58 23/ 58 24/58 24/ 58 Definition: Data representation f A function is computable if there is a Turing Machine M such that: Integer Domain Decimal: Binary: 101 Unary: 11111 Initial configuration Final configuration w q f final state q0 initial state We prefer unary representation: easier to manipulate with TMs For all f (w) w D Domain 25/58 25/ 58 26/58 26/ 58 In other words: Example f A function is computable if there is a Turing Machine M such that: q0 w q f f ( w) Initial Configuration The function x, y w D are integers Turing Machine: Final Configuration For all f ( x, y ) x y is computable Domain Input string: x0 y unary Output string: xy unary 27/58 27/ 58 28/58 28/ 58 Computing Function y x Input representation x Start 1 y 1 Start 1 1 q0 initial state initial state q0 x y The is the delimiter that separates the two numbers 29/58 29/ 58 Finish 1 q f final state 1 30/58 30/ 58 Computing Function Turing machine for function f ( x, y ) x y The helps when we use the result for other operations x y 1 Finish 1 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q f final state q4 31/58 31/ 58 Execution Example (1) Execution Example (2) x 11 (2) y 11 (2) Time Time 1, R Final Result x y 1 1 1 1 q0 1 1 q0 y x 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 q4 33/58 33/ 58 Execution Example (3) Time 34/58 34/ 58 Execution Example (4) 1 1 Time 1 1 q0 1, R 32/58 32/ 58 q0 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 35/58 35/ 58 , R q4 36/58 36/ 58 Execution Example (5) Time Execution Example (6) 1 1 1 1 Time q1 1, R q1 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 , R q4 37/58 37/ 58 Execution Example (7) Time Execution Example (8) 1 1 1 1 Time q1 1, R 1, R q2 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 , R q4 39/58 39/ 58 Execution Example (9) Time 40/58 40/ 58 Execution Example (10) 1 1 Time 1 1 q3 q3 1, R 38/58 38/ 58 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 41/58 41/ 58 , R q4 42/58 42/ 58 Execution Example (11) Execution Example (12) 1 1 Time 1 1 Time 10 q3 1, R q3 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 , R q4 43/58 43/ 58 Execution Example (13) Time 11 Execution Example (14) 1 1 Time 12 1 1 q4 q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 1, R 1, R 1, L q0 1, R q1 , L q2 1 0, L q3 , R q4 Another Example: f(x) = 2x The function f ( x) x x , R HALT & accept 45/58 45/ 58 (1) Another Example: f(x) = 2x Start is integer Output string: q4 46/58 46/ 58 (2) x is computable 1 q0 initial state Turing Machine: Input string: 44/58 44/ 58 x unary xx unary 2x Finish 1 1 q f final state 47/58 47/ 58 48/58 48/ 58 TM Pseudocode for f(x) = 2x Example TM for f(x) = 2x Start • Replace every with $ Finish q0 • Repeat: 1, L 1, R q0 , L q1 $ 1, R • Go to right end, insert , R q3 Until no more $ remain q3 $, R • Find rightmost $, replace it with 1 1 q2 1, L 49/58 49/ 58 50/58 50/ 58 Another Example TM compute succ(n) T = ; S = { 0, 1, # } ; Q = {q1, q2, q3} P = { q1, 1, R, q1, q2, 1, L, q3, q1, 0, R, q1, q2, L, q2, q1, # #, L, q2, q2, # 1, L, q3 } 1|0, L 1|1, R 0|1, L #|#, R q1 q2 The function is computable f ( x, y ) if xy if x y Turing Machine for x0 y Input: q3 Output: or #|1, L 0|0, R 51/58 51/ 58 Các ngôn ng đ quy và li t kê đ quy Turing Machine Pseudocode: Các ngôn ng xác đ nh đ đ quy (Recusive) • Repeat Match a from Until all of x or x with a from y y 52/58 52/ 58 cg i Các ngôn ng đ c th a nh n b i m t má máy Turing g i là li t kê đ quy (Recursively Enumerable) is matched T đó ta có có đ nh ngh a sau : • If a from x is not matched erase tape, write else erase tape, write c b i m t má máy Turing đ ( x y) M b M b t ngôn ng đ quy n u nó đ c xá xác đ nh i m t má máy Turing t ngôn ng li t kê đ quy n u nó đ c th a nh n i m t má máy Turing ( x y) 53/58 53/ 58 54/58 54/ 58 Lu n đ TuringTuring-Church Nh n xé xét lu n đ TuringTuring-Church Lu n đ TuringTuring-Church đóng vai trò quan tr ng lý thuy t tí tính toá toán (Computability) Lu n đ TuringTuring-Church phá phát bi u nh sau : Các ngôn ng đ c nh n bi t b i m t thu t toá toán là ngôn ng xác đ nh đ c b i m t máy Turing Ng i ta có có th phá phát bi u lu n đ Turing Church theo ngh a c a phé phép tí tính hà hàm : Alonzo Church Các hà hàm tí tính đ c b i m t thu t toá toán là (1903(1903-1995) : nhà nhà Toá Toán h c ng i M hàm tí tính đ c b i m t má máy Turing nghiên c u phé phép tính hà hàm (Functional Calculus) và tính tính đ c (Computability) Lu n đ đ a l p lu n r ng m t s ngôn ng không th đ c đoán nh n b i m t thu t toá toán : th c ch t là hình th c hóa khái ni m tí tính toá toán Lu n đ TuringTuring-Church không ph i là m t đ nh lý, nên không th ch ng minh đ c Lu n đ TuringTuring-Church áp d ng mô hì hình lý thuy t là máy Turing đ c đ nh ngh a ch t ch đ mô hì hình hoá hoá quan ni m v thu t toá toán là khái ni m không đ c xá xác đ nh rõ rà ràng D dàng mô ph ng s ho t đ ng c a m t má máy Turing nh : M t bú bút chì chì t gi y M t ch ng trì trình ch y m t má máy tí tính c th 55/58 55/ 58 Các má máy Turing v n n ng Xây d ng má máy Turing M t v n đ thú thú v li u có có th có m t má máy Turing mô ph ng đ c b t k máy Turing nà ? M t s k thu t xây d ng má máy Turing Ghi nh b u n h u h n M r ng b ng vào vô h n v c hai phí phía Máy Turing có có nhi u b ng Máy Turing có có b nh truy c p tr c ti p 56/58 56/ 58 M t cá cách t ng minh, ta mu n cung c p cho m t má máy Turing M s mô t c a m t má má y Turing M’ M’ b t k đó cho v i m t câu và o w nà o đó, má máy Turing M’ M’ có th mô ph ng s đoán nh n c a M w M t má máy Turing nh v y s m t s nh i l i cá má máy Turing khác, và đ c g i là máy Turing v n n ng (Universal Turing Machine) 57/58 57/ 58 58/58 58/ 58 10