Professional Documents
Culture Documents
- Xuất xứ và định nghĩa của VPPNC - Cây suy dẫn và sự nhập nhằng trong VPPNC - Văn phạm chính quy - Giản lược các VPPNC - Dạng chuẩn Chomsky - Một số bài toán quyết định đối với các NNPNC
- Xuất xứ và định nghĩa của VPPNC - Cây suy dẫn và sự nhập nhằng trong VPPNC - Văn phạm chính quy - Giản lược các VPPNC - Dạng chuẩn Chomsky - Một số bài toán quyết định đối với các NNPNC
- Xuất xứ và định nghĩa của VPPNC - Cây suy dẫn và sự nhập nhằng trong VPPNC - Văn phạm chính quy - Giản lược các VPPNC - Dạng chuẩn Chomsky - Một số bài toán quyết định đối với các NNPNC
- Việc nghiên cứu các VPPNC đã tạo nên một cơ sở lý luận vững chắc cho việc
biểu diễn các ngôn ngữ lập trình, cho việc tìm kiếm các giải thuật phân tích cú
pháp vận dụng trong các chương trình dịch.
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.2. Định nghĩa VPPNC
Một VPPNC là một hệ thống:
G = (, , P, S), trong đó:
+ là tập hữu hạn các ký hiệu kết thúc (ký hiệu cuối)
+ là tập hữu hạn các ký hiệu không kết thúc (ký hiệu trung
gian hay biến), =
+ S gọi là ký hiệu đầu
+ P là tập hữu hạn các sản xuất có dạng: (bị hạn chế)
A
Bài tập thêm: Tìm ngôn ngữ được sản sinh bởi các VPPNC:
a) G = ({a, b}, {S,}, S, {S aS | Sbb | c}
b) G = ({0, 1}, {S, A}, S, {S 0A, A A1 | 00)
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
Bài tập: Cho trước ngôn ngữ, Lập VPPNC
Bài tập thêm: { dj ej ai+1 bi | i, j 1}, { ai (bc)j di | i, j1}, { ai+2 (bc)j di | i, j1}
2. CÂY SUY DẪN VÀ SỰ NHẬP NHẰNG TRONG VPPNC
Bài tập: Tìm suy dẫn bên trái nhất, suy dẫn bên phải
2.1. Cây suy dẫn nhất của xâu aaaabaa và lập cây suy dẫn của suy dẫn đó.
Thí dụ 3.3: Xét VPPNC G có tập sản xuất là:
1) S aAS 2) S a - Cây suy dẫn tương ứng:
3) A SbA 4) A SS 5) Aba 1
- Giả sử có suy dẫn:
2
1 3 2 2 5 3
S=>aAS=>aSbAS=>aSbAa=>aabAa=>aabbaa
- Nếu đọc các nhãn của các nút lá theo thứ tự từ trái 2 5
qua phải, ta có một dạng câu và gọi đó là kết quả của
cây suy dẫn, VD: aabbaa
- Một cây suy dẫn ứng với nhiều suy dẫn. Các suy dẫn này có
cùng độ dài vì cùng áp dụng một số các sản xuất như nhau và
chỉ khác nhau ở thứ tự áp dụng các sản xuất. 1 3 2 5 2
S=>aAS=>aSbAS=>aabAS=>aabbaS=>aabbaa
- Suy dẫn bên trái nhất (thay biến bên trái trước) :
1 2 3 5 2
- Suy dẫn bên phải nhất (thay biến bên phải trước:S=>aAS=>aAa=>aSbAa=>aSbbaa=>aabbaa
2. CÂY SUY DẪN VÀ SỰ NHẬP NHẰNG TRONG VPPNC
2.2. Sự nhập nhằng trong VPPNC
Chú ý: Muốn loại ký hiệu vô ích, thì phải loại ký hiệu vô sinh trước, loại không đến được sau.
4. GIẢN LƯỢC CÁC VPPNC
4.2. Cách loại ký hiệu vô sinh
- Cho VPPNC G = (, , P, S) VD: Cho VPPNC G với tập sản xuất P như sau:
- Cần tìm G’ = (, ’, P’, S) không chứa P={S Ac | aCB,
các ký hiệu vô sinh sao cho G’ G. b, D a|b, ba}
Giải thuật tính ’ : VPPNC G’ không chứa ký hiệu vô sinh và tương
đương với VPPNC G là:
1) Đưa vào ’ các biến hữu sinh trực
tiếp (lấy từ các sản xuất có vế phải là xâu G’ = (, ’, P’, S), trong đó:
kết thúc). - Tập ’ được tính như sau:
2) Đưa vào ’ các biến hữu sinh gián + Vì Bb, Da|b, E ba, nên ’={B, D, E}bố, mẹ
tiếp A sao cho A X1X2 … Xn , trong đó Xi + Vì , nên ’={B, D, E, A} ông, bà
hoặc là ký hiệu cuối, hoặc là biến đã
+ Vì S Ac, nên ’={B, D, E, A, S} cụ
thuộc ’ (lặp lại bước này khi xét hết các
sản xuất thuộc tập P). - Từ đó tính tập P’ gồm các sản xuất sau:
Giải thuật tính P’ : Chỉ đưa vào P’ các sản P’ ={S Ac,
xuất của P có tất cả các biến ’ .
Bài tập về nhà: 3.16 Bài tập: Cho VPPNC G’ với tập sản xuất P’ như sau:
4. GIẢN LƯỢC CÁC VPPNC P’={S bA, A aCa,
4.3. Cách loại ký hiệu không đến B b | được
DA, C DaD, D a}
- Cho VPPNC G’ = (, ’, P’, S) VD: Cho VPPNC G’ với tập sản xuất P’ như sau:
- Cần tìm G”=(”, ”, P”, S) không chứa P’={S Ac,
các ký hiệu không đến được (G” G’).
Giải thuật tính ” và ”: VPPNC G” không chứa ký hiệu không đến được
1) Khởi tạo: ”={S}, ” = và tương đương với VPPNC G’ là:
2) Nếu biến A đã được đưa vào ” và G”=(”, ”, P”, S), trong đó:
A 12|…| n , thì ta đưa mọi biến trong 12, - Tập ” và ” được tính như sau:
…, n vào ” và mọi ký hiệu kết thúc trong + Trước tiên: ”={S}, ” = Trung ương
12, …, n vào ” (lặp lại bước này cho đến
+ Vì S Ac, nên ”={S, A}, ”={c} Tỉnh
khi không thêm được ký hiệu mới vào ”
và ”). + Vì , nên ”={S, A, E}, ”={c, a} Huyện
Giải thuật tính P” : Chỉ đưa vào P” các + Vì, nên ”={c, a, b} Xã
sản xuất của P’ có các biến ” , các ký - Từ đó tính tập P” gồm các sản xuất sau:
hiệu kết thúc ”. P”={S Ac,
P={S BA, A a | aBb | B Abb | }
4. GIẢN LƯỢC CÁC VPPNC
4.4. Loại các – sản xuất (dạng A )
- Nếu L(G) thì ta không thể loại hết được các – sản xuất, nhưng nếu không thuộc L(G), thì có
thể loại hết chúng ra khỏi G theo hai bước sau: (biến A là triệt tiêu được nếu: A )
Giải thuật tính tập triệt tiêu được : VD: Cho VPPNC G có tập sản xuất P như sau:
1) Đưa vào các biến A lấy từ các sản xuất P={SAab, AB, Bb
dạng: A (triệt tiêu trực tiếp). Tìm VPPNC G’ không chứa các – sản xuất:
2) Đưa vào các biến B, sao cho B và mọi - Tính tập triệt tiêu được :
ký hiệu trongđều triệt tiêu được (triệt tiêu + Vì B, C, nên ={B, C}
gián tiếp) (lặp lại bước này). + Vì ABBC, nên ={B, C, A}
Giải thuật tính P’: Nếu A X1X2 … Xn thì - Từ đó tập sản xuất P’ được tính như sau:
đưa vào P’ sản xuất này và các sản xuất là + Từ Bb, ta có BbBb
mọi trường hợp có thể khi cho các Xi về + Từ SAab, ta có SAab
(nếu Xi triệt tiêu được). Nhưng không đưa + Từ ABBC, ta có AB| BC | BB | B | C
vào sản xuất A nếu có. Cuối cùng nếu Vậy tập sản xuất P’ là: P’={S Aab ,
L(G) thì đưa thêm vào P’ sản xuất S . AB| BC | BB | B | C, BbB b, C
4. GIẢN LƯỢC CÁC VPPNC
4.5. Loại các sản xuất đơn (dạng A B)
Chú ý: Sản xuất dạng A , a không phải là sản xuất đơn
- Cho VPPNC G’ = (, , P’, S) VD: Cho VPPNC G’ có tập sản xuất P’ như sau:
- Cần tìm G”=(, , P”, S) không chứa P’={S Aab , AB| BC | BB | B | C,
các sản xuất đơn sao cho G” G’. BbBb, Ca
Giải thuật tính P”: Tìm VPPNC G” không chứa các sản xuất đơn:
1) Đưa vào P” các sản xuất không đơn - Đưa vào P” các sx không đơn trong P’ gồm:
trong P’ S, AB| BC | BB
BbBb, C
2) Nếu có AB và B không là sx đơn - Đưa vào P” các sx mới thay thế cho sx đơn:
+ Vì AB, ta có AbB b
thì đưa vào P” sản xuất: A
+ Vì AC, ta có Aa
Vậy tập sản xuất P’’ là:
P”={S Aab, AB | BC | BB | bBb | a,
BbB b, C
5. DẠNG CHUẨN CHOMSKY
Tập sản xuất chỉ có hai dạng: 1) A BC và 2) A a
VD: Tìm dạng chuẩn Chomsky cho VPPNC - Đưa các sản xuất có độ dài vế phải lớn hơn 2
G với tập sản xuất P={S AB, A bAB | a, về dạng chuẩn Chomsky:
B aBBA | bAa | Ab} + A CbAB được thay bởi A D1B
- Các sản xuất đã ở dạng chuẩn Chomsky là: D1 CbA
S AB, A a + B CaBBA được thay bởi B D2D3
- Đưa các sản xuất chưa ở dạng chuẩn D2 CaB
Chomsky về dạng vế phải chỉ chứa biến:
+ A bAB được thay bởi A CbAB D3 BA
+ B CbACa được thay bởi B D1Ca
Cb b
Vậy tập sản xuất P của VPPNC G được đưa về
+ B aBBA được thay bởi B CaBBA
dạng chuẩn Chomsky là:
Ca a P= {S AB, A D1B | a,
+ B bAa được thay bởi B CbACa B D2D3 | D1Ca | ACb ,
+ B Ab được thay bởi B ACb D1 CbA, D2 CaB, D3 BA , Ca a, Cb b}
CÁC BÀI ÔN TẬP
1 S C 3
B
1 2
SAB Ab BCb bCb bBAb bbAb bbBCb bbbCb bbbab
6. MỘT SỐ BÀI TOÁN QUYẾT ĐỊNH ĐỐI VỚI NNPNC
6.3. Bài toán thành viên
Định lý 3.13: Tồn tại giải thuật để xác định, với một VPPNC bất kỳ
G=(, , P, S) và một xâu bất kỳ x L(G)?
Có nhiều giải thuật cho bài toán thành viên này, sau đây là giải thuật CYK
(Cocke Younger Kasami)
- Giả sử VPPNC G đã ở dạng chuẩn Chomsky và |x| = n ≥ 1
- Gọi xij là xâu con của x tại vị trí i và có độ dài j
VD: với x = abc thì: + với j=1 có: x11 = a, x21 = b, x31 = c
+ với j=2 có: x12 = ab, x22 = bc, x32 = ? Không có
+ với j=3 có: x13 = x1n =abc, x23 = ? Không có
Cho trước độ dài xâu con là j, thì vị trí i của xâu con bị ràng buộc bởi:
1≤i≤n–j+1 (1 ≤ j ≤ n)
ểm tra xem các xâu sau có thuộc
6. L(G)
ôn ngữ MỘT haySỐ BÀI
không: TOÁN
aab, abb, aaaQUYẾT ĐỊNH ĐỐI VỚI NNPNC
6.3. Bài toán thành viên (xij là xâu con tại vị trí i và có độ dài j)
- Gọi ij = {A | A , A xij} Khi đó 1n = {A | A , A x1n=x}
Do vậy: + Nếu S 1n thì kết luận x L(G)
+ Nếu S 1n thì kết luận x L(G) Lập bảng tính các ij , x=bab
b a b
Thí dụ 3.13: Xét VPPNC G đã ở
dạng chuẩn Chomsky như sau: j i 1 2 3