1 CHƢƠNG 4 VĂN PHẠM PHI NGỮ CẢNH VÀ ÔTÔMÁT ĐẨY XUỐNG CFG – Context Free Grammar and PDA – Pushdown Automata NỘI DUNG 1 Xuất xứ và định nghĩa của văn phạm phi ngữ cảnh 2 Cây dẫn xuất và sự nhập nhằng t[.]
NỘI DUNG CHƢƠNG 4: VĂN PHẠM PHI NGỮ CẢNH VÀ ÔTÔMÁT ĐẨY XUỐNG CFG – Context-Free Grammar and PDA – Pushdown Automata Xuất xứ định nghĩa văn phạm phi ngữ cảnh Cây dẫn xuất nhập nhằng VPPNC Dạng chuẩn Chomsky (CNF) Dạng chuẩn Greibach (GNF) Định nghĩa Ơtơmát đẩy xuống (PDA) Ngôn ngữ chấp nhận PDA Ôtômát đẩy xuống ngôn ngữ phi ngữ cảnh XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT) Xuất xứ VPPNC việc mô tả ngôn ngữ tự nhiên Hãy trở lại hình chương Nó diễn tả cấu trúc câu “An sinh viên giỏi” Các từ móc nhọn, , , …là phạm trù cú pháp, cho ta vai trò phận hợp thành câu Ta thấy câu đơn sinh qua bước triển khai phạm trù cú pháp theo quy tắc cú pháp sau: sinh viên | An Là < tính từ> giỏi Các quy tắc cú pháp thuộc dạng quy tắc văn phạm phi ngữ cảnh nhà Tin học, với nhu cầu biểu diễn ngơn ngữ lập trình, tìm thấy văn phạm phi ngữ cảnh khn khổ thích hợp Các dạng chuẩn Backus – Naur (BNF) mà nhà Tin học dùng để diễn tả cú pháp ngơn ngữ lập trình cấp cao Chính XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT) XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT) Định nghĩa: Một văn phạm phi ngữ cảnh, viết tắt VPPNC, hệ thống: G = (, , P, S), đó: tập hữu hạn ký hiệu, gọi ký hiệu kết thúc (còn gọi ký hiệu cuối) tập hữu hạn ký hiệu, gọi ký hiệu không kết thúc (hay gọi biến) với = S gọi ký hiệu đầu P tập hữu hạn sản xuất có dạng A với A ( )* Nếu = A biến bắt đầu khơng xuất vế phải luật sinh Vậy VPPNC tương tự văn phạm mà ta nghiên cứu, khác ta thêm hạn chế sản xuất Với sản xuất P, văn phạm G trở nên hệ viết lại sản sinh (V, P) với bảng chữ V = tiên đề S Định nghĩa ngôn ngữ sản sinh văn phạm G là: L(G) = {w | w * S * w} L(G) gọi ngôn ngữ phi ngữ cảnh (NNPNC) Đối với ký hiệu *, cần rõ văn phạm, ta đưa thêm số G *G Hai văn phạm G1 G2 gọi văn phạm tương đương L(G1) = L(G2) Nếu S * ( )* gọi dạng câu XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT) QUY ƢỚC dụ 4.1: Xét VPPNC G = (, , P, S) với = {a, b}, = {S} P = {S aSb, S ab} Nếu ta áp dụng sản xuất đầu n-1 lần, đến sản xuất thứ hai ta có dẫn xuất sau: Ví S aSb aaSbb a3Sb3 … an-1Sbn-1 anbn S aSb S aSb S aSb S ab Như vậy, L(G) = {anbn | n 1} Để tiện cho việc theo dõi, ta quy ước cách viết sau: Biến: dùng chữ in hoa A, B, C, D, E S Ký hiệu kết thúc: dùng chữ thường a, b, c, d, e số Ký hiệu cuối biến: dùng chữ in hoa X, Y, Z Chuỗi ký hiệu kết thúc: dùng chữ thường u, v, w, x, y, z Các chuỗi gồm biến ký hiệu kết thúc: dùng chữ Hy Lạp , , Qui tắc viết gộp vế trái: A A viết gộp A| XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT) CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC Ví dụ 4.2: Cho VPPNC G = (, , P, S) với : = {a, b} = {S, A, B} P={ S aB | bA A aS | bAA | a B bS | aBB | b } Cây dẫn xuất VPPNC G = (, , P, S) đó: Mọi nút có nhãn, ký hiệu thuộc {}, Có nút gốc nhãn S, Nếu nút có nhãn A nút trong, A , Nếu nút n có nhãn A nút n1, n2, …, nk nút n, theo thứ tự từ trái sang phải, mang nhãn X1, X2, …, Xk A X1X2…Xk phải sản xuất P, Nếu nút n mang nhãn , n phải lá, bố Ngơn ngữ L(G) tập chuỗi + có chứa số a số b CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC (TT) Ví dụ 4.3: Cho VPPNC G = ({a, b}, {S, A}, P, S), Trong đó: P= { S aAS | a A SbA | SS | ba } S Ta có dẫn xuất sau: a A S a A b CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC (TT) Các nút xếp từ “trái qua phải” Ta mở rộng thứ tự “từ trái sang phải” cho nút Nếu ta đọc nhãn lá, theo thứ tự từ “trái qua phải” ta có dạng câu gọi kết dẫn xuất Chẳng hạn aabbaa kết dẫn xuất hình Ta gọi dẫn xuất nút với nút bên nó, nhánh nối chúng nhãn kèm theo Nếu nhãn của A, nhãn A gọi A-cây S b 10 a a Kết cây: w = aabbaa 11 12 MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT Định lý 4.1: Cho G = (, , P, S) VPPNC, S * có dẫn xuất G mà kết Ta gọi dẫn xuất bên trái (nói gọn dẫn xuất trái), bước dẫn xuất, biến thay biến nằm bên trái dạng câu Tương tự ta gọi dẫn xuất bên phải (nói gọn dẫn xuất phải), bước dẫn xuất, biến thay biến nằm bên phải dạng câu Mỗi dẫn xuất với kết tương ứng với nhiều dẫn xuất S * Các dẫn xuất có độ dài, chúng khác thứ tự áp dụng sản xuất Trong số dẫn xuất có dẫn xuất bên trái dẫn xuất bên phải S a S A CÂY CON A (A-CÂY) S a b A b a 13 14 MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT Tuy nhiên với xâu L(G), có nhiều dẫn xuất với kết chung Điều có nghĩa xâu phân tích cú pháp theo nhiều cách khác Ta nói VPPNC G nhập nhằng có xâu kết hai dẫn xuất khác G Tuy nhiên nói văn phạm G nhập nhằng có xâu với hai dẫn xuất bên trái (hay hai dẫn xuất bên phải nhất) S * Một ngôn ngữ PNC L gọi ngôn ngữ nhập nhằng cố hữu VPPNC sản sinh L nhập nhằng Ví dụ 4.4: Xét VPPNC G0 cho sản xuất sau: E E + E | E * E | (E) | a Văn phạm cho ta viết biểu thức số học với phép toán + * Cây dẫn xuất sau cho kết a + a * a dẫn xuất trái : E E * E E + E * E a + E * E a + a * E a + a*a dẫn xuất phải nhất: EE*EE*aE+E*aE+a*aa+a*a E E E a 15 + * E a E a 16 MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT (TT) Tuy nhiên ta thấy có dẫn xuất khác với kết a + a * a hình sau: MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT (TT) E E a + E E a * E a Để khắc phục nhập nhằng G0 đó, ta có thể: Phép * ưu tiên phép +: EE+T|T TT*F|F F (E) | a Phép cộng phép nhân thực từ trái sang phải ( trừ gặp vòng đơn) EE+T|E*T|T T (E) | a Điều có nghĩa biểu thức a + a * a hiểu theo hai cách khác nhau: thực cộng trước hay thực phép nhân trước 17 18 GIẢN LƢỢC CÁC VPPNC CÁC KÝ HIỆU VƠ ÍCH Một VPPNC cịn chứa đựng nhiều yếu tố thừa vơ ích, chẳng hạn có ký hiệu khơng thật tham gia vào q trình sinh sản xâu, có sản xuất dạng A B làm kéo dài dẫn xuất cách không cần thiết Vấn đề giản lược VPPNC: Loại bỏ kí hiệu khơng dẫn kí hiệu kết thúc (bổ đề 4.1) Loại bỏ kí hiệu khơng dẫn xuất từ S (bổ đề 4.2) Loại bỏ dẫn xuất đơn dạng A B Loại bỏ qui tác rống dạng A 19 G = (, , P, S) VPPNC Ta nói ký hiệu X có ích có dẫn xuất S * X * w, với , ( )* w * Nếu khơng X vơ ích Như có hai khía cạnh cần phải xem xét ký hiệu có ích: Từ X dẫn xuất xâu ký hiệu cuối (X hữu sinh) X phải xuất xâu dẫn xuất từ S (X đến được) Tuy nhiên hai điều kiện chưa đủ để đảm bảo X có ích 20 CÁC KÝ HIỆU VƠ ÍCH (TT) CÁC KÝ HIỆU VƠ ÍCH (TT) Bổ đề 4.1: (Loại bỏ ký hiệu không dẫn xuất ký hiệu kết thúc): Input: Cho VPPNC G = (, , P, S) với L(G) Output: VPPNC G’ = (, ’, P’, S) tương đương G cho với A ’, có w * A * w (nghĩa biến ’ đến đích) Giải thuật: Duyệt qua sản xuất P kết nạp dần biến vào ’ sau: Nếu A w, với w * A đưa vào ’ Nếu A X1X2…Xn, Xi ký hiệu cuối biến kết nạp vào ’, A đưa vào ’ Cứ thế, ’ thành lập nhờ giải thuật lặp phía sau Vịng lặp dừng P hữu hạn P’ = {A | , ( ’)*} P ( P’ gồm sản xuất P mà ký hiệu thuộc ’ BEGIN cũ = ; mới = {A | A w với w *}; WHILE cũ mới DO BEGIN cũ = mới; mới = cũ {A | A với ( cũ)*}; END ’ = mới END 21 CÁC KÝ HIỆU VƠ ÍCH (TT) 22 CÁC KÝ HIỆU VƠ ÍCH (TT) Bổ đề 4.2: (Loại bỏ ký hiệu vô ích không sinh từ S) Input : Cho VPPNC G = (, , P, S) Output: VPPNC G’ = (’, ’, P’, S) tương đương G cho với X ’ ’ tồn , (’ ’)* S * X (nghĩa biến ’ xuất phát từ S) Giải thuật: Tập ’ ’ thành lập giải thuật lặp sau: Cho S vào ’ Nếu biến A đưa vào ’ A 1 | 2 | …| n kết nạp biến 1, 2, …, n vào ’ ký hiệu kết thúc 1, 2, …, n vào ’ Thủ tục ngừng khơng cịn bổ sung thêm ký hiệu Khi lấy P’ tập sản xuất P chứa ký hiệu ’ ’ 23 Định lý 4.2: Mọi ngôn ngữ PNC không rỗng sản sinh từ VPPNC khơng có ký hiệu vơ ích Ví dụ 4.5: Xét văn phạm có tập luật sinh sau: S AB | a A a Áp dụng bổ đề 4.1, B bị loại với sản xuất S AB Áp dụng bổ đề 4.2 cho hai sản xuất lại Sa A a Ta thấy có S a đến (A bị loại khơng sinh từ S) Vậy văn phạm tương đương khơng có ký hiệu vơ ích G=({a}, {S}, (S a), S) 24 LOẠI BỎ CÁC QUI TẮC RỖNG LOẠI BỎ CÁC QUI TẮC RỖNG (TT) Ta tìm cách loại bỏ sản xuất dạng A , gọi -dẫn xuất Đương nhiên L(G), ta loại hết -dẫn xuất Trường hợp -dẫn xuất thường S Nhưng L(G) loại hết khỏi G Định lý 4.3: Nếu L = L(G) với VPPNC G = (, , P, S), L – {} L(G’) với VPPNC G’ không chứa ký hiệu vô ích -dẫn xuất Giải thuật: xây dựng G’ = (, , P’, S) sau: * Gọi biến A triệt tiêu được, A Có thể xác định ký hiệu triệt tiêu G nhờ giải thuật lặp sau đây: Nếu A A bỏ được, sau B sản xuất mà ký hiệu biết bỏ được, B bỏ được, lặp lại trình khơng bỏ kí hiệu Tập sản xuất P’ thành lập sau: Nếu A X1X2…Xn sản xuất P, ta đưa vào P’ sản xuất có dạng A 12…n, đó: Nếu Xi khơng triệt tiêu được, I = Xi Nếu Xi triệt tiêu i Xi Không cho tất i 25 26 LOẠI BỎ CÁC QUI TẮC RỖNG (TT) CÁC SẢN XUẤT ĐƠN Ví dụ 4.6: Loại - sản xuất văn phạm G sau đây: S AB A aA | B bB | Tập ký hiệu triệt tiêu G {S, A, B} Áp dụng cách thành lập P định lý 4.3: Từ sản xuất S AB, ta có S AB | A | B Từ sản xuất A aA, ta có A aA| a Từ sản xuất B bB, ta có B bB | b Lưu ý văn phạm G’ không sản sinh , G lại sản sinh Vậy để G’ tương đương G, ta bổ sung thêm S vào G’ 27 Ta tìm cách loại trừ sản xuất dạng A B, A B biến; chúng gọi sản xuất đơn Chú ý A a, với a sx đơn Định lý 4.4: Mọi NNPNC không chứa sinh từ VPPNC khơng có ký hiệu vơ ích, - sản xuất, sản xuất đơn Giải thuật: Giả sử L = L(G) với VPPNC G = (, , S, P) L Bởi định lý 4.3 ta giả thiết thêm G khơng có sản xuất Thành lập sản xuất P’ từ P sau: Đưa sản xuất không đơn P vào P’ Nếu A * B với A, B đưa vào P’ sản xuất có dạng A B sản xuất không đơn P 28 ... Một ngôn ngữ PNC L gọi ngôn ngữ nhập nhằng cố hữu VPPNC sản sinh L nhập nhằng Ví dụ 4. 4: Xét VPPNC G0 cho sản xuất sau: E E + E | E * E | (E) | a Văn phạm cho ta viết biểu thức số... (V, P) với bảng chữ V = tiên đề S Định nghĩa ngôn ngữ sản sinh văn phạm G là: L(G) = {w | w * S * w} L(G) gọi ngôn ngữ phi ngữ cảnh (NNPNC) Đối với ký hiệu *, cần rõ văn phạm,... thuật: Duyệt qua sản xuất P kết nạp dần biến vào ’ sau: Nếu A w, với w * A đưa vào ’ Nếu A X1X2…Xn, Xi ký hiệu cuối biến kết nạp vào ’, A đưa vào ’ Cứ thế, ’ thành lập nhờ giải thuật