Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
224 KB
Nội dung
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: 1 Mô hình TM Định nghĩa: TM là một hệ thống gồm 7 thành phần M (Q, Σ, Γ, δ, q 0 , 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, Ø} ● q 0 : 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: α 1 qα 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 3 Phép chuyển Định nghĩa: Đặt X 1 X 2 X i-1 qX i X n là một hình thái (ID) Giả sử : δ(q, X i ) = (p, Y, L) • Nếu i - 1 = n thì X i 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: X 1 X 2 X i-1 qX i X n ⊢ X 1 X 2 X i-2 pX i-1 YX i+1 X n Tương tự : δ(q, X i ) = (p, Y, R) X 1 X 2 X i-1 qX i X n ⊢ X 1 X 2 X i-2 X i-1 YpX i+1 X n Và với : δ(q, X i ) = (p, Y, Ø) X 1 X 2 X i-1 qX i X n ⊢ X 1 X 2 X i-2 X i-1 pYX i+1 X n 4 TM 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à q 0 w ⊢ α 1 pα 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 ⊢ X q 0 0Y1 ⊢ XXq 1 Y1 ⊢ XXY q 1 1 ⊢ XX q 2 YY ⊢ X q 2 XYY ⊢ XX q 0 YY ⊢ XXYq 3 Y ⊢ XXYYq 3 ⊢ XXYYq 4 Ví dụ: thiết kế TM chấp nhận L = {0 n 1 n | n > 0} Đặt TM M(Q, Σ, Γ, δ, q 0 , B, F) với Q = {q 0 , q 1 , q 2 , q 3 , q 4 }, Γ = {0, 1, X, Y, B}, F = {q 4 } 5 TM nhận dạng ngôn ngữ q 0 q 3 q 1 q 2 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) q 4 (B,B,Ø) 6 TM 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 m 10 n B Output: 0 m\n B Đặt TM M(Q, Σ, Γ, δ, q 0 , B, F) với • Q = {q 0 , q 1 , q 2 , q 3 , q 4 , q 5 , q 6 }, Γ = {0, 1, B}, F = {q 6 } 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. 000001001000B = 5, 2, 3 7 TM 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 q 0 start q 1 q 2 q 4 q 3 q 5 q 6 (0,B,R) (1,B,R) (0,0,R) (1,1,R) (1,1,R) (0,1,L) (0,0,L) (1,1,L) (B,B,L) (B,B,R) (1,B,L) (0,0,L) (B,0,Ø) (0,B,R) (1,B,R) (B,B,Ø) 8 Kỹ 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}, δ, [q 0 , B], B, F) trong đó các trạng thái thuộc Q là một cặp {q 0 , q 1 } x {0, 1, B} F = {[q 1 , B]} Phép chuyển: δ([q 0 , B], 0) = ([q 1 , 0], 0, R) δ([q 1 , 0], 0) = ([q 1 , 0], 0, R) δ([q 1 , 0], B) = ([q 1 , B], B, Ø) δ([q 0 , B], 1) = ([q 1 , 1], 1, R) δ([q 1 , 1], 1) = ([q 1 , 1], 1, R) δ([q 1 , 1], B) = ([q 1 , B], B, Ø) 9 Kỹ 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, Σ, Γ, δ, q 0 , B, F) trong đó Q chứa các phần tử dạng [q, A 1 , A 2 ] với q = q 1 hoặc q 2 ; A 1 và A 2 thuộc Γ. Trạng thái bắt đầu là [q 1 , B, B] Phép chuyển: δ([q 1 , B, B], A 1 ) = ([q 1 , B, A 1 ], X, R) (X là ký hiệu đặc biệt nào đó) δ([q 1 , B, A 1 ], A 2 ) = ([q 1 , A 1 , A 2 ], X, R) δ([q 1 , A 1 , A 2 ], A 3 ) = ([q 1 , A 2 , A 3 ], A 1 , R) δ([q 1 , A i-2 , A i-1 ], A i ) = ([q 1 , A i-1 , A i ], A i-2 , R) δ([q 1 , A n-1 , A n ], B) = ([q 2 , A n , B], A n-1 , R) δ([q 2 , A n , B], B) = ([q 2 , B, B], A n , L) 10 Kỹ 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 m 10 n B • Output: 0 m*n B • Ý tưởng: đặt số 1 sau 0 m 10 n (0 m 10 n 1), 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 n 1. Kếu quả còn lại sẽ là B0 m*n B 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: q 0 0 m 10 n 1 ⊢ B0 m-1 1q 1 0 n 1 • Copy n số 0 sang phải: B0 m-1 1q 1 0 n 1 ⊢ B0 m-1 1q 5 0 n 10 n • Quay lại trạng thái bắt đầu: B0 m-1 1q 5 0 n 10 n ⊢ Bq 0 0 m-1 10 n 10 n • Chuẩn bị cho việc copy kế tiếp: B0 m-1 1q 5 0 n 10 n ⊢ B 2 0 m-2 1q 1 0 n 10 n • Copy n số 0 sang phải . 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. R) δ([q 1 , 1], B) = ([q 1 , B], B, Ø) 9 Kỹ 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, Σ, Γ, δ, q 0 , B,. dạng nhất phân là một chuỗi số 0, cách nhau bởi 1 số 1. 000001001000B = 5, 2, 3 7 TM 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