Tải bản đầy đủ (.doc) (26 trang)

Đề cương ôn thi môn Lý thuyết tính toán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (142.27 KB, 26 trang )

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

×