Tải bản đầy đủ (.ppt) (34 trang)

Văn phạm phi ngữ cảnh

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 (434.99 KB, 34 trang )

Chương 3
Văn phạm phi ngữ cảnh


Nội dung





Suy dẫn phi ngữ cảnh
Cây suy dẫn và sự nhập nhằng
Giản lược văn phạm phi ngữ cảnh
Dạng chuẩn Chomsky


Suy dẫn phi ngữ cảnh




Văn phạm phi ngữ cảnh: là văn phạm trong đó
các sản xuất có dạng:
Aα với A∈∆; α∈ (∑∪∆)*
Suy dẫn phi ngữ cảnh: tại mỗi bước chỉ áp
dụng sản xuất phi ngữ cảnh


Một số ví dụ về suy dẫn phi ngữ cảnh







Ví dụ 1: Trong ngôn ngữ lập trình
<định danh><chữ cái>|<định danh><chữ cái>|
<định danh><chữ số>
<chữ cái> A|B|C|…|Z
<chữ số>0|1|2|3|4|5|6|7|8|9
Kí hiệu không kết thúc: <định danh>, <chữ cái>,
<chữ số>
Kí hiệu kết thúc: A, B, C, …, Z, 0, 1, 2, …, 9


Một số ví dụ về suy dẫn phi ngữ cảnh






Ví dụ 2: Trong văn phạm tiếng Việt có các quy tắc:
<câu><chủ ngữ><vị ngữ>
<chủ ngữ><danh từ>|<đại từ>
<vị ngữ><động từ>
<danh từ>bò|mèo|…
<đại từ>tôi|nó|…
<động từ>ăn|nằm|…
Kí hiệu không kết thúc: <câu>, <chủ ngữ>, <vị ngữ>, <danh từ>,
<đại từ>, <động từ>

Kí hiệu kết thúc: “bò”, “mèo”, “tôi”, “nó”, “ăn”, “nằm”… là các từ
tiếng Việt


Suy dẫn phi ngữ cảnh
Định lý III.1 (định lý phân dã suy dẫn)
Cho G=(∑, ∆, P, S) là văn phạm phi ngữ cảnh, đặt V= ∑∪∆.
Nếu trong G có suy dẫn u1u2…un=>kG v trong đó ui, v∈V* thì
tồn tại vi∈V*và ki∈N (i=1, 2,…, n) sao cho:
ui=>ki vi
Với mọi i=1, 2, …, n
v=v1v2 …vn
k1+k2+…+kn=k
(Chứng minh: lý thuyết ngôn ngữ và tính toán – Nguyễn Văn
Ba)




Cây suy dẫn và sự nhập nhằng


Định nghĩa cây suy dẫn:
Trong văn phạm phi ngữ cảnh G=(∑,∆,P,S), Cây suy dẫn là
cây mà mỗi đỉnh được gắn một nhãn là một phần tử thuộc
tập ∑∪∆∪{ε} và thỏa các điều kiện:
i. Nhãn của gốc là kí hiệu đầu S.
ii. Nhãn của mỗi đỉnh trong là kí hiệu không kết thúc. Nhãn
của mỗi lá là kí hiệu kết thúc hoặc ε.
iii. Với mỗi đỉnh trong có nhãn A và các con có nhãn là X 1,

X2 …Xk thì A X1X2Xk là một sản xuất trong G.
iv. Nếu một lá có nhãn là ε thì lá đó là con duy nhất của cha



Cây suy dẫn (tiếp)




Cây con là một cây tạo thành bởi một đỉnh và mọi
hậu duệ của nó cùng với các nhãn và cung liên
kết chúng. Gốc cây con có nhãn là A ta gọi cây
con đó là A-cây
Biên (kết quả) của một cây suy dẫn hay của một
A-cây là xâu tạo thành bằng cách ghép tiếp các lá
của cây theo trật tự từ trái qua phải ta được một
câu gọi là kết quả.


Ví dụ về cây suy dẫn
Ví dụ: xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm:
S  aAS | a
A  SbA | SS | ba
 Một dẫn xuất của G:
S => aAS => aSbAS => aabAS => aabbaS => aabbaa
S
a
S
a


2

A

1
S
3

5

b 6

9

b 10

4
A
7

a
8
11

a


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)
EE+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
EE+T|T
TT*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=∑∪∆. X∈V 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 α, β
∈V* sao cho S=>* αXβ


Loại bỏ kí hiệu vô sinh
Bổ đề III.1 (Loại bỏ các kí hiệu vô sinh)
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
mà L(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 hữu sinh
Thuật toán:
 Thành lập tập các kí hiệu hữu sinh W:
 W =∑;
0

Wi=Wi-1∪{A∈∆|Ǝα∈Wi-1*: Aα∈P} (với i>0)
 W= ∪ W (i≥0)
i
 Quá trình bổ sung sẽ dừng vì tập W ⊆ ∑∪∆
 Thành lập văn phạm G’=( ∑, ∆’, P’,S):
 ∆’=W∩ ∆;
 P’={Au∈P|A∈∆’, u∈(∑∪ ∆’)*}



Loại bỏ kí hiệu vô sinh


Ví dụ: Cho G=(∑, ∆, P, S) trong đó:
 ∑={a, b}; ∆={S, A, B, C}
 P={SaA| bAB| abA
AaB| bA| a
BaB| bB
CaA| 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:
 W ={a, b}
0
 W =W ∪{A, C} (vì có các sản xuất Aa, Ca)
1
0
 W =W ∪{S} (vì có sản xuất SaA)
2
1
 W =W ∪∅
3
2

 W={a, b, A, C, S};
 G’={∑, ∆’, P’, S} trong đó:
∆’={S, A, C}
P’={SaA| abA, AbA| a, CaA| 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∈∆| ƎB∈W , Ǝu , u ∈(∑∪∆)*: Bu Au ∈P}
i
i-1
i-1
1
2
1
2

 U =U
i
i-1 ∪{a∈∑| ƎB∈Wi-1, Ǝu1, u2∈(∑∪∆)*: Bu 1au 2∈P}
 W=∪W ; U= ∪U (i≥0)
i
i
Thành lập văn phạm G’=(U, W, P’, S) trong đó:
 P’={Au∈P|A∈W 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
 W = W ∪{A}; U =U ∪{a, b}
1
0
1
0
 W =W ; U =U
2
1
2
1
 W={S, A}; U={a, b}
 Văn phạm G’’=({a, b}, {S, A}, P’’, S) trong đó:

P’’={SaA| abA
AbA|a}


Loại bỏ ε-sản xuất




ε -sản xuất:
 ε-sản xuất là các sản xuất có dạng Aε
 Khi xâu ε thuộc ngôn ngữ thì văn phạm phải chứa
ít nhất một ε-sản xuất (thường là S ε), ngoài ra
các ε-sản xuất đều là thừa và có thể loại bỏ
Định lý III.4:
Cho văn phạm G=(∑, ∆, P, S) là một văn phạm phi
ngữ cảnh. Ta có thể thành lập một văn phạm phi ngữ
cảnh G’=(∑, ∆, P’, S) không có ε-sản xuất mà:
L(G’)=L(G)-{ε}


Loại bỏ ε-sản xuất


Thuật toán:
 Thành lập tập hợp các kí hiệu không kết thúc sinh ra xâu rỗng:
 Đặt E ={A|Aε∈P}
0






Ei=Ei-1∪{A| Ǝu∈Ei-1*: Au∈P} (i>0)



E= ∪Ei (i≥0)

Thành lập các sản xuất P’:
 Với mỗi sản xuất AX X …X ∈P ta đưa vào P’ tất cả các
1 2
n
sản xuất có dạng Aα1α2…αn trong đó:
(1) Nếu Xi∉E thì αi=Xi
(2) Nếu Xi∈E thì αi=Xi hoặc αi= ε


Loại bỏ tất cả các ε-sản xuất


Loại bỏ ε-sản xuất
Ví dụ: Cho văn phạm:
SABC, ABB|ε, BCC|a, CAA|b
Loại bỏ các ε-sản xuất của văn phạm trên.
Lời giải:
 E={A, C, B, S}
 Văn phạm G’ tương đương là:
 SABC| AB| BC| AC| A| B| C
 ABB| B

 B CC| C| a
 C AA| A| b



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×