TRƯỜNG ĐẠI HỌC CẦN THƠ Đề thi môn: TIN HỌC LÝ THUYẾT
KHOA CNTT & TRUYỀN THÔNG Lớp: TIN HỌC K.29
Lần 2 – Học kỳ 1 – Năm học 06 - 07
Thời gian làm bài: 120 phút
NỘI DUNG ĐỀ
Câu 1 (1.0 điểm): Áp dụng bổ đề bơm, bạn hãy chứng minh ngôn ngữ sau đây không là ngôn ngữ
chính quy: L = {a
i
b
j
c
j
d
i
| i, j ≥ 1}
Câu 2 (2.0 điểm): Bạn hãy tìm một DFA tương đương với NFA sau:
Câu 3 (1.5 điểm): Bạn hãy vẽ một automata hữu hạn chấp nhận cho ngôn ngữ được ký hiệu bởi
biểu thức chính quy sau: ( (a + ab) b* a )*
Câu 4 (1.0 điểm): Bạn hãy chuyển văn phạm sau đây về dạng chuẩn Chomsky (cho biết rằng văn
phạm không có ký hiệu vô ích):
S → 0SA | 1SB | 01
A → 0A | 0
B → 1B | 1
Câu 5 (1.0 điểm): Bạn hãy chuyển văn phạm sau đây về dạng chuẩn Greibach:
S → SA | 0
A → AS | 1
Câu 6 (1.5 điểm): Bạn hãy thiết kế một PDA tương đương với văn phạm phi ngữ cảnh có tập luật
sinh như sau:
S → 0SA | 1SB | 0 | 1
A → 0A | 0
B → 1B | 1
Câu 7 (2.0 điểm): Bạn hãy thiết kế một máy Turing để thực hiện phép nhân 3 một số nguyên n
dương (n > 0).
Chú ý: trên băng nhập đã được cho trước một ký hiệu X ở đầu băng. Đầu đọc đang chỉ
tại vị trí đầu tiên của băng nhập (ký hiệu X).
Ví dụ: thực hiện phép nhân 3 cho số n = 3 (3 * 3 = 9)
Đầu vào (input): X000
Kết quả (output): 000000000 (9 số 0)
- HẾT -
ĐHCT, ngày 02 tháng 02 năm 2007
Giáo viên ra đề
Nguyễn Thanh Bình
q
1
q
2
q
3
a, b
a
a, b
start
b
ĐÁP ÁN
Câu 1 (1.0 điểm): Áp dụng bổ đề bơm, bạn hãy chứng minh ngôn ngữ sau đây không là ngôn ngữ
chính quy: L = {a
i
b
j
c
j
d
i
| i, j ≥ 1}
Giả sử L là ngôn ngữ chính quy. Khi đó sẽ tồn tại một DFA M chấp nhận cho ngôn ngữ L.
Gọi n là số trạng thái của DFA M đó.
Xét chuỗi z = a
n
b
1
c
1
d
n
. Ta có độ dài của chuỗi z là: |z| = 2n + 2 > n . Theo bổ đề bơm, ta có
thể đặt z = uvw , trong đó u, v, w là các chuỗi con của z với điều kiện như sau:
|uv| ≤ n, |v| ≥ 1 và với mọi i ≥ 0 ta có uv
i
w ϵ L
Do uv là chuỗi tiền tố của chuỗi z = a
n
b
1
c
1
d
n
và uv có độ dài chuỗi không lớn hơn n nên uv
chỉ chứa ký tự a. Vậy v cũng chỉ chứa ký hiệu a (và có ít nhất một ký hiệu a).
Xét chuỗi uv
2
w, ta thấy chuỗi uv
2
w so với chuỗi uvw = z = a
n
b
1
c
1
d
n
có nhiều hơn một chuỗi
v. Mặt khác, trong chuỗi v chỉ chứa ký hiệu a, nên ta suy ra trong chuỗi uv
2
w sẽ có số ký hiệu a
lớn hơn n (và số ký hiệu d không đổi là n). Vậy trong chuỗi uv
2
w sẽ có số ký hiệu a nhiều hơn ký
hiệu d, hay chuỗi uv
2
w không thuộc ngôn ngữ L.
Vậy giả thiết L là ngôn ngữ chính quy sai, hay L không là ngôn ngữ chính quy.
Câu 2 (2.0 điểm): Bạn hãy tìm một DFA tương đương với NFA sau:
DFA tương đương:
Câu 3 (1.5 điểm): Bạn hãy vẽ một automata hữu hạn chấp nhận cho ngôn ngữ được ký hiệu bởi
biểu thức chính quy sau: ( (a + ab) b* a )*
Cách 1:
start
[q
1
]
[q
2
]
[q
3
]
[q
1
, q
2
]
[q
2
, q
3
]
[q
1
,q
2
,q
3
]
a
b
a
b
b
a
b
a
a
b
q
1
q
2
q
3
a, b
a
a, b
start
b
q
1
start
q
2
q
3
b
b
a
a
a
Cách 2: sử dụng cách vẽ đã học theo định lý 3.3 – Giáo trình Tin học lý thuyết – MSc. Võ
Huỳnh Trâm – Đại học Cần Thơ – 2003.
Câu 4 (1.0 điểm): Bạn hãy chuyển văn phạm sau đây về dạng chuẩn Chomsky (cho biết rằng văn
phạm không có ký hiệu vô ích):
S → 0SA | 1SB | 01
A → 0A | 0
B → 1B | 1
Bước 1: bỏ qua (vì đề bài đã cho biết văn phạm không có ký hiệu vô ích, và nhìn vào văn
phạm ta thấy không có luật sinh ε hay luật sinh đơn vị).
Bước 2: thay thế các ký hiệu kết thúc ở các luật sinh có độ dài vế phải lớn hơn 1 bằng các
biến tương ứng.
S → C
0
SA | C
1
SB | C
0
C
1
A → C
0
A | 0
B → C
1
B | 1
C
0
→ 0
C
1
→ 1
Bước 3: thay thế luật sinh có độ dài vế phải lớn hơn 2 bằng các luật sinh có độ dài vế phải
bằng 2.
S → C
0
D
0
| C
1
D
1
| C
0
C
1
A → C
0
A | 0
B → C
1
B | 1
C
0
→ 0
C
1
→ 1
D
0
→ SA
D
1
→ SB
Câu 5 (1.0 điểm): Bạn hãy chuyển văn phạm sau đây về dạng chuẩn Greibach:
S → SA | 0
A → AS | 1
Bước 1: văn phạm đã ở dạng chuẩn Chomsky.
Bước 2: thay biến S bằng biến A
1
, biến A bằng biến A
2
. Ta có tập luật sinh:
A
1
→ A
1
A
2
| 0
A
2
→ A
2
A
1
| 1
Bước 3: khử tính đệ quy trái ở tập luật sinh trên:
A
1
→ 0 | 0B
1
A
2
→ 1 | 1B
2
B
1
→ A
2
| A
2
B
1
B
2
→ A
1
| A
1
B
2
Bước 4: các luật sinh từ biến A
1
và A
2
đã thỏa dạng chuẩn Greibach.
Bước 5: chuyển các luật sinh từ biến B
1
và B
2
về dạng chuẩn Greibach.
A
1
→ 0 | 0B
1
A
2
→ 1 | 1B
2
B
1
→ 1 | 1B
2
| 1B
1
| 1B
2
B
1
B
2
→ 0 | 0B
1
| 0B
2
| 0B
1
B
2
Tập luật sinh trên đã thỏa dạng chuẩn Greibach.
Câu 6 (1.5 điểm): Bạn hãy thiết kế một PDA tương đương với văn phạm phi ngữ cảnh có tập luật
sinh như sau:
S → 0SA | 1SB | 0 | 1
A → 0A | 0
B → 1B | 1
Xây dựng PDA M như sau:
M ({q}, {0, 1}, {S, A, B}, δ, q, S, Ø)
Với các hàm chuyển δ như sau:
δ (q, 0, S) = { (q, SA), (q, ε) }
δ (q, 1, S) = { (q, SB), (q, ε) }
δ (q, 0, A) = { (q, A), (q, ε) }
δ (q, 1, B) = { (q, B), (q, ε) }
Câu 7 (2.0 điểm): Bạn hãy thiết kế một máy Turing để thực hiện phép nhân 3 một số nguyên n
dương (n > 0).
Chú ý: trên băng nhập đã được cho trước một ký hiệu X ở đầu băng. Đầu đọc đang chỉ
tại vị trí đầu tiên của băng nhập (ký hiệu X).
Ý tưởng:
a) Đổi X thành B (để làm chốt chặn ở đầu chuỗi)
b) Gặp số 0 đầu tiên đổi thành 1 (đổi thành 1 để đánh dấu số 0 đó đã được xét)
c) Di chuyển đến cuối chuỗi, đổi 2 ký hiệu B thành ký hiệu 2.
d) Di chuyển về đầu chuỗi cho đến khi gặp ký hiệu 1, dịch phải.
1. Nếu ký hiệu tiếp theo là 0, lặp lại bước b.
2. Nếu ký hiệu tiếp theo là 2 thì di chuyển về cuối chuỗi (cho đến khi gặp B), sau đó
dịch trái đổi các ký hiệu 1 và 2 thành 0. Gặp ký hiệu B ở đầu chuỗi thì kết thúc.
-- HẾT --
q
0
q
1
q
7
(X, B, R)
start
q
5
q
6
q
2
q
3
q
4
(0, 1, R)
(0, 0, R)
(B, 2, R) (B, 2, L)
(0, 0, L)
(2, 2, L)
(1, 1, R)
(2, 2, R)
(2, 2, R)
(2, 2, R)
(B, B, L)
(2, 0, L)
(1, 0, L)
(B, B, Ø)