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... Khi đó sẽ tồn tại một DFA M chấp nhận cho ngôn ngữ L..
Trang 1DHLTTB01 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
- oOo -
ĐỀ THI MẪU NĂM 2007 (A) Chuyên ngành: KHOA HỌC MÁY TÍNH Môn Thi: Automata
Thời gian làm bài: 90 phút
Câu 7 (2,5 đ): Cho I={a,b} Hãy xây dựng một automat hữu hạn M sao cho chấp nhận ngôn ngữ
L={(anb2 : n ≥ 0}
Câu 9 (2,5 đ): Cho văn phạm sau đây:
G= < {a,b} , {S} , P , S >
Với P = { S aSb, S } ( với là ký hiệu ký tự rỗng ) a) Hãy cho biết dạng thức của những dòng ký tự thuộc ngôn ngữ L(G)
(0,5 điểm)
b) Văn phạm G thuộc loại văn phạm gì ?
Câu 8 (2.5 đ): Xây dựng một automat đẩy ngược ( pushdown automata) chấp nhận ngôn ngữ sau đây:
L= { an bn+1: n ≥ 1}
Câu 6 (2.5 đ): Xây dựng một automat đẩy ngược ( pushdown automata) chấp nhận văn phạm sau đây:
G= < {a,b} , {S} , P , S >
Với P = { S aSb, S } ( với là ký hiệu ký tự rỗng )
- hết -
GIẢI
Câu 7 (2.5 đ): Automat hữu hạn M sao cho chấp nhận ngôn ngữ L={(anb2 : n ≥ 0} là:
M = (Q, , , q0 , F)
Với : Q = { q0 , q1 , q2 , q3 } ; = { a,b} ; F = { q2}
( q0, a) = q0
( q0, b) = q1
( q1, a) = q3
( q1, b) = q2
( q2, a) = q3
( q2, b) = q3
( q3, a) = q3
( q3, b) = q3
Câu 9 (2.5 đ): Cho văn phạm sau đây:
G= < {a,b} , {S} , P , S >
a
b
Trang 2DHLTTB01
Với P = { S aSb, S } ( với là ký hiệu ký tự rỗng ) a) Đặt w { a,b}* , lúc đó từ P ta có:
S aSa aaSbb a3S b3 … anS bn Thế S vào ta được dạng thức của dòng ký tự thuộc L(G) là anS bn : n ≥ 0
b) Văn phạm G thuộc loại văn phạm tuyến tính ( hoặc văn phạm phi ngữ cảnh)
Câu 8 (2.5 đ ): Automat đẩy ngược ( pushdown automaton) chấp nhận ngôn ngữ L= { an bn+1: n ≥ 1} là:
M = (Q, , , , q0 , z , F) Với :
( q0, a , z ) = {( q0 ,az)} ,
( q0, a , a ) = {( q0 ,aa)} ,
( q0, , a ) = {( q1 ,a)} ,
( q1, b , a ) = {( q1 , )} ,
( q1, b , z ) = {( q1 , )} ,
( q1, , z ) = {( qf ,z)} ,
Q = { q0 , q1 , qf } ; = { a,b} ; = {a,z} ; F = { qf}
Câu 10 (2.5 đ): Xây dựng một automat đẩy ngược ( pushdown automata) chấp nhận ngôn ngữ sau đây:
L = {wwR : w { a,b}* } với wR
là sự đảo ngược của dòng ký tự w
và tập ký tự của ngôn ngữ là {a,b}
Giải : Automat đẩy ngược ( pushdown automata) chấp nhận ngôn ngữ L = {wwR
: w { a,b}* } là:
M = (Q, , , , q0 , z , F) Với :
( q0, a , z ) = {( q0 ,az)} ,
( q0, a , a ) = {( q0 ,aa)} ,
( q0, a , b ) = {( q0 ,ab)} ,
( q0, b , a ) = {( q0 ,ba)} ,
( q0, b , b ) = {( q0 ,bb)} ,
( q0, b , z ) = {( q0 ,bz)} ,
( q0, , a ) = {( q1 ,a)} ,
( q0, , b ) = {( q1 ,b)} ,
( q1, a , a ) = {( q1 , )},
( q1, b , b ) = {( q1 , )},
( q1, , z ) = {( qf ,z)} ,
Q = { q0 , q1 , qf } ; = { a,b} ; = {a,b,z} ; F = { qf}
Ghi chú: Ký tên:
Trang: 2/2
Trang 3TRƯỜ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 = {ai bj cj di | 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
a
a, b
start
b
Trang 4ĐÁ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 = {ai bj cj di | 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 = anb1c1dn 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ó uviw ϵ L
Do uv là chuỗi tiền tố của chuỗi z = anb1c1dn 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 uv2w, ta thấy chuỗi uv2w so với chuỗi uvw = z = anb1c1dn 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 uv2w 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 uv2w sẽ có số ký hiệu a nhiều hơn ký hiệu d, hay chuỗi uv2w 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
[q1]
[q2]
[q3]
[q1, q2]
[q2, q3]
[q1,q2,q3] a
b
a
b
b
a
b
a a
b
a
a, b
start
b
q1
start
q2
q3
b
b a
a a
Trang 5Cá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 → C0SA | C1SB | C0C1
A → C0A | 0
B → C1B | 1
C0→ 0
C1→ 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 → C0D0 | C1D1 | C0C1
A → C0A | 0
B → C1B | 1
C0→ 0
C1→ 1
D0→ SA
D1→ 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 A1, biến A bằng biến A2 Ta có tập luật sinh:
A1 → A1A2 | 0
A2 → A2A1 | 1
Bước 3: khử tính đệ quy trái ở tập luật sinh trên:
A1 → 0 | 0B1
A2 → 1 | 1B2
B1 → A2 | A2B1
B2 → A1 | A1B2
Bước 4: các luật sinh từ biến A1 và A2 đã thỏa dạng chuẩn Greibach.
Trang 6Bước 5: chuyển các luật sinh từ biến B1 và B2 về dạng chuẩn Greibach.
A1 → 0 | 0B1
A2 → 1 | 1B2
B1 → 1 | 1B2 | 1B1 | 1B2B1
B2 → 0 | 0B1 | 0B2 | 0B1B2
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
q7
(X, B, R)
start
(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, Ø)
Trang 7TUTORIAL-8
Exaple-1: Convert the following NFA into a DFA that accepts the same language
1 Start state of the DFA is a set of start states for NFA
2 Create new states for all states reachable from start state
3 Repeat process for all new states
4 Stop when no more new states created
From the above transition table we have to draw the corresponding DFA
c
d
1
0
0
0.1 0,1
NFA
Trang 8Example-2: Consider the following grammar where production (4) denotes a single
letter
<E> <E><E> (1)
| <E> : <E> (2)
Q: What are the two sources of the ambiguity present in the above grammar? Ans: (i) Precedence i.e in this grammar it is not defined that production (1) has got
higher precedence or production (2) has got higher precedence or production (3) has got higher precedence
(ii) Associativity i.e it is not defined that production (1) or production (2) is left-associative or right-left-associative ( because productions are symmetric)
The above grammar has been re-written into the following unambiguous form
<E> <T> : <E> (1)
<T> <T> <F> (3)
<F> (<E>) (5)
Q: Production (1) or Production (3) has got higher precedence?
Ans: Production (3) has got higher precedence
{c}
{b }
{a,b
}
{d
0
0,
1
1
0
0
DFA
Φ
1
0,1
Trang 9Q: State whether Production (1) and Production (3) are right-associative or left-associative?
Ans: Production (1) is right-associative and Production (3) is left-associative
Q: Draw the parse tree for the string “ab:c:d” using the unambiguous grammar Ans:
<E> <T> : <E> (1)
<T> <F> : <E> (3)
<F> <F> : <E> (4)
<letter><F> : <E> (6)
a<letter> : <E> (6)
ab : <T> : <E> (1)
ab : <F> : <E> (4)
ab : <letter> : <E> (6)
ab : c: <T> (2)
ab: c: <F> (4)
ab: c : <letter> (6)
ab : c : d
PARSE TREE:
<E>
<T> : <E>
<T> <F> <T> : <E>
<F>
<letter>
<letter
a
b
<F> <T>
<letter> <F>
d
Trang 10Example-3: Consider the following grammar for music expressions where production
(1) denotes parallel composition, production (2) denotes sequential composition and production (4) denotes a single note of music
<M> <M> | <M> (1)
| <M><M> (2)
<Note> a’ | a | a# | b’ | b | c | c# | d’ | d | d# | e’ | e | f | f# | g’ | g | g# | r
Q: Give a string in the language generated by <M> that involves productions (1)
to (4) inclusive
Ans:
<M> <M> | <M> (1)
<M><M> | <M> (2)
(<M>)<M> | <M> (3)
(<Note>)<M> | <M> (4)
(a’)<Note> | <M> (4)
(a’)c# | <Note> (4)
(a’)c# | g
String in the language is “(a’)c# | g”
Q: Give two parse trees using the above grammar for the same string “c | e | g”
Trang 11Q: Re-write the grammar into an unambiguous form, so that parallel composition has
a lower precedence to sequential composition and both compositions are
left-associative i.e “c | e | g” is to be interpreted as “(c | e) | g”
Ans:
<M> <M> | <T> (1)
<T> <T><F> (3)
<M>
<M> | <M>
<Note
c
<M> | <M>
<M>
<M>
<M> | <M>
<Note>
<Note>
<Note>
c
e
g
Trang 12<F> <Note> (5)
<Note> a’ | a | a# | b’ | b | c | c# | d’ | d | d# | e’ | e | f | f# | g’ | g | g# | r
Trang 13NỘI DUNG ÔN TẬP MÔN LÝ THUYẾT AUTOMATA & NNHT DÀNH CHO CÁC LỚP CHÍNH QUI
Lưu ý
Nội dung thi Chương 5 đến Chương 9
Hình thức thi Trắc nghiệm
Thời gian 120 phút
Số lượng câu dự kiến 50 câu
Lý thuyết dự kiến 10 đến 15 câu
Bài tập dự kiến 35 đến 40 câu
Cho phép xem tài liệu trong 2 tờ giấy A4
Lý thuyết
STT Nội dung dự kiến
1 Ngôn ngữ phi ngữ cảnh (NNPNC), VPPNC, NNPNC tuyến tính, VPPNC tuyến tính
2 Dẫn xuất (DX), DX trái nhất - phải nhất, cây DX
3 Tính nhập nhằng trong văn phạm và ngôn ngữ
4 Các phép biến đổi văn phạm và hai dạng chuẩn
5 Phân tích cú pháp (PTCP), độ phức tạp của các giải thuật PTCP
6 Phương pháp vét cạn, giải thuật PTCP theo CYK
7 Automata đẩy xuống không đơn định (NPDA) và đơn định DPDA
8 NNPNC đơn định, các văn phạm cho NNPNC đơn định, văn phạm LL(k)
9 Bổ đề bơm cho NNPNC và NNPNC tuyến tính
10 Tính đóng của họ NNPNC và các tính chất khả quyết định
11 Máy Turing
12 Mô hình phân cấp theo Chomsky
Bài tập
STT Bài tập dự kiến
1 Cho ngôn ngữ L tìm văn phạm G
2 Cho G tìm L
3 Nhận biết G nhập nhằng trên chuỗi nào
4 Tìm dẫn xuất của w trên G
5 Loại bỏ các loại luật sinh - vô dụng, - đơn vị, - trống
6 Biến đổi văn phạm thành dạng chuẩn Chomsky, Greibach
7 Phân tích cú pháp bằng giải thuật CYK
8 Cho L tìm NPDA
9 Cho NPDA tìm L
10 Tìm dãy chuyển hình trạng của NPDA chấp nhận w
11 Cho G tìm NPDA
12 Cho dãy dẫn xuất của w, tìm dãy chuyển hình trạng tương ứng của w
13 Cho L tìm DPDA
14 Cho DPDA tìm L
15 Tìm dãy chuyển hình trạng của DPDA chấp nhận w
16 Cho L tìm văn phạm LL(k) (chủ yếu k = 1 hoặc 2)
17 Nhận biết một văn phạm có thuộc họ LL(k) không (chủ yếu k = 1 hoặc 2)
18 Phân tích cú pháp cho chuỗi w trên văn phạm LL(1)
19 Nhận biết một ngôn ngữ có phi ngữ cảnh hoặc phi ngữ cảnh tuyến tính hay không
20 Cho máy Turing M, nhận biết ngôn ngữ L được chấp nhận bởi M
Trang 14MỘT SỐ BÀI TẬP ÔN + ĐÁP ÁN
Ghi chú:
Các đáp án ở đây không phải là duy nhất, các bạn sinh viên có thể tìm thấy các đáp án khác
1 Cho các ngôn ngữ L sau, tìm các văn phạm G tương ứng:
L1 = {a 2n+1 b n+2 : n ≥ 0}
L2 = {w ∈ {a, b}*: n a (w) = n b (w) + 1}
L3 = {w ∈ {a, b}*: n a (w) = n b (w) + 1}
L4 = {w ∈ {a, b}*: n a (w) = 2n b (w) + 1}
Đáp án:
G1: S → aaSb | abb
G2(1): S → aSbS | bSaS | λ
G2(2): S → aSb | bSa | SS |λ
G2(2): S → aAS | bBS | λ
A → aAA | b
B → bBB | a
Chú ý: G2(2) là văn phạm thuộc họ LL(1)
G3(1): S → aX | bXaS
X → aXbX | bXaX | λ
G3(2): S → BX
X → aAX | bBX | λ
A → aAA | b
B → bBB | a
Chú ý: G3(2) là văn phạm thuộc họ LL(1)
G4: S → aX | bXaXaS
X → aXaXbX | aXbXaX | bXaXaX | λ
2 Cho các văn phạm G sau, tìm các ngôn ngữ L tương ứng:
G1: S → aSbS | λ
G2: E → E+T | E-T | T
T → T*F | T/F | F
F → (E) | a | b
G3: S → aEbS | aEbScS | λ
E → d | e
Đáp án:
L1 = {w ∈ {a, b}*: n a (w) = n b (w), n a (v) ≥ n b (v) với v là một tiếp đầu ngữ bất kỳ của w}
trong đó n a (w), n b (w) là các kí hiệu biểu thị số kí tự a và b có trong w
Chú ý: Nếu thay a bằng dấu mở ngoặc “(“ (hoặc bằng từ khoá begin) và b bằng dấu đóng ngoặc “)”
(hoặc từ khoá end) thì ngôn ngữ trên biểu thị cấu trúc ngoặc lồng nhau, chẳng hạn ((()())(()))((())())
L2 = {Các biểu thức số học trên các kí hiệu a, b bao gồm các phép (), +, -, *, /}
Chú ý: Văn phạm trên thể hiện độ ưu tiên của các phép toán theo thứ tự sau từ cao đếp thấp: (), * và /, + và -
L3 = {Biểu diễn các cấu trúc lệnh if Điều kiện then … và if Điều kiện then … else Trong đó a là đại diện cho if, E đại diện cho biểu thức điều kiện nhận hai giá trị d và e lần lượt đại diện cho hai giá trị true và false, còn c đại diện cho else}
3 Những văn phạm nào sau đây nhập nhằng, nếu có hãy chỉ ra nhập nhằng trên chuỗi nào
G1: S → aSbS | bSaS | λ
G2: S → aSb | bSa | SS |λ G G34: S → aSbS | λ : E → E+E | E-E | E*E | E/E | (E) | a | b G5: E → E+T | E-T | T T → T*F | T/F | F
F → (E) | a | b