Thiết kế máy Turing thừa nhận các xâu nhị phân W có số lượng kí tự 0 bằng số lượng kí tự 1.Giải Máy Turing M thừa nhận xâu nhị phân w sẽ hoạt động như sau : q0 là trạng thái ban đầu, đầ
Trang 11 Cho máy Turing M = (, Q, , , q0, B, F), trong đó = {0, 1}, Q = {q0, q1, q2, q3, q4},
= { 0, 1, B}, F = {q4} và được cho bởi bảng sau
a) Giải thích hoạt động của M
b) Mô tả quá trình thực hiện của M trên các xâu (i) 00; (ii) 01; (iii) 10; (iv) 11 Xét xem các xâunào được M thừa nhận?
c) Xác định độ phức tạp tính toán của M?
Trang 2a) Máy Turing M sẽ hoạt động như sau:
(q0, 0) = (q0, 0, R): Gặp 0, thay 0 bởi 0, chuyển q0 và dịch phải
(q0, 1) : Dừng và không thừa nhận
(q0, B) = (q1, 1, L): Gặp B, thay B bởi 1, chuyển q8 và dịch trái
(q1, 0) = (q1, 0, L): Gặp 0, thay 0 bởi 0, chuyển q1 và dịch trái
(q1, 1) = (q1, 1, L): Gặp 1, thay 1 bởi 1, chuyển q1 và dịch trái
(q1, B) = (q2, B, R): Gặp B, thay B bởi B, chuyển q2 và dịch phải
(q2, 0) = (q3, B, R): Gặp 0, thay 0 bởi B, chuyển q3 và dịch phải
(q2, 1) = (q4, B, R): Gặp 1, thay 1 bởi B, chuyển q4 và dịch phải
(q2, B) : Dừng và không thừa nhận
(q3, 0) = (q3, 0, R): Gặp 0, thay 0 bởi 0, chuyển q3 và dịch phải
(q3, 1) = (q3, 1, R): Gặp 1, thay 1 bởi 1, chuyển q3 và dịch phải
(q3, B) = (q3, 1, R): Gặp B, thay B bởi 0, chuyển q4 và dịch phải
(q4, 0) : Dừng và thừa nhận
(q4, 1) : Dừng và thừa nhận
(q4, B) = (q1, 0, L): Gặp B, thay B bởi 0, chuyển q1 và dịch trái
Trang 3b) Mô tả quá trình thực hiện của M trên các xâu
(i) 00: q000 0q00 00q0B 0q101 q1001 q1B001 Bq2001 BBq301 BB0q31B BB01q3B BB010q4B BB01q100 BB0q1100 BBq10100 Bq1B0100 BBq20100
BBBq3100 BBB1q300 BBB10q30 BBB100q3B BBB1000q4B BBB100q100 BBB10q1000 BBB1q10000 BBBq110000 BBq1B10000 BBBBq210000 BBBBBq40000: Dừng và thừa nhận
(ii) 01: q001 0q01: Dừng và không thừa nhận
(iii) 10: q010: dừng và không thừa nhận
(iv) 11: q011: Dừng và không thừa nhận
c) Xác định độ phức tạp tính toán của M:
Ký hiệu n là độ dài xâu input w
Nếu w chứa ký tự 1 thì T(n) n và L(n) = n
Nếu w chỉ chứa ký tự 0 thì T(n) = O(n2) và L(n) = O(n2)
Kết luận: T(n) = O(n2) và L(n) = O(n2)
Trang 42 Cho máy Turing M = (, Q, , , q0, B, F), trong đó = {x, y, z}, Q = {q}, Q = {q0, q1, q2}, = {x, y,z}, Q = {q, B}, F = {q2} và được cho bởi bảng sau
q0 (q0, x, R) (q0, y, R) (q1, x, R) (q0, B, R)q1 (q0, x, R) (q0, y, L) (q2, z}, Q = {q, R)
*q2a) Giải thích hoạt động của M
b) Mô tả quá trình thực hiện của M trên các xâu
Trang 53 Cho máy Turing M = (, Q, , , q0, B, F), trong đó = {1, 2, 3}, Q = {q0, q1, q2, q3, q4, q5,q6}, = {1, 2, 3, B}, F = {q6} và được cho bởi bảng sau
a) Giải thích hoạt động của M
b) Mô tả quá trình thực hiện của M trên các xâu (i) 123; (ii) 112 Xét xem các xâu nào được Mthừa nhận?
c) Đánh giá độ phức tạp tính toán của M
Trang 64 Cho máy Turing ngẫu nhiên RM chỉ có 1 băng input và băng ngẫu nhiên Mỗi ký hiệu trênbăng có dạng (XY), trong đó X là ký hiệu trên băng input, Y là ký hiệu trên băng ngẫu nhiên.Mỗi hướng di chuyển có dạng (DE), trong đó D là hướng di chuyển của đầu đọc-ghi trên bănginput, E là hướng di chuyển của đầu đọc-ghi trên băng ngẫu nhiên Biết rằng, đầu đọc-ghi có thể
di chuyển sang phải (R), sang trái (L) hoặc đứng yên (S) Bảng hàm chuyển :
Như vậy, RM có trạng thái đầu q0, trạng thái thừa nhận q4
a) Giải thích hoạt động của M
b) Mô tả quá trình thực hiện của M trên các xâu:
(i) Xâu trên băng input w = 11111, xâu trên băng ngẫu nhiên rw = 00101
(ii) Xâu trên băng input w = 11001, xâu trên băng ngẫu nhiên rw = 10101
c) Tính xác suất để RM thừa nhận các xâu:
Trang 7(i) w = 1111111; (ii) w = 1001100
Giải
a) Máy Turing ngẫu nhiên RM sẽ hoạt động như sau:
(q0, 00) = (q1, 00, R,S): Gặp 00, thay 00 bởi 00, chuyển q1 và dịch phải trên băng Input vàđứng yên trên băng ngẫu nhiên
(q0, 01) = (q3, 01, S, R): Gặp 01, thay 01 bởi 01, chuyển q3 và đứng yên băng Input và dịchphải trên băng ngẫu nhiên
(q0, 10) = (q2, 10, R,S): Gặp 10, thay 10 bởi 10, chuyển q2 và dịch phải trên băng Input vàđứng yên trên băng ngẫu nhiên
(q0, 11) = (q3, 11, S, R): Gặp 11, thay 11 bởi 11, chuyển q3 và đứng yên băng Input và dịchphải trên băng ngẫu nhiên
(q1, 00) = (q1, 00, R, S): Gặp 00, thay 00 bởi 00, chuyển q1 và dịch phải trên băng Input vàđứng yên trên băng ngẫu nhiên
(q1, B0) = (q4, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q4 và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
(q2, 10) = (q2, 10, R, S): Gặp 10, thay 10 bởi 10, chuyển q1 và dịch phải trên băng Input vàđứng yên trên băng ngẫu nhiên
(q2, B0) = (q4, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q4 và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
(q3, 00) = (q1, 00, R, R): Gặp 00, thay 00 bởi 00, chuyển q1 và dịch phải trên băng Input và
Trang 8dịch phải trên băng ngẫu nhiên
(q3, 11) = (q3, 11, R, R): Gặp 11, thay 11 bởi 11, chuyển q3 và dịch phải trên băng Input vàdịch phải trên băng ngẫu nhiên
(q3, B0) = (q4, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q4 và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
(q3, B1) = (q4, B1, S, S): Gặp B1, thay B1 bởi B1, chuyển q4 và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
Trang 9(ii) Xét w = 11001 và rw = 10101: q011001|q010101 q311001|1q30101 1q21001|1q20101 11q2001|1q20101: Dừng và RM không thừa nhận w.
c) Xác suất để w được thừa nhận bởi RM :
(i) w = 1111111 thì tổng xác suất thừa nhận w là
7
2 2
1 2
1
= 2-1 + 2-(7+1) = 129256 (ii) w = 1001100 có tổng xác suất thừa nhận w bằng 2-(7+1) = 2561
Trang 105 Thiết kế máy Turing thừa nhận ngôn ngữ {0n1n0nn 0}.
Giải
Máy Turing M thừa nhận xâu w = 0n1n0n, n 1, sẽ hoạt động như sau :
q0 là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input
Bước 1: Nếu gặp 0, thay thế 0 bởi B và dịch phải, chuyển bước 2; Nếu gặp 1 thì dừng và không
thừa nhận w; Nếu gặp B thì dừng và thừa nhận w; Nếu gặp x thì giữ nguyên và dịch phải
Bước 2: Nếu gặp 0 thì thay 0 bởi 0, dịch phải; Nếu gặp 1 thì thay thế 1 bởi x, dịch phải và
chuyển bước 3; Nếu gặp B thì dừng và không thừa nhận w; Nếu gặp x thì giữ nguyên và dịchphải
Bước 3: Nếu gặp 0 hoăc 1 thì giữ nguyên 0 hoặc 1 và dịch phải; Nếu gặp B thì giữ nguyên, dịch
trái và chuyển bước 4
Bước 4: Nếu gặp 0 thì thay 0 bởi B, dịch trái và chuyển bước 5; Nếu gặp 1, x, B thì dừng và
không thừa nhận w
Bước 5: Nếu gặp B thì giữ nguyên, dịch phải và chuyển bước 1
Bảng hàm chuyển như sau:
Trang 11 máy Turing M = (, Q, , , q0, B, F), trong đó = {0, 1}, Q = {q0, q1, q2, q3, q4, q5}, = {0,
1, B, x}, F = {q5} và được cho bởi bảng trên
Trang 126 Thiết kế máy Turing thừa nhận các xâu nhị phân W có số lượng kí tự 0 bằng số lượng kí tự 1.
Giải
Máy Turing M thừa nhận xâu nhị phân w sẽ hoạt động như sau :
q0 là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input
Bước 1: Nếu gặp 0 thì thay thế 0 bởi B, dịch phải và chuyển bước 2; Nếu gặp 1 thì thay thế 1 bởi
B, dịch phải và chuyển bước 3; Nếu gặp B thì thay thế B bởi B, dừng và thừa nhận w; nếu gặp xthì giữ nguyên và dịch phải;
Bước 2: Nếu gặp 0 hoặc x thì giữ nguyên và dịch phải; Nếu gặp 1 thì thay thế 1 bởi x, dịch trái
và chuyển bước 4; Nếu gặp B thì dừng và không thừa nhận;
Bước 3: Nếu gặp 1 hoặc x thì giữ nguyên và dịch phải; Nếu gặp 0 thì thay thế 0 bởi x, dịch trái
và chuyển bước 4; Nếu gặp B thì dừng và không thừa nhận;
Bước 4: Nếu gặp 0, 1, x thì giữ nguyên và dịch trái; Nếu gặp B thì giữ nguyên, dịch phải và
chuyển bước 1;
Trang 147 Thiết kế máy Turing kiểm tra một xâu x với các kí tự thuộc tập hợp {a, b, c} có phải là xâu đốixứng hay không? Nếu x đối xứng thì giá trị trên băng là 1, ngược lại, giá trị trên băng là 0.
Giải
Máy Turing M kiểm tra tính đối xứng của xâu x sẽ hoạt động như sau :
q0 là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input
Bước 1 : Thay thế kí tự đầu tiên của x là B, dịch phải Nếu kí tự đầu tiên là 0 thì chuyển bước 2 ;
Nếu kí tự đầu tiên là 1 thì chuyển bước 3; ngược lại chuyển bước 4
Bước 2 : Tìm ký tự cuối cùng của x Nếu không tìm được thì thay thế B bởi 1, dịch trái và dừng.
Nếu tìm được và = 0 thì chuyển bước 5 ; 0 thì chuyển bước 6
Bước 3 : Tìm ký tự cuối cùng của x Nếu không tìm được thì thay thế B bởi 1, dịch trái và dừng
Nếu tìm được và = 1 thì chuyển bước 5; 1 thì chuyển bước 6
Bước 4: Tìm ký tự cuối cùng của x Nếu không tìm được thì thay thế B bởi 1, dịch trái và dừng
Nếu tìm được và = 2 thì chuyển bước 5; 1 thì chuyển bước 6
Bước 5: Tìm ký tự đầu tiên của x Nếu tìm được thì chuyển bước 1 Nếu không tìm được thì
thay thế B bởi 1, dịch trái và dừng
Bước 6: Thay thế kí tự vừa tìm bởi 0, dịch trái và chuyển bước 7 ;
Bước 7: Thay thế các kí tự của x bởi B và dịch trái; Nếu gặp B thì dừng.
Bảng hàm chuyển:
Trang 150 1 2 B
q0 (q1, B, R) (q2, B, R) (q3, B, R) (q9, 1, R)q1 (q1, 0, R) (q1, 1, R) (q1, 2, R) (q4, B, L)q2 (q2, 0, R) (q2, 1, R) (q2, 2, R) (q5, B, L)q3 (q3, 0, R) (q3, 1, R) (q3, 2, R) (q6, B, L)q4 (q7, B, L) (q8, 0, L) (q8, 0, L) (q9, 1, R)q5 (q8, 0, L) (q7, B, L) (q8, 0, L) (q9, 1, R)q6 (q8, 0, L) (q8, 0, L) (q7, B, L) (q9, 1, R)q7 (q7, 0, L) (q7, 1, L) (q7, 2, L) (q0, B, R)q8 (q8, B, L) (q8, B, L) (q8, B, L) (q9, B, R)
*q9
M = (, Q, , , q1, B, F), trong đó = {0, 1, 2}, Q = {q0, q1, q2, q3, q4, q5, q6, q7, q8, q9}, ={0, 1, 2, B}, F = {q9} và được cho bởi bảng trên
Trang 168 Thiết kế máy Turing kiểm tra một xâu nhị phân x khác rỗng có chứa một số chẵn kí tự 1 haykhông? Nếu x chứa một số chẵn kí tự 1 thì giá trị trên băng là 1, ngược lại, giá trị trên băng là 0.
Giải
a) Máy Turing M kiểm tra xâu nhị phân x sẽ hoạt động như sau:
q0 là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input
Bước 1: Nếu gặp 0 thì thay thế 0 bởi B, dịch phải; Nếu gặp 1 thì thay 1 bởi B và chuyển bước 2.
Nếu gặp B thì thay thế B bởi 1 và chuyển bước 3
Bước 2: Nếu gặp 0 thì thay thế 0 bởi B, dịch phải; Nếu gặp 1 thì thay 1 bởi B và chuyển bước 1.
Nếu gặp B thì thay thế B bởi 0 và chuyển bước 3
Bước 3 Dừng và kết quả là giá trị còn lại trên băng.
Bảng hàm chuyển :
Trạng thái
Ký hiệu băng của input
q0 (q0, B, R) (q1, B, R) (q2, 1, L)q1 (q1, B, R) (q0, B, R) (q2, 0, L)
*q2Như vậy, xây dựng được máy Turing M = (, Q, , , q0, B, F), trong đó = {0, 1}, Q ={q0, q1, q2}, = {0, 1, B}, F = {q2} và được cho bởi bảng trên
Trang 179 a) Thiết kế máy Turing M tính hàm cộng trên tập các số tự nhiên > 0 như sau:
f(x) = f(a1, a2) = a1 + a2 , trong đó input x = 1a1x11a2x2By, còn output là giá trị của f(x) = 1a1a2 yB
Máy Turing M thực hiện hàm cộng sẽ hoạt động như sau :
Bước 1: Số 1 bên trái nhất sẽ được thay thế bởi B và dịch phải.
Bước 2: Tìm x2 thay thế x2 bởi 1, dịch phải gặp B thay thế B bởi x2, dịch phải gặp y thay thế ybởi B, dịch phải găp B thay thế B bởi y dịch trái và chuyển sang bước 3
Bước 3: Tìm 1 bên trái nhất trước x1 Nếu tìm được chuyển bước 1 Nếu không tìm được thìchuyển bước 4
Bước 4: Thay thế x1 bởi B; thay thế x2 bởi y, thay thế y bởi B và dừng.
Trang 18Bảng hàm chuyển:
q0 (q1, B, R) (q3, B, R)q1 (q1, 1, R) (q1, x1, R) (q1, 1, R) (q1, x2, R) (q2, y, L)
Trang 1910 Thiết kế máy Turing tính hàm trừ trên tập các số tự nhiên > 0 như sau: TRU(x) = TRU(m, n)
= m – n nếu m > n và TRU(m, n) = 0 nếu m n Trong đó: Input : x = 1mx11nx2y
Output : Nếu m n TRU(x) = 0y Nếu m > n TRU(x) = 1m-ny
Giải
Input : w = 1mx11nx2y
Output : Nếu m n TRU(w) = 0y Nếu m > n TRU(w) = 1m-ny
Máy Turing M thực hiện hàm TRU(m, n) sẽ hoạt động như sau :
Bước 1: Số 1 bên trái nhất sẽ được thay thế bởi B và dịch phải.
Bước 2: Nếu tìm được số 1 đầu tiên trước x2 thì nó sẽ được thay thế bởi B, dịch trái vàchuyển sang bước 3 Nếu không tìm được thì gặp y, thay y bởi 1 và dịch phải Gặp B thì thay Bbởi y, dịch trái và chuyển bước 4
Bước 3: Tìm 1 bên trái nhất trước x1 Nếu tìm được chuyển bước 1 Nếu không tìm được thì
chuyển bước 5
Bước 4: Chuyển tất cả 1 trước x1 sang bên trái y và chuyển sang bước 6.
Bước 5: Thay thế x1 và tất cả 1 bên phải x2 bởi B; thay thế y bởi 0, ghi y vào ô B tiếp theo
và dừng
Bước 6: Thay thế x1, x2 bởi B và dừng.
Bảng hàm chuyển :
Trang 201 x1 x2 y B
q0 (q1, B, R) (q8, B, R)q1 (q1, 1, R) (q1, x1, R) (q2, x2, L)q2 (q3, B, L) (q4, x1, L)
q4 (q4, 1, L) (q4, x1, L) (q4, x2, L) (q4, y, L) (q5, B, R)q5 (q6, B, R) (q5, B, R) (q7, B, R)
q6 (q6, 1, R) (q6, x1, R) (q6, x2, R) (q6, 1, R) (q4, y, L)
*q9Như vậy, máy Turing M = (, Q, , , q1, B, F), trong đó = {0, 1}, Q = {q0, q1, q2, q3, q4, q5, q6,q7, q8, q9}, = {0, 1, B, x1, x2, y}, F = {q9} và được cho bởi bảng trên
Trang 2111 a) Thiết kế máy Turing M tính giá trị hàm nhân f(x) trên tập các số nguyên dương như sau:f(x) = f(a1, a2) = a1 * a2 , trong đó input x = 1a1x11a2x2By, còn output là giá trị của f(x) = 1a1 *a2 y
Hàm chuyển :
Trang 23b) Tính giá trị f(2, 3) : x = 11x1111x2By … 111111y.
Vậy f(2, 3) = 6
c) Đánh giá độ phức tạp tính toán của M :
Đặt n = max(a1, a2) Có T(n) 2(2n+5)(2n + 3)2 T(n) = O(n3)
L(n) 2n + 5 + n2 L(n) = O(n2)
Trang 2412 Để mã hóa các xâu nhị phân, cho khóa mã cod(0) = 01 và cod(1) = 10 Khi đó mỗi xâu nhị
phân u = u1u2…un có MA(u) = Cod(u1)Cod(u2)…Cod(un)
a) Hãy thiết kế máy Turing M tính giá trị của hàm MA(x), trong đó input x = u1u2…unBy, output
là giá trị của hàm MA(x) = Cod(u1)Cod(u2)…Cod(un)y, còn u1, u2, …, un là các số nhị phân
b) Tính giá trị của MA(0110)
c) Đánh giá độ phức tạp tính toán của M
Giải
a) Máy Turing M tính giá trị của hàm MA(x), trong đó input x = u1u2…unuBy, output là giá trịcủa hàm MA(x) = Cod(u1)Cod(u2)…Cod(un)y, còn u1, u2, …, un là các số nhị phân hoạt động nhưsau:
q0 là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input
Bảng hàm chuyển :
Trang 25*q10Như vậy, xây dựng được máy Turing M = (, Q, , , q0, B, F), trong đó = {0, 1}, Q = {q0, q1,q2, q3, q4, q5, q6, q7, q8, q9}, = {0, 1, x, y, B}, F = { q10} và được cho bởi bảng trên.
b) MA(0110) = 01101001
c) Ký hiệu n là độ dài của xâu u Có :
T(n) 2(2n)2 Suy ra T(n) = O(n2)
Trang 26L(n) 2(n +5) Suy ra L(n) = O(n)