Professional Documents
Culture Documents
S => aAS => aSbAS => aabAS => aabbaS => aabbaa
S
1
a A S
2 3 4
S A a
5 b 6 7 8
a a
9 b 10 11
Cây suy dẫn (tiếp)
Định lý III.2:
Cho G là văn phạm phi ngữ cảnh có một xâu w
được sản sinh bởi G (S=>*Gw ) khi và chỉ khi có một
cây suy dẫn của văn phạm đó mà biên của nó là w.
Chứng minh:
(1) Giả sử có cây suy dẫn biên là w thì có suy dẫn
S=>*w.
(2) Giả sử có suy dẫn S=>*w thì có cây suy dẫn biên là
w.
Suy dẫn trái và suy dẫn phải
Suy dẫn trái: là suy dẫn mà trong đó, ở mỗi
bước, kí hiệu được thay thế luôn luôn là kí hiệu
không kết thúc nằm bên trái nhất trong dạng câu.
Suy dẫn phải:là suy dẫn mà trong đó, ở mỗi
bước, kí hiệu được thay thế luôn luôn là kí hiệu
không kết thúc nằm bên phải nhất trong dạng
câu.
Suy dẫn trái và suy dẫn phải (tiếp)
Ví dụ: Cho văn phạm G với các sản xuất:
S AB
A aA|a
B bB|b
Các dẫn xuất khác nhau cho từ aaabb:
1. S =>AB => aAB => aaAB => aaaB => aaabB => aaabb
2. S => AB => AbB => Abb => aAbb => aaAbb => aaabb
3. S => AB => aAB => aAbB => aAbb => aaAbb => aaabb
4. S => AB => aAB => aaAB => aaAbB => aaabB => aaabb
Dẫn xuất (1) là dẫn xuất trái nhất, (2) là dẫn xuất phải nhất
Các dẫn xuất tuy khác nhau, nhưng có cùng một cây dẫn
xuất
Văn phạm nhập nhằng
Khái niệm: một văn phạm phi ngữ cảnh G được gọi là
văn phạm nhập nhằng (ambiguity) nếu nó có nhiều hơn
một cây dẫn xuất cho cùng một chuỗi w.
Văn phạm nhập nhằng (tiếp)
Một ngôn ngữ có thể được sinh ra từ văn phạm
nhập nhằng hoặc văn phạm không nhập nhằng
Ngôn ngữ được gọi là nhập nhằng (nhập nhằng
cố hữu – không nghiên cứu) nếu mọi văn phạm
sinh ra nó đều nhập nhằng
Văn phạm nhập nhằng (tiếp)
Để giản trừ nhập nhằng: ta đưa vào một số kí hiệu kết thúc
phụ và một vài sản xuất trung gian:
Quy định rằng các phép cộng và nhân luôn được thực
hiện theo thứ tự từ trái sang phải (trừ khi gặp ngoặc đơn)
EE+T|E*T|T
T (E) | a
Quy định rằng khi không có dấu ngoặc đơn ngăn cách thì
phép nhân luôn được thực hiện ưu tiên hơn phép cộng
EE+T|T
TT*F|F
F (E) | a
Biến đổi văn phạm phi ngữ cảnh
Loại bỏ các kí hiệu vô ích
Loại bỏ các sản xuất
Loại bỏ các sản xuất đơn
Loại bỏ kí hiệu vô ích
Định nghĩa: Cho văn phạm G=(,,P,S), đặt
V=. XV là có ích nếu tồn tại suy dẫn:
S=>*Xβ=>*w (, βV*; w* ).
Nếu không thì nó là kí hiệu vô ích
Vậy kí hiệu có ích X là:
Kí hiệu hữu sinh, nghĩa là tồn tại một xâu x*
mà X=>*x
Kí hiệu đến được, nghĩa là tồn tại hai xâu , β
W0=;
Wi=Wi-1{A|ƎWi-1*: AP} (với i>0)
W= Wi (i≥0)
Quá trình bổ sung sẽ dừng vì tập W
Thành lập văn phạm G’=(, ’, P’,S):
’=W ;
AaB| bA| a
BaB| bB
CaA| bS| a }
Tìm văn phạm G’ tương đương không còn kí hiệu vô
sinh
Loại bỏ kí hiệu vô sinh
Lời giải:
W0={a, b}
W1=W0{A, C} (vì có các sản xuất Aa, Ca)
W2=W1{S} (vì có sản xuất SaA)
W3=W2
W={a, b, A, C, S};
G’={, ’, P’, S} trong đó:
’={S, A, C}
P’={SaA| abA, AbA| a, CaA| bS| a}
Loại bỏ các kí hiệu không đến được
Bổ đề III.2 (Loại bỏ các kí hiệu không đến được)
Tồn tại một thuật toán cho phép với mọi văn phạm phi ngữ cảnh G
thành lập một văn phạm phi ngữ cảnh tương đương G’ chỉ có các kí
hiệu đến được.
Thuật toán:
Thành lập tập hợp các kí hiệu đến được:
W ={S}; U =
0 0
W =W {A| ƎBW , Ǝu , u ()*: Bu Au P}
i i-1 i-1 1 2 1 2
U =U {a| ƎBW , Ǝu , u ()*: Bu au P}
i i-1 i-1 1 2 1 2
W=W ; U= U (i≥0)
i i
Thành lập văn phạm G’=(U, W, P’, S) trong đó:
P’={AuP|AW và u(U W)*}
Loại bỏ các kí hiệu không đến được
Ví dụ: Cho G’ ở ví dụ trên, tìm văn phạm G’’ chỉ gồm các
kí hiệu đến được:
W ={S}; U =
0 0
Đặt E ={A|AP}
0
ABB| B
B CC| C| a
C AA| A| b
Loại bỏ các sản xuất đơn
Sản xuất đơn:
Sản xuất đơn là sản xuất có dạng AB (A,
B)
Sản xuất đơn thường làm kéo dài các suy dẫn
TT*F| F
F(E)| a
Aa