Máy Turing Turing Machine Nội dung: • Mô hình TM • TM nhận dạng ngôn ngữ • TM tính toán hàm số nguyên • Các kỹ thuật xây dựng TM Chương 7:... Kỹ thuật lưu trữ trong bộ điều khiển Ví dụ:
Trang 1Máy Turing (Turing Machine)
Nội dung:
• Mô hình TM
• TM nhận dạng ngôn ngữ
• TM tính toán hàm số nguyên
• Các kỹ thuật xây dựng TM
Chương 7:
Trang 2Mô hình TM
Định nghĩa: TM là một hệ thống gồm 7 thành phần
M (Q, Σ, Γ, δ, q0, B, F)
● Q : tập hữu hạn các trạng thái
● Σ : bộ ký hiệu nhập
● Γ : tập hữu hạn các ký hiệu được viết trên băng
● δ : hàm chuyển Q x Γ → Q x Γ x {L, R, Ø}
● q0 : trạng thái khởi đầu
● B : ký hiệu dùng để chỉ khoảng trống trên băng
● F Q : tập các trạng thái kết thúc
Hình thái: α1qα2 với q là trạng thái hiện hành của TM, α1α2 là nội dung của băng tính từ đầu băng cho đến ký hiệu khác Blank bên phải
nhất
2
Trang 3Phép chuyển
Định nghĩa: Đặt X1X2 Xi-1qXi Xn là một hình thái (ID)
Giả sử : δ(q, X i ) = (p, Y, L))
• Nếu i - 1 = n thì Xi là B
• Nếu i = 1 thì không có ID kế tiếp (đầu đọc không được phép vượt qua cận trái của băng
• Nếu i > 1 ta viết:
X1X2 Xi-1qXi Xn ⊢ X1X2 Xi-2pXi-1YXi+1 Xn
Tương tự : δ(q, X i ) = (p, Y, R))
X1X2 Xi-1qXi Xn ⊢ X1X2 Xi-2Xi-1YpXi+1 Xn
Và với : δ(q, X i ) = (p, Y, Ø))
X1X2 Xi-1qXi Xn ⊢ X1X2 Xi-2Xi-1pYXi+1 Xn
Trang 4TM nhận dạng ngôn ngữ
Định nghĩa: ngôn ngữ được chấp nhận bởi TM M là
L(M) = {w | w Γ* và q0w ⊢ α1pα2 với p F}
Xét chuỗi 0011 ta có: q 0 0011 ⊢ Xq 1 011 ⊢ X0q 1 11 ⊢ X q 2 0Y1 ⊢ q 2 X0Y1 ⊢
Ví dụ: thiết kế TM chấp nhận L = {0n1n | n > 0}
Đặt TM M(Q, Σ, Γ, δ, q0, B, F) với
Q = {q0, q1, q2, q3, q4}, Γ = {0, 1, X, Y, B}, F = {q4}
Trang 5TM nhận dạng ngôn ngữ
start
(0,X,R)
(Y,Y,R)
(0,0,R) (Y,Y,R)
(1,Y,L)
(X,X,R)
(0,0,L) (Y,Y,L)
(Y,Y,R)
q4
(B,B,Ø)
Trang 6TM như là máy tính hàm số nguyên
Ví dụ: thiết kế TM tính toán phép trừ riêng
• Nếu m < n thì m \ n = 0
• Ngược lại thì m \ n = m – n
• Input: 0 m10 nB Output: 0 m\nB Đặt TM M(Q, Σ, Γ, δ, q0, B, F) với
• Q = {q0, q1, q2, q3, q4, q5, q6}, Γ = {0, 1, B}, F = {q6}
Quy ước: một số nguyên trong TM được viết dưới dạng nhất phân
là một chuỗi số 0, cách nhau bởi 1 số 1
Trang 7TM như là máy tính hàm số nguyên
Xét chuỗi nhập 0100 (1-2) ta có: q 0 0100 ⊢ Bq 1 100 ⊢ B1q 2 00 ⊢ Bq 3 110
⊢ q 3 B110 ⊢ Bq 0 110 ⊢ BBq 5 10 ⊢ BBBq 5 0 ⊢ BBBBq 5 ⊢ BBBBq 6
Xét chuỗi nhập 0010 (2-1)ta có: q 0 0010 ⊢ B q 1 010 ⊢ B0q 1 10 ⊢ B01q 2 0
⊢ B0q 3 11 ⊢ Bq 3 011 ⊢ q 3 B011 ⊢ Bq 0 011 ⊢ BBq 1 11 ⊢ BB1q 2 1 ⊢ BB11q 2
⊢ BB1q 4 1 ⊢ BBq 4 1 ⊢ Bq 4 ⊢ Bq 6 0
q0
(0,B,R) (1,B,R)
(0,0,R)
(1,1,R)
(B,B,L) (B,B,R)
(1,B,L) (0,0,L)
(B,0,Ø)
(0,B,R) (1,B,R) (B,B,Ø)
Trang 8Kỹ thuật lưu trữ trong bộ điều khiển
Ví dụ: thiết kế TM kiểm tra ký tự đầu tiên của một chuỗi không xuất
hiện ở bất kỳ vị trí nào khác trong chuỗi
Xây dựng: TM M(Q, {0, 1}, {0, 1, B}, δ, [qq0, B], B, F)
trong đó các trạng thái thuộc Q là một cặp {q0, q1} x {0, 1, B}
F = {[qq1, B]}
Phép chuyển:
δ([qq0, B], 0) = ([qq1, 0], 0, R) δ([qq1, 0], 0) = ([qq1, 0], 0, R) δ([qq1, 0], B) = ([qq1, B], B, Ø) δ([qq0, B], 1) = ([qq1, 1], 1, R) δ([qq1, 1], 1) = ([qq1, 1], 1, R) δ([qq1, 1], B) = ([qq1, B], B, Ø)
Trang 9Kỹ thuật dịch qua (Shifting over)
Ví dụ: thiết kế máy Turing để dịch một chuỗi các ký hiệu khác B sang
phải 2 ô
Xây dựng: TM M(Q, Σ, Γ, δ, q0, B, F)
trong đó Q chứa các phần tử dạng [qq, A1, A2] với q = q1 hoặc q2; A1
và A2 thuộc Γ Trạng thái bắt đầu là [qq1, B, B]
Phép chuyển:
δ([qq1, B, B], A1) = ([qq1, B, A1], X, R) (X là ký hiệu đặc biệt nào đó)X là ký hiệu đặc biệt nào đó))
δ([qq1, B, A1], A2) = ([qq1, A1, A2], X, R) δ([qq1, A1, A2], A3) = ([qq1, A2, A3], A1, R)
δ([qq1, Ai-2, Ai-1], Ai) = ([qq1, Ai-1, Ai], Ai-2, R)
Trang 10Kỹ thuật chương trình con
Ví dụ: thiết kế TM thực hiện phép nhân 2 số nguyên dương m và n
• Input: 0 m10 nB
• Output: 0 m*nB
• Ý tưởng: đặt số 1 sau 0 m10 n (0 m10 n1), sau đó chép n số 0 sang phải m lần, mỗi lần xóa đi 1 số 0 bên trái của m
• Sau khi m đã được xóa, phép nhân đã được thực hiện xong, xóa tiếp 10 n1 Kếu quả còn lại sẽ là B0 m*nB
Phân tích:
• Xóa 1 số 0 bên trái của m, dịch đầu đọc sang số n để chuẩn bị cho việc copy n số 0: q00 m10 n1 ⊢ B0 m-11q10 n1
• Copy n số 0 sang phải: B0 m-11q10 n1 ⊢ B0 m-11q50 n10 n
• Quay lại trạng thái bắt đầu: B 0 m-11q50 n10 n ⊢ Bq00 m-110 n10 n
• Chuẩn bị cho việc copy kế tiếp:
B0 m-11q50 n10 n ⊢ B20 m-21q10 n10 n
• Copy n số 0 sang phải
Trang 11Kỹ thuật chương trình con
Thủ tục copy n số 0:
Biến đổi hình thái q00 m10 n1 ⊢ B0 m-11q10 n 1:
(qq 0 , 0) = (qq 6 , B, R)) (qq 6 , 0) = (qq 6 , 0, R)) (qq 6 , 1) = (qq 1 , 1, R))
Biến đổi hình thái Bi0 m-i1q50 n10 n*i ⊢ Bi+10 m-i-11q10 n10 n*i :
Trang 12Kỹ thuật chương trình con
q0
start
q6
q1
(1,1,R)
(0,2,R)
(0,0,R) (1,1,R)
(B,0,L)
(0,0,L) (1,1,L)
(2,2,R)
q4
q5
(1,1,L) (2,0,L)
(1,1,R)
(0,0,L)
q10
(B,B,R)
(B,B,R)
q11
(0,B,R)