Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
230,5 KB
Nội dung
Chương Văn phạm phi ngữ cảnh Nội dung Suy dẫn phi ngữ cảnh Cây suy dẫn 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: văn phạm sản xuất có dạng: Aα với A∈∆; α∈ (∑∪∆)* Suy dẫn phi ngữ cảnh: bước áp dụng sản xuất phi ngữ cảnh Một số ví dụ suy dẫn phi ngữ cảnh Ví dụ 1: Trong ngôn ngữ lập trình || A|B|C|…|Z 0|1|2|3|4|5|6|7|8|9 Kí hiệu không kết thúc: , , Kí hiệu kết thúc: A, B, C, …, Z, 0, 1, 2, …, Một số ví dụ suy dẫn phi ngữ cảnh Ví dụ 2: Trong văn phạm tiếng Việt có quy tắc: | bò|mèo|… tôi|nó|… ăn|nằm|… Kí hiệu không kết thúc: , , , , , Kí hiệu kết thúc: “bò”, “mèo”, “tôi”, “nó”, “ăn”, “nằm”… 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) văn phạm phi ngữ cảnh, đặt V= ∑∪∆ Nếu G có suy dẫn u1u2…un=>kG v ui, v∈V* tồn vi∈V*và ki∈N (i=1, 2,…, n) cho: ui=>ki vi Với i=1, 2, …, n v=v1v2 …vn k1+k2+…+kn=k (Chứng minh: lý thuyết ngôn ngữ tính toán – Nguyễn Văn Ba) Cây suy dẫn nhập nhằng Định nghĩa suy dẫn: Trong văn phạm phi ngữ cảnh G=(∑,∆,P,S), Cây suy dẫn mà đỉnh gắn nhãn phần tử thuộc tập ∑∪∆∪{ε} thỏa điều kiện: i Nhãn gốc kí hiệu đầu S ii Nhãn đỉnh kí hiệu không kết thúc Nhãn kí hiệu kết thúc ε iii Với đỉnh có nhãn A có nhãn X 1, X2 …Xk A X1X2Xk sản xuất G iv Nếu có nhãn ε cha Cây suy dẫn (tiếp) Cây tạo thành đỉnh hậu duệ với nhãn cung liên kết chúng Gốc có nhãn A ta gọi A-cây Biên (kết quả) suy dẫn hay A-cây xâu tạo thành cách ghép trật tự từ trái qua phải ta câu gọi kết Ví dụ 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 G: S => aAS => aSbAS => aabAS => aabbaS => aabbaa S a S a A S b b 10 A a 11 a Cây suy dẫn (tiếp) Định lý III.2: Cho G văn phạm phi ngữ cảnh có xâu w sản sinh G (S=>*Gw ) có suy dẫn văn phạm mà biên w Chứng minh: (1) Giả sử có suy dẫn biên w có suy dẫn S=>*w (2) Giả sử có suy dẫn S=>*w có suy dẫn biên w Loại bỏ kí hiệu vô sinh Lời giải: W ={a, b} W =W ∪{A, C} (vì có sản xuất Aa, Ca) W =W ∪{S} (vì có sản xuất SaA) W =W ∪∅ W={a, b, A, C, S}; G’={∑, ∆’, P’, S} đó: ∆’={S, A, C} P’={SaA| abA, AbA| a, CaA| bS| a} Loại bỏ kí hiệu không đến Bổ đề III.2 (Loại bỏ kí hiệu không đến được) Tồn thuật toán cho phép với văn phạm phi ngữ cảnh G thành lập văn phạm phi ngữ cảnh tương đương G’ có kí hiệu đến Thuật toán: Thành lập tập hợp kí hiệu đến được: W ={S}; U =∅ 0 W =W ∪{A∈∆| ƎB∈W , Ǝu , u ∈(∑∪∆)*: Bu Au ∈P} i i-1 i-1 2 U =U i i-1 ∪{a∈∑| ƎB∈Wi-1, Ǝu1, u2∈(∑∪∆)*: Bu 1au 2∈P} W=∪W ; U= ∪U (i≥0) i i Thành lập văn phạm G’=(U, W, P’, S) đó: P’={Au∈P|A∈W u∈(U ∪ W)*} Loại bỏ kí hiệu không đến Ví dụ: Cho G’ ví dụ trên, tìm văn phạm G’’ gồm kí hiệu đến được: W ={S}; U =∅ 0 W = W ∪{A}; U =U ∪{a, b} 1 W =W ; U =U 2 W={S, A}; U={a, b} Văn phạm G’’=({a, b}, {S, A}, P’’, S) đó: P’’={SaA| abA AbA|a} Loại bỏ ε-sản xuất ε -sản xuất: ε-sản xuất sản xuất có dạng Aε Khi xâu ε thuộc ngôn ngữ văn phạm phải chứa ε-sản xuất (thường S ε), ε-sản xuất thừa loại bỏ Định lý III.4: Cho văn phạm G=(∑, ∆, P, S) văn phạm phi ngữ cảnh Ta thành lập văn phạm phi ngữ cảnh G’=(∑, ∆, P’, S) ε-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 kí hiệu không kết thúc sinh xâu rỗng: Đặt E ={A|Aε∈P} Ei=Ei-1∪{A| Ǝu∈Ei-1*: Au∈P} (i>0) E= ∪Ei (i≥0) Thành lập sản xuất P’: Với sản xuất AX X …X ∈P ta đưa vào P’ tất n sản xuất có dạng Aα1α2…αn đó: (1) Nếu Xi∉E αi=Xi (2) Nếu Xi∈E αi=Xi αi= ε Loại bỏ tất ε-sản xuất Loại bỏ ε-sản xuất Ví dụ: Cho văn phạm: SABC, ABB|ε, BCC|a, CAA|b Loại bỏ ε-sản xuất văn phạm 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ỏ sản xuất đơn Sản xuất đơn: Sản xuất đơn sản xuất có dạng AB (A, B∈∆) Sản xuất đơn thường làm kéo dài suy dẫn nên ta cần loại bỏ Loại bỏ sản xuất đơn Định lý III.6 Cho văn phạm phi ngữ cảnh G=(∑, ∆, P, S) Ta thành lập văn phạm tương đương G’=( ∑, ∆, P’, S) sản xuất đơn Thuật toán: Thành lập G’ Cho R quan hệ ∆ định nghĩa là: ARB AB∈P Đặt: P’={Aα| ƎBα∈P, với α∉ ∆ AR*B} (R* bao đóng phản xạ, bắc cầu R) Loại bỏ 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 sản xuất đơn Loại bỏ 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 có sản xuất: EE+T Có T T*F mà T*F∉∆, có (T,T), (E,T) ∈R* suy có sản xuất: TT*F ET*F Có F(E) mà (E)∉∆, có (F, F), (T, F), (E, F)∈R* suy có sản xuất: F(E) T(E) E(E) Có Fa mà a∉∆, có (F,F), (T,F), (E,F) ∈R* suy có sản xuất: Fa Ta Ea Loại bỏ sản xuất đơn Văn phạm tương đương 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 văn phạm mà sản xuất 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 thành lập văn phạm G’ dạng chuẩn Chomsky cho L(G’)=L(G) Đưa văn phạm dạng chuẩn Chomsky Thuật toán: dựng G’=(∑, ∆’, P’, S) tương đương với G Nhặt sản xuất P dạng chuẩn Chomsky đưa vào P’ Các sản xuất lại đưa dạng chuẩn Chomsky: (1) Nếu có sản xuất AY1Y2…Yk (k>2) thay sản xuất hai sản xuất AY1A’ A’Y2…Yk Lặp lại độ dài vế phải sản xuất không lớn (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 kí hiệu không kết thúc Ca, thay xuất a sản xuất Ca thêm sản xuất Caa Đưa văn phạm dạng chuẩn Chomsky Ví dụ: Đưa văn phạm dạng chuẩn Chomsky SaAB| BBBA ABAB| a B AS| b Lời giải: B1: Các sản xuất dạng chuẩn Chomsky Aa BAS| b B2: Đưa sản xuất lại dạng chuẩn Chomsky SaAB thay SCAB Ca SCAB thay SCD DAB SBBBA thay SBE EBBA EBBA thay EBF FBA ABAB thay ABT TAB Đưa văn phạm dạng chuẩn Chomsky Ta thu văn phạm G’=(∑, ∆’, P’, S) đó: ∆’={S, A, B, C, D, E, F, T} P’={ SCD| BE Ca DAB EBE FBA ABT| a TAB BAS| b} [...]... 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. .. đơ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. .. 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 ∈(∑∪∆)*: Bu Au ∈P} i i-1 i-1 1 2 1 2 U =U i i-1 ∪{a∈∑| ƎB∈Wi-1, Ǝu1, u2∈(∑∪∆)*: Bu 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 đó:... ε 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:... 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’={Au∈P|A∈∆’, u∈(∑∪... 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 AB∈P Đặt: P’={Aα| ƎBα∈P, 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. .. đượ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’’={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... 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=∑∪∆ 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... 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: SABC, ABB|ε, BCC|a, CAA|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à: 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... văn phạm về dạng chuẩn Chomsky Ví dụ: Đưa văn phạm trên về dạng chuẩn Chomsky SaAB| BBBA ABAB| a B AS| b Lời giải: B1: Các sản xuất đã ở dạng chuẩn Chomsky Aa BAS| b B2: Đưa các sản xuất còn lại về dạng chuẩn Chomsky SaAB được thay bằng SCAB và Ca SCAB được thay bằng SCD và DAB SBBBA được thay bằng SBE và EBBA EBBA được thay bằng EBF và FBA ABAB được thay bằng ABT và TAB Đưa văn