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

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

  • Upload
    polly

  • View
    80

  • Download
    0

Embed Size (px)

DESCRIPTION

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;  ()* - PowerPoint PPT Presentation

Citation preview

Chương 3Vă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, vV* thì

tồn tại viV*và kiN (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à X1, 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 nó

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ẫnVí dụ: xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm:

S aAS | aA SbA | SS | ba

Một dẫn xuất của G: S => aAS => aSbAS => aabAS => aabbaS => aabbaa

1

3

6

10

2

5

9

4

7 8

11

S

A

b

b

a

S

a

S

A

a

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 ABA aA|aB 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 | TT (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 | TT T * F | FF (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 , β V* sao cho S=>* Xβ

Loại bỏ kí hiệu vô sinhBổ đề 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:

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 ; P’={AuP|A’, u( ’)*}

Loại bỏ kí hiệu vô sinh Ví dụ: Cho G=(, , P, S) trong đó:

={a, b}; ={S, A, B, C} P={SaA| bAB| abA

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: W0={S}; U0= Wi=Wi-1{A| ƎBWi-1, Ǝu1, u2()*: Bu1Au2P} Ui=Ui-1 {a| ƎBWi-1, Ǝu1, u2()*: Bu1au2P} W=Wi; U= Ui (i≥0)

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: W0={S}; U0= W1= W0{A}; U1=U0 {a, b}

W2=W1; U2=U1

W={S, A}; U={a, b} Văn phạm G’’=({a, b}, {S, A}, P’’, S) trong đó:

P’’={SaA| abA

AbA|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 E0={A|AP}

Ei=Ei-1{A| ƎuEi-1*: AuP} (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 AX1X2…Xn P ta đưa vào P’ tất cả các sản xuất có dạng A12…n trong đó:

(1) Nếu XiE thì i=Xi

(2) Nếu XiE 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:

SABC, ABB|, BCC|a, CAA|bLoạ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à:

SABC| AB| BC| AC| A| B| C 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

nên ta cần loại bỏ

Loại bỏ các sản xuất đơn

Định lý III.6

Cho một văn phạm phi ngữ cảnh G=(, , P, S). Ta có thể thành lập một văn phạm tương đương G’=(, , P’, S) không có các sản xuất đơn.

Thuật toán: Thành lập G’ Cho R là quan hệ trên được định nghĩa là:

ARB khi và chỉ khi ABP Đặt: P’={A| ƎBP, với và AR*B}

(R* là bao đóng phản xạ, bắc cầu của R)

Loại bỏ các sản xuất đơn Ví dụ: Cho văn phạm G:

EE+T| T TT*F| F F(E)| a

Tìm văn phạm G’ không còn sản xuất đơn

Loại bỏ các sản xuất đơn

Ta có: R={(E, T), (T, F)}

R*={(E, E), (T, T), (F, F), (E, T), (T, F), (E, F)} Có EE+T mà E+T, có (E, E)R* suy ra có sản xuất:

EE+T Có T T*F mà T*F, có (T,T), (E,T) R* suy ra có sản xuất:

TT*F và ET*F Có F(E) mà (E), có (F, F), (T, F), (E, F)R* suy ra có sản

xuất:

F(E) và T(E) và E(E) Có Fa mà a, có (F,F), (T,F), (E,F) R* suy ra có sản xuất:

Fa và Ta và Ea

Loại bỏ các sản xuất đơn

Văn phạm tương đương không có sản xuất đơn:

EE+T| T*F| (E)| a

TT*F|(E)| a

F(E)|a

Dạng chuẩn Chomsky Dạng chuẩn Chomsky:

Văn phạm phi ngữ cảnh ở dạng chuẩn Chomsky là văn phạm mà các sản xuất của nó ở một trong hai dạng: ABC Aa

Trong đó: A, B, C, a Định lý III.9

Cho văn phạm phi ngữ cảnh G. Ta có thể thành lập một văn phạm G’ ở dạng chuẩn Chomsky sao cho L(G’)=L(G)

Đưa văn phạm về dạng chuẩn Chomsky

Thuật toán: dựng G’=(, ’, P’, S) tương đương với G Nhặt các sản xuất trong P ở dạng chuẩn Chomsky đưa

vào P’ Các sản xuất còn lại đưa về dạng chuẩn Chomsky:

(1) Nếu có sản xuất AY1Y2…Yk (k>2) thì thay sản xuất đó bằng hai sản xuất AY1A’ và A’Y2…Yk. Lặp lại cho tới khi độ dài vế phải các sản xuất không lớn hơn 2

(2) Nếu có sản xuất mà vế phải độ dài có chứa kí hiệu kết thúc a, ta thêm một kí hiệu không kết thúc Ca, thay sự xuất hiện của a trong sản xuất bằng Ca và thêm sản xuất Caa

Đưa văn phạm về dạng chuẩn Chomsky

Ví dụ: Đưa văn phạm trên về dạng chuẩn ChomskySaAB| BBBAABAB| aB AS| b

Lời giải:B1: Các sản xuất đã ở dạng chuẩn Chomsky

AaBAS| b

B2: Đưa các sản xuất còn lại về dạng chuẩn ChomskySaAB được thay bằng SCAB và CaSCAB được thay bằng SCD và DABSBBBA được thay bằng SBE và EBBAEBBA được thay bằng EBF và FBAABAB được thay bằng ABT và TAB

Đưa văn phạm về dạng chuẩn Chomsky

Ta thu được văn phạm G’=(, ’, P’, S) trong đó: ’={S, A, B, C, D, E, F, T}P’={ SCD| BE

CaDABEBEFBAABT| aTABBAS| b}