1. Cho máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {0, 1}, Q = {q
0
, q
1
, q
2
, q
3
, q
4
},
Γ = { 0, 1, B}, F = {q
4
} và δ được cho bởi bảng sau
0 1 B
→q
0
(q
0
, 0, R) (q
1
, 1, L)
q
1
(q
1
, 0, L) (q
1
, 1, L) (q
2
, B, R)
q
2
(q
3
, B, R) (q
4
, B, R)
q
3
(q
3
, 0, R) (q
3
, 1, R) (q
4
, 0, R)
*q
4
(q
1
, 0, L)
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âu
nào được M thừa nhận?
c) Xác định độ phức tạp tính toán của M?
1
Giải
a) Máy Turing M sẽ hoạt động như sau:
δ(q
0
, 0) = (q
0
, 0, R): Gặp 0, thay 0 bởi 0, chuyển q
0
và dịch phải.
δ(q
0
, 1) : Dừng và không thừa nhận.
δ(q
0
, B) = (q
1
, 1, L): Gặp B, thay B bởi 1, chuyển q
8
và dịch trái.
δ(q
1
, 0) = (q
1
, 0, L): Gặp 0, thay 0 bởi 0, chuyển q
1
và dịch trái.
δ(q
1
, 1) = (q
1
, 1, L): Gặp 1, thay 1 bởi 1, chuyển q
1
và dịch trái.
δ(q
1
, B) = (q
2
, B, R): Gặp B, thay B bởi B, chuyển q
2
và dịch phải.
δ(q
2
, 0) = (q
3
, B, R): Gặp 0, thay 0 bởi B, chuyển q
3
và dịch phải.
δ(q
2
, 1) = (q
4
, B, R): Gặp 1, thay 1 bởi B, chuyển q
4
và dịch phải.
δ(q
2
, B) : Dừng và không thừa nhận.
δ(q
3
, 0) = (q
3
, 0, R): Gặp 0, thay 0 bởi 0, chuyển q
3
và dịch phải.
δ(q
3
, 1) = (q
3
, 1, R): Gặp 1, thay 1 bởi 1, chuyển q
3
và dịch phải.
δ(q
3
, B) = (q
3
, 1, R): Gặp B, thay B bởi 0, chuyển q
4
và dịch phải.
δ(q
4
, 0) : Dừng và thừa nhận.
δ(q
4
, 1) : Dừng và thừa nhận.
δ(q
4
, B) = (q
1
, 0, L): Gặp B, thay B bởi 0, chuyển q
1
và dịch trái.
2
b) Mô tả quá trình thực hiện của M trên các xâu
(i) 00: q
0
00 ⇒ 0q
0
0 ⇒ 00q
0
B
⇒
0q
1
01 ⇒ q
1
001 ⇒ q
1
B001 ⇒ Bq
2
001 ⇒ BBq
3
01 ⇒ BB0q
3
1B
⇒ BB01q
3
B ⇒ BB010q
4
B ⇒ BB01q
1
00 ⇒ BB0q
1
100 ⇒ BBq
1
0100 ⇒ Bq
1
B0100 ⇒ BBq
2
0100
⇒BBBq
3
100 ⇒ BBB1q
3
00 ⇒ BBB10q
3
0 ⇒ BBB100q
3
B ⇒ BBB1000q
4
B ⇒ BBB100q
1
00 ⇒
BBB10q
1
000 ⇒ BBB1q
1
0000 ⇒ BBBq
1
10000 ⇒ BBq
1
B10000 ⇒ BBBBq
2
10000 ⇒
BBBBBq
4
0000: Dừng và thừa nhận.
(ii) 01: q
0
01 ⇒ 0q
0
1: Dừng và không thừa nhận
(iii) 10: q
0
10: dừng và không thừa nhận
(iv) 11: q
0
11: 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(n
2
) và L(n) = O(n
2
)
Kết luận: T(n) = O(n
2
) và L(n) = O(n
2
)
3
2. Cho máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {x, y, z}, Q = {q
0
, q
1
, q
2
}, Γ = {x, y,
z, B}, F = {q
2
} và δ được cho bởi bảng sau
x y z B
→q
0
(q
0
, x, R) (q
0
, y, R) (q
1
, x, R) (q
0
, B, R)
q
1
(q
0
, x, R) (q
0
, y, L) (q
2
, z, R)
*q
2
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) xyz;
(ii) xxyy;
(iii) xxzyy.
Xét xem các xâu nào được M thừa nhận?
c) Xác định độ phức tạp tính toán của M?
4
3. Cho máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {1, 2, 3}, Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
,
q
6
}, Γ = {1, 2, 3, B}, F = {q
6
} và δ được cho bởi bảng sau
1 2 3 B
→q
0
(q
1
, B, R) (q
0
, B, R)
q
1
(q
1
, 1, R) (q
2
, B, R) (q
1
, B, R)
q
2
(q
2
, 2, R) (q
3
, B, R) (q
2
, B, R)
q
3
(q
4
, 3, L) (q
6
, B, L)
q
4
(q
5
, 1, L) (q
4
, 2, L) (q
4
, B, L)
q
5
(q
5
, 1, L) (q
0
, B, R)
*
q
6
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 M
thừa nhận?
c) Đánh giá độ phức tạp tính toán của M.
5
4. 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ên
bă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ăng
input, 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 δ:
00 01 10 11 B0 B1
→ q
0
q
1
00RS q
3
01SR q
2
10RS q
3
11SR
q
1
q
1
00RS q
4
B0SS
q
2
q
2
10RS q
4
B0SS
q
3
q
3
00RR q
3
11RR q
4
B0SS q
4
B1SS
*q
4
Như vậy, RM có trạng thái đầu q
0
, trạng thái thừa nhận q
4
.
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:
6
(i) w = 1111111; (ii) w = 1001100
Giải
a) Máy Turing ngẫu nhiên RM sẽ hoạt động như sau:
δ(q
0
, 00) = (q
1
, 00, R,S): Gặp 00, thay 00 bởi 00, chuyển q
1
và dịch phải trên băng Input và
đứng yên trên băng ngẫu nhiên
δ(q
0
, 01) = (q
3
, 01, S, R): Gặp 01, thay 01 bởi 01, chuyển q
3
và đứng yên băng Input và dịch
phải trên băng ngẫu nhiên
δ(q
0
, 10) = (q
2
, 10, R,S): Gặp 10, thay 10 bởi 10, chuyển q
2
và dịch phải trên băng Input và
đứng yên trên băng ngẫu nhiên
δ(q
0
, 11) = (q
3
, 11, S, R): Gặp 11, thay 11 bởi 11, chuyển q
3
và đứng yên băng Input và dịch
phải trên băng ngẫu nhiên
δ(q
1
, 00) = (q
1
, 00, R, S): Gặp 00, thay 00 bởi 00, chuyển q
1
và dịch phải trên băng Input và
đứng yên trên băng ngẫu nhiên
δ(q
1
, B0) = (q
4
, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q
4
và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
δ(q
2
, 10) = (q
2
, 10, R, S): Gặp 10, thay 10 bởi 10, chuyển q
1
và dịch phải trên băng Input và
đứng yên trên băng ngẫu nhiên
δ(q
2
, B0) = (q
4
, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q
4
và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
7
δ(q
3
, 00) = (q
1
, 00, R, R): Gặp 00, thay 00 bởi 00, chuyển q
1
và dịch phải trên băng Input và
dịch phải trên băng ngẫu nhiên
δ(q
3
, 11) = (q
3
, 11, R, R): Gặp 11, thay 11 bởi 11, chuyển q
3
và dịch phải trên băng Input và
dịch phải trên băng ngẫu nhiên
δ(q
3
, B0) = (q
4
, B0, S, S): Gặp B0, thay B0 bởi B0, chuyển q
4
và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
δ(q
3
, B1) = (q
4
, B1, S, S): Gặp B1, thay B1 bởi B1, chuyển q
4
và đứng yên trên băng Input
và đứng yên trên băng ngẫu nhiên
δ(q
0
, B0), δ(q
0
, B1), δ(q
1
, 01), δ(q
1
, 10), δ(q
1
, 11), δ(q
1
, B1), δ(q
1
, B1), δ(q
2
, 00), δ(q
2
, 01),
δ(q
2
, 11), δ(q
2
, B1), δ(q
3
, 01), δ(q
3
, 10): Dừng và không thừa nhận
δ(q
4
, 00), δ(q
4
, 01), δ(q
4
, 10), δ(q
4
, 11), δ(q
4
, B0), δ(q
4
, B1): Dừng và thừa nhận
b) Mô tả quá trình thực hiện của M trên các xâu
(i) Xét w = 11111 và rw = 00101: q
0
11111|q
0
00101 ⇒ 1q
2
1111|q
0
00000 ⇒ 11q
2
111|q
2
00101 ⇒
111q
2
11|q
2
00101 ⇒ 1111q
2
1|q
2
00101 ⇒ 11111q
2
B|q
2
00101 ⇒ 11111q
4
B|q
2
00101: Dừng và RM
thừa nhận w.
8
(ii) Xét w = 11001 và rw = 10101: q
0
11001|q
0
10101 ⇒ q
3
11001|1q
3
0101 ⇒1q
2
1001|1q
2
0101 ⇒
11q
2
001|1q
2
0101: 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)
=
256
129
(ii) w = 1001100 có tổng xác suất thừa nhận w bằng 2
-(7+1)
=
256
1
9
5. Thiết kế máy Turing thừa nhận ngôn ngữ {0
n
1
n
0
n
n ≥ 0}.
Giải
Máy Turing M thừa nhận xâu w = 0
n
1
n
0
n
, n ≥ 1, sẽ hoạt động như sau :
q
0
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ịch
phả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:
10
0 1 x B
→q
0
(q
1
, B, R) (q
4
, B, R) (q
0
, x, R) (q
5
, B, L)
q
1
(q
1
, 0, R) (q
2
, B, R) (q
1
, x, R)
q
2
(q
2
, 0, R) (q
2
, 1, R) (q
2
, x, R) (q
3
, B, L)
q
3
(q
4
, B, L)
q
4
(q
4
, 0, L) (q
4
, 1, L) (q
4
, x, L) (q
0
, B, R)
*q
5
⇒ máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {0, 1}, Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
}, Γ = {0,
1, B, x}, F = {q
5
} và δ được cho bởi bảng trên.
11
6. 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 :
q
0
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 x
thì 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;
12
Bảng hàm chuyển:
0 1 x B
→q
0
(q
1
, B, R) (q
2
, B, R) (q
0
, x, R) (q
4
, B, L)
q
1
(q
1
, 0, R) (q
3
, x, L) (q
1
, x, R)
q
2
(q
3
, x, L) (q
2
, 1, R) (q
2
, x, R)
q
3
(q
3
, 0, L) (q
3
, 1, L) (q
3
, x, L) (q
0
, B, R)
*q
4
13
7. 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 đối
xứ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 :
q
0
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:
14
0 1 2 B
→q
0
(q
1
, B, R) (q
2
, B, R) (q
3
, B, R) (q
9
, 1, R)
q
1
(q
1
, 0, R) (q
1
, 1, R) (q
1
, 2, R) (q
4
, B, L)
q
2
(q
2
, 0, R) (q
2
, 1, R) (q
2
, 2, R) (q
5
, B, L)
q
3
(q
3
, 0, R) (q
3
, 1, R) (q
3
, 2, R) (q
6
, B, L)
q
4
(q
7
, B, L) (q
8
, 0, L) (q
8
, 0, L) (q
9
, 1, R)
q
5
(q
8
, 0, L) (q
7
, B, L) (q
8
, 0, L) (q
9
, 1, R)
q
6
(q
8
, 0, L) (q
8
, 0, L) (q
7
, B, L) (q
9
, 1, R)
q
7
(q
7
, 0, L) (q
7
, 1, L) (q
7
, 2, L) (q
0
, B, R)
q
8
(q
8
, B, L) (q
8
, B, L) (q
8
, B, L) (q
9
, B, R)
*
q
9
⇒ M = (Σ, Q, Γ, δ, q1, B, F), trong đó Σ = {0, 1, 2}, Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
, q
6
, q
7
, q
8
, q
9
}, Γ =
{0, 1, 2, B}, F = {q
9
} và δ được cho bởi bảng trên.
15
8. 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 hay
khô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:
q
0
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
0 1 B
→q
0
(q
0
, B, R) (q
1
, B, R) (q
2
, 1, L)
q
1
(q
1
, B, R) (q
0
, B, R) (q
2
, 0, L)
*
q
2
Như vậy, xây dựng được máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {0, 1}, Q =
{q
0
, q
1
, q
2
}, Γ = {0, 1, B}, F = {q
2
} và δ được cho bởi bảng trên.
16
9. 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(a
1
, a
2
) = a
1
+ a
2
, trong đó input x =
Byxx
aa
21
21
11
, còn output là giá trị của f(x) =
yB
aa
21
1
+
.
b) Tính giá trị f(2, 3).
c) Đánh giá độ phức tạp tính toán của M.
Giải
Input : x =
Byxx
aa
21
21
11
Output : f(x) =
yB
aa
21
1
+
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 x
2
thay thế x
2
bởi 1, dịch phải gặp B thay thế B bởi x
2
, dịch phải gặp y thay thế y
bở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 x
1
. 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ế x
1
bởi B; thay thế x
2
bởi y, thay thế y bởi B và dừng.
17
Bảng hàm chuyển:
1 x
1
x
2
y B
→ q
0
(q
1
, B, R) (q
3
, B, R)
q
1
(q
1
, 1, R) (q
1
, x
1
, R) (q
1
, 1, R) (q
1
, x
2
, R) (q
2
, y, L)
q
2
(q
2
, 1, L) (q
2
, x
1
, L) (q
2
, x
2
, L) (q
0
, B, R)
q
3
(q
3
, 1, R) (q
3
, y, R) (q
4
, B, L) (q
0
, B, R)
*q
4
Như vậy, xây dựng được máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {1}, Q = {q
0
, q
1
,
q
2
, q
3
, q
4
}, Γ = {1, B, x
1
, x
2
, y}, F = {q
4
} và δ được cho bởi bảng trên.
18
10. 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 = 1
m
x
1
1
n
x
2
y
Output : Nếu m ≤ n ⇒ TRU(x) = 0y. Nếu m > n ⇒ TRU(x) = 1
m-n
y
Giải
Input : w = 1
m
x
1
1
n
x
2
y
Output : Nếu m ≤ n ⇒ TRU(w) = 0y. Nếu m > n ⇒ TRU(w) = 1
m-n
y
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 x
2
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 B
bở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 x
1
. 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 x
1
sang bên trái y và chuyển sang bước 6.
Bước 5: Thay thế x
1
và tất cả 1 bên phải x
2
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ế x
1
, x
2
bởi B và dừng.
Bảng hàm chuyển :
19
1 x
1
x
2
y B
→ q
0
(q
1
, B, R) (q
8
, B, R)
q
1
(q
1
, 1, R) (q
1
, x
1
, R) (q
2
, x
2
, L)
q
2
(q
3
, B, L) (q
4
, x
1
, L)
q
3
(q
3
, 1, L) (q
3
, x
1
, L) (q
0
, B, R)
q
4
(q
4
, 1, L) (q
4
, x
1
, L) (q
4
, x
2
, L) (q
4
, y, L) (q
5
, B, R)
q
5
(q
6
, B, R) (q
5
, B, R) (q
7
, B, R)
q
6
(q
6
, 1, R) (q
6
, x
1
, R) (q
6
, x
2
, R) (q
6
, 1, R) (q
4
, y, L)
q
7
(q
9
, 1, L) (q
7
, B, R)
q
8
(q
8
, B, R) (q
8
, B, R) (q
8
, 0, R) (q
9
, y, L)
*q
9
Như vậy, máy Turing M = (Σ, Q, Γ, δ, q
1
, B, F), trong đó Σ = {0, 1}, Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
, q
6
,
q
7
, q
8
, q
9
}, Γ = {0, 1, B, x
1
, x
2
, y}, F = {q
9
} và δ được cho bởi bảng trên.
20
11. 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(a
1
, a
2
) = a
1
* a
2
, trong đó input x =
Byxx
aa
21
21
11
, còn output là giá trị của f(x) =
y
aa
21
*
1
.
b) Tính giá trị f(2, 3).
c) Đánh giá độ phức tạp tính toán của M.
Giải
a) Máy Turing M tính hàm f(x) = f(a
1
, a
2
) = a
1
* a
2
, trong đó input x =
Byxx
aa
2
2
1
1
11
, còn output
là giá trị của f(x) =
yB
aa
2
*
1
1
.sẽ hoạt động như sau:
- Hoạt động của M : Chép a
1
lần liên tiếp khối a
2
số 1, mỗi lần chép 1 khối, loại bớt 1 số 1
trong khối
1
1
a
⇒
yBxBx
aaa
2
*
1
2
2
1
11
. Cuối cùng cần xóa tiền tố
2
2
1
1 xx
a
⇒
yB
aa
2
*
1
1
còn lại trên
băng là giá trị của hàm.
Hàm chuyển :
21
1 2 x
1
x
2
y B
→q
0
(q
1
, B, R) (q
12
, B, R)
q
1
(q
1
, 1, R) (q
2
, x
1
, R)
q
2
(q
3
, 2, R) (q
13
, B, L)
q
3
(q
3
, 1, R) (q
3
, x
2
, R) (q
4
, y, L) (q
3
, 1, R)
q
4
(q
4
, 1, L) (q
5
, 2, R) (q
4
, x
2
, L)
q
5
(q
6
, 2, R) (q
7
, x
2
, L)
q
6
(q
6
, 1, R) (q
6
, x
2
, R) (q
6
, 1, R) (q
7
, y, L)
q
7
(q
7
, 1, L) (q
8
, 2, R) (q
7
, x
2
, L)
q
8
(q
8
, 1, R) (q
8
, x
2
, R) (q
8
, 1, R) (q
7
, y, R)
q
9
(q
9
, 1, L) (q
9
, 1, L) (q
9
, x
1
, L) (q
10
, B, R)
q
10
(q
11
, B, R) (q
12
, B, R)
q
11
(q
11
, 1, R) (q
5
, x
1
, R)
q
12
(q
12
, B, R) (q
13
, B, R)
q
13
(q
13
, B, L) (q
13
, B, L) (q
14
, B, R)
*q
14
22
Như vậy, xây dựng được máy Turing M = (Σ, Q, Γ, δ, q
14
, B, F), trong đó Σ = { 1}, Q = {q
1
,
q
2
, , q
14
}, Γ = {1, 2, x
1
, x
2
, y, B}, F = {q
14
} và δ được cho bởi bảng trên.
b) Tính giá trị f(2, 3) : x = 11x
1
111x
2
By ⇒ … ⇒ 111111y.
Vậy f(2, 3) = 6.
c) Đánh giá độ phức tạp tính toán của M :
Đặt n = max(a
1
, a
2
). Có T(n) ≤ 2(2n+5)(2n + 3)
2
⇒ T(n) = O(n
3
)
L(n) ≤ 2n + 5 + n
2
⇒ L(n) = O(n
2
).
23
12. Để 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 = u
1
u
2
…u
n
có MA(u) = Cod(u
1
)Cod(u
2
)…Cod(u
n
).
a) Hãy thiết kế máy Turing M tính giá trị của hàm MA(x), trong đó input x = u
1
u
2
…u
n
By, output
là giá trị của hàm MA(x) = Cod(u
1
)Cod(u
2
)…Cod(u
n
)y, còn u
1
, u
2
, …, u
n
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 = u
1
u
2
…u
n
uBy, output là giá trị
của hàm MA(x) = Cod(u
1
)Cod(u
2
)…Cod(u
n
)y, còn u
1
, u
2
, …, u
n
là các số nhị phân hoạt động như
sau:
q
0
là trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input.
Bảng hàm chuyển :
24
0 1 x y B
→ q
0
(q
1
, B, R) (q
2
, B, R) (q
10
, B, R)
q
1
(q
1
, 0, R) (q
1
, 1, R) (q
3
, x, R)
q
2
(q
2
, 0, R) (q
2
, 1, R) (q
4
, x, R)
q
3
(q
3
, 1, R) (q
5
, 0, R)
q
4
(q
4
, 0, R) (q
5
, 1, R)
q
5
(q
6
, y, L)
q
6
(q
6
, 0, L) (q
6
, 1, L) (q
6
, x, L) (q
7
, B, R)
q
7
(q
8
, B, R) (q
9
, B, R) (q
10
, B, R
q
8
(q
8
, 0, R) (q
8
, 1, R) (q
8
, x, R) (q
8
, 0, R) (q
5
, 1, R)
q
9
(q
9
, 0, R) (q
9
, 1, R) (q
9
, x, R) (q
9
, 1, R) (q
5
, 0, R)
*q
10
Như vậy, xây dựng được máy Turing M = (Σ, Q, Γ, δ, q
0
, B, F), trong đó Σ = {0, 1}, Q = {q
0
, q
1
,
q
2
, q
3
, q
4
, q
5
, q
6,
q
7
, q
8
, q
9
}, Γ = {0, 1, x, y, B}, F = { q
10
} 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(n
2
)
25