Tiếp nội dung phần 1, Bài giảng Ngôn ngữ hình thức: Phần 2 cung cấp cho người học những kiến thức như: Trình bày các kiến thức cơ bản về: Văn phạm phi ngữ cảnh (CFG); rút gọn văn phạm phi ngữ cảnh; chuẩn hoá văn phạm phi ngữ cảnh; tính chất của văn phạm phi ngữ cảnh; automat đẩy xuống (PDA); sự tương đương của PDA và CFG.
Chương Văn phạm phi ngữ cảnh Automat đẩy xuống Chƣơng VĂN PHẠM PHI NGỮ CẢNH VÀ AUTOMAT ĐẨY XUỐNG (Contexet free Grammar - CFG and push down Automata - PDA) Mục tiêu: Giúp sinh viên có khả năng: - Hiểu đƣợc khái niệm xác định đƣợc thành phần CFG - Nhận dạng đƣợc lớp ngôn ngữ phi ngữ cảnh (CFL) văn phạm CFG sinh tính chất CFL - Xây dựng đƣợc thành phần CFG đặc tả lớp CFL - Hiểu xây dựng đƣợc dẫn xuất dẫn xuất - Rút gọn chuẩn hoá đƣợc CFG - Hiểu đƣợc khái niệm xác định đƣợc thành phần PDA - Xây dựng đƣợc thành phần PDA đốn nhận ngơn ngữ sinh CFG xây dựng đƣợc CFG sinh ngơn ngữ đƣợc đốn nhận PDA Nội dung chính: - Văn phạm phi ngữ cảnh: định nghĩa, dẫn xuất ngôn ngữ dẫn xuất - Rút gọn văn phạm phi ngữ cảnh - Chuẩn hoá văn phạm phi ngữ cảnh - Tính chất CFL - Automat đẩy xuống: định nghĩa, ngơn ngữ đốn nhận PDA - Quan hệ PDA CFG 3.1 Văn phạm phi ngữ cảnh (CFG: Context Free Grammar) Xuất xứ văn phạm phi ngữ cảnh mô tả thông qua ngơn ngữ tự nhiên Ta viết quy tắc cú pháp để diễn tả câu “An sinh viên giỏi“ nhƣ sau: < câu đơn > → < chủ ngữ > < vị ngữ > < chủ ngữ > → < danh từ > < vị ngữ > → < động từ > < bổ ngữ > < bổ ngữ > → < danh từ > < tính từ > 107 Phạm Hùng Phú Chương Văn phạm phi ngữ cảnh Automat đẩy xuống < danh từ > → An < danh từ > → sinh viên < động từ > → < tính từ > → giỏi Các từ cặp dấu < > nhƣ , , , phạm trù cú pháp, cho ta vai trò phận hợp thành câu Ta thấy câu đƣợ sinh qua bƣớc triển khai theo quy tắc cú pháp Đây dạng luật sinh văn phạm phi ngữ cảnh Nhƣ vậy, văn phạm phi ngữ cảnh chọn làm mơ hình cho văn phạm ngôn ngữ tự nhiên Tuy nhiên, khoa học máy tính, với nhu cầu biểu diễn ngơn ngữ lập trình, văn phạm phi ngữ cảnh CFG cịn đƣợc thiết kế thành dạng tƣơng đƣơng gọi văn phạm BNF (Backus - Naur Form) Đây văn phạm CFG với thay đổi nhỏ dạng thức số ký hiệu viết tắt mà nhà khoa học máy tính thƣờng ứng dụng việc diễn tả cú pháp ngơn ngữ lập trình cấp cao (nhƣ ALGOL, PASCAL, ) Trong dạng thức văn phạm BNF, ký hiệu::= đƣợc dùng thay cho ký hiệu → Chẳng hạn, để định nghĩa biểu thức số học (expression) bao gồm danh biểu (identifier) tham gia vào phép toán +, * biểu thức lồng dấu ngoặc đơn , ta viết: ::= + ::= * ::= ( ) ::= Việc nghiên cứu văn phạm phi ngữ cảnh tạo nên sở lý luận vững cho việc biểu diễn ngơn ngữ lập trình, việc tìm kiếm giải thuật phân tích cú pháp vận dụng chƣơng trình dịch cho nhiều ứng dụng khác xử lý xâu Chẳng hạn, hữu ích việc mơ tả biểu thức số học với nhiều dấu ngoặc lồng cấu trúc khối ngơn ngữ lập trình có cấu trúc mà biểu thức quy khơng thể đặc tả đƣợc Văn phạm phi ngữ cảnh tập hợp hữu hạn biến (còn gọi ký hiệu chưa kết thúc), biến biểu diễn ngôn ngữ Ngôn ngữ đƣợc biểu diễn 108 Phạm Hùng Phú Câu hỏi tập chƣơng biến đƣợc mô tả cách đệ quy theo thuật ngữ khái niệm khác gọi ký hiệu kết thúc Quy tắc quan hệ biến ký hiệu kết thúc đƣợc gọi luật sinh Mỗi luật sinh có dạng biến vế trái sinh xâu gồm biến lẫn ký hiệu kết thúc văn phạm 3.1.1 Định nghĩa Văn phạm phi ngữ cảnh (CFG) hệ thống gồm bốn thành phần, ký hiệu G = (N, T, P, S); đó: - N tập hữu hạn ký tự không kết thúc (hay biến) ; - T tập hữu hạn ký tự kết thúc; N T = ∅ ; - P tập hữu hạn luật sinh mà luật sinh có dạng A → α với A N α (N T)*; - S ký tự không kết thúc đặc biệt gọi ký tự bắt đầu văn phạm Ví dụ: Văn phạm phi ngữ cảnh G = (N, T, P, S); đó: N = {S, A, B}; T = {a, b}; S = S; P gồm luật sinh sau: S → AB; A → aA; A → a; B → bB; B → b Quy ƣớc ký hiệu: - Các chữ in hoa A, B, C, D, E, đầu bảng chữ La tinh S ký hiệu cho ký tự không kết thúc (S thƣờng đƣợc dùng làm ký tự bắt đầu ) - Các chữ nhỏ a, b, c, d, e, , chữ số số ký tự khác ký hiệu cho ký tự kết thúc - Các chữ in hoa X, Y, Z ký hiệu cho ký tự kết thúc khơng kết thúc Phạm Hùng Phú 109 Chương Văn phạm phi ngữ cảnh Automat đẩy xuống - Các chữ Hi-Lạp α, β, γ, ký hiệu cho xâu gồm ký tự kết thúc không kết thúc Ta biểu diễn văn phạm cách tóm tắt cách liệt kê luật sinh Nếu A → α ; A → α ; ; A → α luật sinh biến A văn k phạm đó, ta ghi ngắn gọn A → α | α | | α k Ví dụ: Văn phạm cho ví dụ viết gọn là: S → AB; A → aA | a; B → bB | b‟ 3.1.2 Dẫn xuất ngôn ngữ 1) Dẫn xuất Cho văn phạm CFG: G = (N, T, P, S), giả sử luật sinh A → β P xâu αAγ (N T)* với α , β, γ (N T)* Nếu thay ký tự không kết thúc A xâu αAγ xâu β để thu đƣợc xâu αβγ hay cịn nói áp dụng luật sinh A → β vào xâu αAγ để thu đƣợc xâu αβγ; đó, ta nói xâu αAγ dẫn xuất trực tiếp xâu αβγ hay xâu αβγ đƣợc dẫn xuất trực tiếp từ xâu αAγ văn phạm G đƣợc ký hiệu αAγ αβγ G Giả sử α , α , , α xâu thuộc (N T)* với m ≥ m α α ; α α ; …; α G 2 G m -1 α G m ta ký hiệu α * α nói α dẫn xuất (không, nhiều bƣớc) α G m m hay α đƣợc dẫn xuất từ α văn phạm G m Nếu α dẫn xuất α i bƣớc dẫn xuất ta ký hiệu α m i α G m Nếu α dẫn xuất α nhiều bƣớc dẫn xuất ta ký hiệu α + m α G m Chú ý α * α với xâu α α * ; * α * với G G G G xâu α, , 110 Phạm Hùng Phú Câu hỏi tập chƣơng Thơng thƣờng, khơng có nhầm lẫn, ta dùng ký hiệu , *, + i thay cho ký hiệu tƣơng ứng , * , + , i G G G G 2) Ngôn ngữ sinh văn phạm phi ngữ cảnh Cho văn phạm CFG: G = (N, T, P, S), Ngôn ngữ sinh văn phạm phi ngữ * cảnh G L(G) = {w | w T S * w} đƣợc gọi ngôn ngữ phi ngữ cảnh G Nghĩa là, xâu thuộc L(G) nếu: Xâu gồm toàn ký tự kết thúc Xâu đƣợc dẫn xuất từ ký tự bắt đầu S Xâu α gồm ký tự kết thúc ký tự không kết thúc, đƣợc gọi dạng câu sinh từ văn phạm G S * α G Hai văn phạm phi ngữ cảnh G , G đƣợc gọi tƣơng đƣơng L(G ) = L(G ) 2 Ví dụ: Xét văn phạm CLG: G = (N, T, P, S), đó: N = {S}; T = {a, b}; P = {S → aSb, S → ab} Bằng cách áp dụng luật sinh thứ n-1 lần luật sinh thứ hai lần, ta có: 3 n-1 n-1 S aSb aaSbb a Sb a b n n a b n n n n Vậy, L(G) chứa xâu có dạng a b với n ≥ 1; hay L(G) = {a b | n ≥ 1} Xét văn phạm CLG: G‟ = (N‟, T, P‟, S), đó: N‟ = {S, A}; T = {a, b}; P‟ = {S → aAb; A → aAb; A → } Bằng cách áp dụng luật sinh thứ lần, luật sinh thứ hai n -1 lần luật sinh thứ ba lần , ta có: 3 n-1 n-1 S aAb aaAbb a Ab a Ab n n n n n n a Ab a b n n Vậy, L(G‟) chứa xâu có dạng a b với n ≥ 1; hay L(G‟) = {a b | n ≥ 1} Và ta có L(G) =L(G‟) nên hai văn phạm phi ngữ cảnh tƣơng đƣơng 3.1.3 Cây dẫn xuất Để hình dung cách trực quan việc sinh xâu văn phạm phi ngữ cảnh, ngƣời ta thƣờng diễn tả dãy dẫn xuất qua hình ảnh Một cách hình thức, ta định nghĩa dẫn xuất nhƣ sau: 1) Định nghĩa Phạm Hùng Phú 111 Chương Văn phạm phi ngữ cảnh Automat đẩy xuống Cho văn phạm CFG: G = (N, T, P, S) Cây dẫn xuất (hay phân tích cú pháp) G đƣợc định nghĩa nhƣ sau: Mỗi nút có nhãn, ký tự (N T{ε}) Nút gốc có nhãn ký tự bắt đầu S Nếu nút (trung gian) có nhãn A A N Nếu nút n có nhãn A nút n , n , , n n theo thứ tự từ trái k sang phải có nhãn lần lƣợt X , X , , X A → X X X luật sinh k k tập luật sinh P Nếu nút n có nhãn từ rỗng ε n phải nút nút nút cha 2) Ví dụ: a) Cho văn phạm G = ({S, A}, {a, b}, P, S), P gồm: S → aAS | a; A → SbA | SS | ba Một dẫn xuất từ văn phạm có dạng nhƣ sau: S S a A S a A b b a a Hình 3.1 Cây dẫn xuất từ văn phạm Ta thấy, nút có nhãn S lần lƣợt a, A, S (chú ý S → aAS luật sinh) Tƣơng tự, nút có nhãn A S, b, A (từ luật sinh A → SbA) Nút 4, có nhãn S có nút nhãn a (luật sinh S → a) Cuối nút có nhãn A có nút b, a (luật sinh A → ba) Trên dẫn xuất, ta đọc theo thứ tự từ “trái sang phải“ ta có dạng câu G Ta gọi xâu xâu sinh dẫn xuất 112 Phạm Hùng Phú Câu hỏi tập chƣơng Một (subtree) dẫn xuất có nút gốc nhãn A đƣợc gọi A-cây (hoặc A-cây) Cây giống nhƣ dẫn xuất, khác nhãn nút gốc không thiết phải ký tự bắt đầu S b) Xét văn phạm dẫn xuất Đọc theo thứ tự từ trái sang phải ta có xâu aabbaa Trong trƣờng hợp này, tất ký tự kết thúc Tuy nhiên, nói chung khơng bắt buộc nhƣ thế; có nhãn ε biến Ta thấy dẫn xuất S * aabbaa dãy dẫn xuất: S aAS aSbAS aabAS aabbaS aabbaa A-cây (nút 3) nhãn nút gốc A tạo xâu abba theo dãy dẫn xuất: A SbA abA abba 3.1.4 Quan hệ dẫn xuất dẫn xuất 1) Định lý Cho G = (N, T, P, S) văn phạm phi ngữ cảnh S * α tồn dẫn xuất văn phạm G sinh α từ S Chứng minh: Ta chứng minh với biến A bất kỳ, A * α có A-cây sinh α - Đảo: Giả sử α đƣợc sinh A-cây, ta chứng minh quy nạp theo số nút dẫn xuất A * α Nếu A có số nút phải có dạng nhƣ hình sau: Khi X X X xâu α A → α luật sinh P theo định nghĩa n dẫn xuất S X1 X2 Xn Hình 3.2(a) A-cây với nút Giả sử kết tới số nút k -1 ( k > 1) Ta chứng minh kết với số nút k Phạm Hùng Phú 113 Chương Văn phạm phi ngữ cảnh Automat đẩy xuống Xét α đƣợc sinh A-cây có số nút k Rõ ràng nút nút gốc tất lá, ta gọi chúng từ trái sang phải X , X , , X n chắn A → X X X luật sinh Xét nút X bất kỳ: n i + Nếu X khơng nút X phải biến X - sinh i i i xâu α i + Nếu X nút lá, ta đặt α = X Dễ thấy j < i α bên trái α , i i i j j xâu đọc từ có dạng α = α α α Mỗi X - phải có nút n i ban đầu, theo giả thiết quy nạp, với đỉnh i khơng phải X * α i i Vậy A X X X * α X X * α α X X * * α α α = α n n n n Hay ta có A * α Chú ý nhiều cách dẫn xuất α - Thuận: giả sử A * α , ta cần A - sinh α Nếu A * α bƣớc dẫn xuất A → α luật sinh P có dẫn xuất sinh α nhƣ hình Giả sử kết tới k-1 bƣớc dẫn xuất Xét A * α k bƣớc dẫn xuất, gọi bƣớc A → X X X n Rõ ràng, ký tự α phải đƣợc dẫn từ biến X Vì vậy, ta i viết α = α α α , ≤ i ≤ n thoả mãn: n + α = X X ký tự kết thúc i i i + X * α X biến (ký tự không kết thúc) i i i Nếu X biến dẫn xuất α từ X phải có k bƣớc Vì vậy, theo giả i i i thiết quy nạp ta có X - sinh α , đặt T i i i Bây ta dựng A - có n X X X Mỗi X không ký tự kết thúc ta n i thay T tƣơng ứng Cuối cùng, ta có dẫn xuất sinh có dạng nhƣ sau: i 114 Phạm Hùng Phú Câu hỏi tập chƣơng S X1 X2 X3 T2 T3 Xn-1 Xn Tn Hình 3.2(b) A-cây 2) Ví dụ: Xét dãy dẫn xuất S * aabbaa văn phạm Bƣớc dẫn xuất S aAS Theo dõi bƣớc suy dẫn sau đó, ta thấy biến A đƣợc thay SbA, trở thành abA cuối thành abba, kết T (A - cây) Cịn biến S đƣợc thay a kết T (S -cây) Ghép nối lại, ta đƣợc dẫn xuất mà kết xâu aabbaa a S A S S S S b A a T2 T3 b Cây T2 a Cây T3 Hình 3.3 Ghép nối dẫn xuất 3.1.5 Dẫn xuất trái nhất, dẫn xuất phải 1) Định nghĩa Nếu bƣớc dẫn xuất, luật sinh đƣợc áp dụng vào biến bên trái ta gọi dẫn xuất trái (leftmost - lm) hay dẫn xuất trái Tƣơng tự, biến bên phải đƣợc thay bƣớc dẫn xuất dẫn xuất phải (rightmost - rm) hay dẫn xuất phải Nếu xâu w L(G) với CFG G w có dẫn xuất tƣơng ứng với này, w có dẫn xuất trái Phạm Hùng Phú 115 Chương Văn phạm phi ngữ cảnh Automat đẩy xuống dẫn xuất phải Dĩ nhiên, w có nhiều dẫn xuất trái (phải) có nhiều dẫn xuất 2) Ví dụ: Xét dẫn xuất hình 3.1 - Dẫn xuất trái cây: S aAS aSbAS aabAS aabbaS aabbaa -Dẫn xuất phải tƣơng ứng là: S aAS aAa aSbAa aSbbaa aabbaa 3.1.6 Văn phạm nhập nhằng (mơ hồ) 1) Định nghĩa Một văn phạm phi ngữ cảnh G có nhiều dẫn xuất trái hay phải cho xâu w G đƣợc gọi văn phạm nhập nhằng (ambiguity) Dĩ nhiên, nói văn phạm G nhập nhằng có xâu w đƣợc dẫn từ ký tự bắt đầu S với hai dẫn xuất trái hai dẫn xuất phải 2) Ví dụ Xét văn phạm phi ngữ cảnh G với luật sinh nhƣ sau: E→E+E|E*E|(E)|a Văn phạm sinh xâu biểu thức số học với phép toán + * Xét xâu a + a * a , xâu có hai dẫn xuất trái là: E E + E a + E a + E * E a + a * E a + a * a E E * E E + E *E a + E * E a + a * E a + a * a Và có hai dẫn xuất trái tƣơng ứng là: E E E E + a E E * a a E E * E E + a a a a) b) Hình 3.4 Hai dẫn xuất trái cho xâu 116 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn c) Loại bỏ luật sinh ε - Áp dụng giải thuật loại bỏ luật sinh ε, ta có tập biến rỗng: Bƣớc Giải thích R-Nullable KT {A, C} A → ε; C → ε {S, A, B, C} S → A; B → C {S, A, B, C} S → A; B → C Tập biến rỗng Nullable = {S, A, B, C} - Tập luật sinh P”: S → A| AcBC| cBC | AcC | AcB| cC| Ac| cB| c | ε; A → B; B → bCA | bA | bC | b|C |a; C → ABc | Bc | Ac | c | b Vì L(G) nên phải bổ sung thêm luật sinh S → ε vào P” d) Loại bỏ luật sinh đơn vị Áp dụng giải thuật loại bỏ luật sinh đơn vị, ta có G‟1 = (N‟1, T‟1, P‟1, S‟1): - N‟1 = {S, A, B, C}; T‟1 = {a, b, c} ; S‟1 = S ; P‟1: S → AcBC| cBC | AcC | AcB| cC| Ac| cB| c | ε; B → bCA | bA | bC | b | a; C → ABc | Bc | Ac | c | b - Δ = {A, B, C}; Δ = {B, C}; Δ = {C}; Δ = S A B C - Với biến S, phải thêm vào P‟1 luật sinh S → bCA | bA | bC | b | a | ABc | Bc | Ac | c | b; - Với biến A, phải thêm vào P‟1 luật sinh A → bCA | bA | bC | b | a | ABc | Bc | Ac | c | b; - Với biến B, phải thêm vào P‟1 luật sinh B → ABc | Bc | Ac | c | b; Vậy tập luật sinh P‟1, theo giải thuật chứa luật sinh không luật sinh đơn vị P1, bổ sung thêm luật sinh thay cho luật sinh đơn vị nhƣ sau: P‟1: S → bCA | bA | bC | b | a | ABc | Bc | Ac | c | b | AcBC| cBC | AcC | AcB| cC| Ac| cB| c | ε; 232 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn A → bCA | bA | bC | b | a | ABc | Bc | Ac | c | b; B → bCA | bA | bC | b | a | ABc | Bc | Ac | c | b; C → ABc | Bc | Ac | c | b 3.37 1) S → bA | aB; A → bAA | aS | a; B → aBB | bS | b Văn phạm luật sinh đơn vị Thay luật sinh có độ dài vế phải lớn chứa kí tự kết thúc S → CbA | CaB; A → CbAA | CaS | a; B → CaBB | CbS | b; Ca → a; Cb → b Thay luật sinh có độ dài vế phải lớn biến S → CbA | CaB; A → CbD | CaS | a; B → CaE| CbS | b; Ca → a; Cb → b; D → AA; E →BB 2) S → 0S1 | 01 Thực tƣơng tự câu 1, ta thu đƣợc: S → C0A | C0 C1; C0 →0; C1→1; A → SC1 3) S → aAB | BA; A → BBB| a; B → AS| b Thực tƣơng tự câu 1, ta thu đƣợc: S → Ca C | BA; A → BD| a; B → AS| b; Ca → a; C → AB; D →BB 4) S → adAda | aSa | aca; A → bAb | bdSdb Thực tƣơng tự câu 1, ta thu đƣợc: S → CaD1 | CaA1 | CaB1; A → CbA2 | Cb E1 ; Ca → a; Cb → b; Cc → c; Cd → d; D1 → CdD2 ; D2 → AD3; D3 → CdCa; A1 → SCa ; B1→ CcCa; A2 → ACb; E1→ CdE2; E2→ SE3; E3→ CdCb 3.38 1) S → AA | 0; A → SS | Bước 1: G thỏa mãn dạng chuẩn CNF sinh CFL không chứa ε Bước 2: Ta có N = {S, A} = {A , A } nên có tập luật sinh tƣơng ứng: A → A A | 0; A → A A | 1 2 1 Bước 3: Thay luật sinh cho A → A γ luật sinh j > i i Phạm Hùng Phú j 233 Lời giải tóm tắt hƣớng dẫn Trong tập luật sinh, luật sinh cho A thỏa điều kiện j > i Chỉ có luật sinh A → A A cần biến đổi Ta lại có A → A A | 0, nên ta thay luật sinh 1 2 A → A A A | 0A A → A A A | 0A | 2 1 2 1 Sau đó, loại bỏ đệ quy trái trực tiếp cho A luật sinh, ta đƣợc tập luật sinh có dạng nhƣ sau: A → 0A | | 0A B | 1B ; 1 B → A A | A A B 2 Do đó, văn phạm có tập luật sinh: A → A A | 0; 2 A → 0A | | 0A B | 1B; 1 B → A A | A A B 2 Bước 4: Thay A -luật sinh dạng chuẩn i Ta có, tất A - luật sinh có dạng chuẩn Thay A - luật sinh, ta thu đƣợc tập luật sinh nhƣ sau: A → 0A A | 1A | 0A BA | 1BA | 0; 1 2 2 A → 0A | | 0A B | 1B; 1 B → A A | A A B 2 Bước 5: Thay B - luật sinh dạng chuẩn B → 0A A | 1A | 0A BA | 1BA | 0A A B | 1A B | 0A B A B | 1BA B 1 1 1 1 1 1 Cuối cùng, ta thu đƣợc văn phạm có dạng GNF với luật sinh A → 0A A | 1A | 0A BA | 1BA | 0; 1 2 2 A → 0A | | 0A B | 1B; 1 B → 0A A | 1A | 0A BA | 1BA | 0A A B | 1A B | 0A B A B | 1BA B 1 1 1 1 1 1 2) G = ( {A , A , A }, {a, b}, P, A ) với luật sinh P: A → A A ; A → A A | b; A → A A | a 3 Bước 1: G thỏa mãn dạng chuẩn CNF sinh CFL không chứa ε 234 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn Bước 2: Ta có N = {A , A , A } Bước 3: Thay luật sinh cho A → A γ luật sinh j > i i j Trong tập luật sinh, luật sinh cho A A thỏa điều kiện j > i Chỉ có luật sinh A → A A cần biến đổi Ta lại có A → A A , nên ta thay luật sinh 2 A → A A A Ta lại có A → A A | b, nên ta thay luật sinh 3 2 A → A A A A | bA A A → A A A A | bA A | a 3 3 3 Sau đó, loại bỏ đệ quy trái trực tiếp cho A luật sinh, ta đƣợc tập luật sinh có dạng nhƣ sau: A → bA A | a | bA A B | aB; 3 B → A A A | A A A B 3 Do đó, văn phạm có tập luật sinh: A →A A ; A → A A | b; A → bA A | a | bA A B | aB; 3 B → A A A | A A A B 3 Bước 4: Thay A - luật sinh dạng chuẩn i Ta có, tất A - luật sinh có dạng chuẩn Thay A , A - luật sinh; ta thu đƣợc tập luật sinh nhƣ sau: A → bA A A A | aA A | bA A BA A | aBA A | bA ; 3 3 3 A → bA A A | aA | bA A BA | aBA | b; 1 1 A → bA A | a | bA A B | aB; 3 B → A A A | A A A B 3 Bước 5: Thay B - luật sinh dạng chuẩn Phạm Hùng Phú 235 Lời giải tóm tắt hƣớng dẫn B → bA A A A A A | aA A A A | bA A BA A A A | aBA A A A | 3 3 3 3 3 bA A A | bA A A A A A B | aA A A A B | bA A BA A A A B | aBA A A A B | 3 3 3 3 3 3 bA A A B 3 Cuối cùng, ta thu đƣợc văn phạm có dạng GNF với luật sinh A → bA A A A | aA A | bA A BA A | aBA A | bA ; 3 3 3 A → bA A A | aA | bA A BA | aBA | b; 1 1 A → bA A | a | bA A B | aB; 3 B → bA A A A A A | aA A A A | bA A BA A A A | aBA A A A | 3 3 3 3 3 bA A A | bA A A A A A B | aA A A A B | bA A BA A A A B | aBA A A A B | 3 3 3 3 3 3 bA A A B 3 3) G = ( {A , A , A , A }, {a, b}, P, A ) với luật sinh: A → A A | A A ; A → A A | a; A → A A | b; A → A A | a 3 3 4 Bước 1: G thỏa mãn dạng chuẩn CNF sinh CFL khơng chứa ε Bước 2: Ta có N = {A , A , A , A } Bước 3: Thay luật sinh cho A → A γ luật sinh j > i i j Trong tập luật sinh, luật sinh cho A , A A thỏa điều kiện j > i Chỉ có luật sinh A → A A cần biến đổi Ta lại có A → A A | a, nên ta thay luật sinh 3 A → A A A | aA Ta lại có A → A A | b, nên ta thay luật sinh 3 3 4 A → A A A A | bA A | aA 4 3 Sau đó, loại bỏ đệ quy trái trực tiếp cho A luật sinh, ta đƣợc tập luật sinh có dạng nhƣ sau: A → bA A | aA | bA A B | aA B; 3 3 B → A A A | A A A B 4 Do đó, văn phạm có tập luật sinh: A →A A |A A ; 236 3 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn A → A A | a; A → A A | b; 4 A → bA A | aA | bA A B | aA B; 3 3 B → A A A | A A A B 4 Bước 4: Thay A - luật sinh dạng chuẩn i Ta có, tất A - luật sinh có dạng chuẩn Thay A , A , A - luật sinh; ta thu đƣợc tập luật sinh nhƣ sau: A → bA A A A A | aA A A A | bA A BA A A | aA BA A A | bA A | 3 3 3 3 aA | bA A A A | aA A A | bA A BA A | aA BA A | bA ; 3 4 4 4 4 A → bA A A A | aA A A | bA A BA A | aA BA A | bA | a 2 4 2 4 2 A → bA A A | aA A | bA A BA | aA BA | b; 3 4 4 A → bA A | aA | bA A B | aA B; 3 3 B → A A A | A A A B 4 Bước 5: Thay B - luật sinh dạng chuẩn B → bA A A A | aA A A | bA A BA A | aA BA A | bA A A A B| 3 3 3 3 3 aA A A B | bA A BA A B | aA BA A B 3 3 3 Cuối cùng, ta thu đƣợc văn phạm có dạng GNF với luật sinh A → bA A A A A | aA A A A | bA A BA A A | aA BA A A | bA A | 3 3 3 3 aA | bA A A A | aA A A | bA A BA A | aA BA A | bA ; 3 4 4 4 4 A → bA A A A | aA A A | bA A BA A | aA BA A | bA | a 2 4 2 4 2 A → bA A A | aA A | bA A BA | aA BA | b; 3 4 4 A → bA A | aA | bA A B | aA B; 3 3 B → bA A A A | aA A A | bA A BA A | aA BA A | bA A A A B| 3 3 3 3 3 aA A A B | bA A BA A B | aA BA A B 3 3 3 3.39 1) - G = (N, T, P, S): Phạm Hùng Phú 237 Lời giải tóm tắt hƣớng dẫn N = {S, A, B}; T = {0, 1}; S = S; P: S → BA | 0; A → SS | 1; B → AB | | - G dạng chuẩn Chomsky 2) Biến đổi văn phạm dạng chuẩn GREIBACH Bước 1: G thỏa mãn dạng chuẩn CNF sinh CFL khơng chứa ε Bước 2: Ta có N = {S, A, B} = {A , A , A } nên có tập luật sinh tƣơng ứng: A → A A | 0; A → A A | 1; A → A A | | 1 2 1 3 Bước 3: Thay luật sinh cho A → A γ luật sinh j > i i j Trong tập luật sinh, luật sinh cho A thỏa điều kiện j > i Chỉ có luật sinh A → A A A → A A cần biến đổi 1 3 Trƣớc hết biến đổi luật sinh A → A A |1, ta đƣợc A → A A A | 0A |1 1 1 Biến đổi luật sinh A → A A | | 1, ta đƣợc 3 A → A A A A | 0A A |1A | | 3 3 Sau đó, loại bỏ đệ quy trái trực tiếp cho A luật sinh, ta đƣợc tập luật sinh có dạng nhƣ sau: A → 0A A |1A | | 1| 0A A B |1A B | 0B | 1B; 3 3 B → A A A | A A A B 3 Do đó, văn phạm có tập luật sinh: A → A A | 0; A → A A A | 0A |1; 1 A → 0A A |1A | | 1| 0A A B |1A B | 0B | 1B; 3 3 B → A A A | A A A B 3 Bước 4: Thay A - luật sinh dạng chuẩn i Ta có, tất A - luật sinh có dạng chuẩn Thay A , A - luật sinh; ta thu đƣợc tập luật sinh nhƣ sau: A → 0A A A |1A A | 0A | 1A | 0A A BA |1A BA | 0BA | 1BA | 0; 238 3 2 3 2 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn A → 0A A A A |1A A A | 0A A | 1A A | 0A A BA A |1A BA A | 0B 3 2 1 3 A A | 1BA A | 0A |1; 2 1 A → 0A A |1A | | 1| 0A A B |1A B | 0B | 1B; 3 3 B → A A A | A A A B 3 Bước 5: Thay B - luật sinh dạng chuẩn B → 0A A A A A A |1A A A A A | 0A A A A | 1A A A A | 1 3 1 1 1 0A A BA A A A | 1A BA A A A | 0B A A A A | 1BA A A A | 1 3 1 1 1 0A A A |1A A |0A A A A A A B |1A A A A A B | 0A A A A B| 1 3 1 3 1 1 1A A A A B | 0A A BA A A A B | 1A BA A A A B | 0B A A A A B| 1 3 1 3 1 1 1BA A A A B | 0A A A B |1A A B 1 1 3 Cuối cùng, ta thu đƣợc văn phạm có dạng GNF với luật sinh A → 0A A A |1A A | 0A | 1A | 0A A BA |1A BA | 0BA | 1BA | 0; 1 3 2 3 2 A → 0A A A A |1A A A | 0A A | 1A A | 0A A BA A |1A BA A | 3 2 1 3 0B A A | 1BA A | 0A |1; 2 1 A → 0A A |1A | | 1| 0A A B |1A B | 0B | 1B; 3 3 B → 0A A A A A A |1A A A A A | 0A A A A | 1A A A A | 1 3 1 1 1 0A A BA A A A | 1A BA A A A | 0B A A A A | 1BA A A A | 1 3 1 1 1 0A A A |1A A |0A A A A A A B |1A A A A A B | 0A A A A B| 1 3 1 3 1 1 1A A A A B | 0A A BA A A A B | 1A BA A A A B | 0B A A A A B| 1 3 1 3 1 1 1BA A A A B | 0A A A B |1A A B 1 1 3 3.40 - w = aaaabbbbbb (q , aaaabbbbbb, Z0) ⊢ (q , aaabbbbbb, XXX) ⊢ (q , aabbbbbb, XXXX) ⊢ 0 (q , abbbbbb, XXXXX) ⊢ (q , bbbbbb, XXXXXX) ⊢ (q , bbbbb, XXXXX) 0 ⊢ (q , bbbb, XXXX) ⊢ (q , bbb, XXX) ⊢ (q , bb, XX) ⊢ (q , b, X) ⊢ (q , , Y) Phạm Hùng Phú 1 239 Lời giải tóm tắt hƣớng dẫn ⊢ (q , , ) w L(M) đƣợc đoán nhận stack rỗng - aabbb (q , aabbb, Z0) ⊢ (q , abbb, XXX) ⊢ (q , bbb, XXXX) ⊢ 0 (q , bb, XXX) ⊢ (q , b, XX) ⊢ (q , , X): Không chấp nhận 1 ┬ ┬ (q , b, YXX): Không chấp nhận (q , b, YX): Không chấp nhận 2 3.41 - w = aaaabbbbbb (q , aaaabbbbbb, Z0) ⊢ (q , aaabbbbbb, XXX) ⊢ (q , aabbbbbb, XXXX) ⊢ 0 (q , abbbbbb, XXXXX) ⊢ (q , bbbbbb, XXXXXX) ⊢ (q , bbbbb, XXXXX) ⊢ 0 (q , bbbb, XXXX) ⊢ (q , bbb, XXX) ⊢ (q , bb, XX) ⊢ (q , b, X) ⊢ 1 1 (q , , Y) w L(M) đƣợc đoán nhận trạng thái kết thúc - w = aabbb (tƣơng tự - tự làm) 3.42 Sử dụng ứng dụng bổ đề Bơm văn phạm phi ngữ cảnh để chứng minh (tƣơng tự ví dụ 1) 3.43 Viết hai thủ tục, sử dụng giải thuật: - Loại bỏ biến không sinh xâu ký tự kết thúc; - Loại bỏ ký hiệu không đƣợc sinh từ ký tự bắt đầu 3.44 Viết hai thủ tục, sử dụng giải thuật: - Loại bỏ luật sinh ; - Loại bỏ luật sinh đơn vị 3.45 Viết thủ tục, sử dụng giải thuật: biến đổi CFG CNF 3.46 Viết hai thủ tục, sử dụng giải thuật: - Biến đổi CFG CNF - Biến đổi CFG GNF 3.47 1) S → +SS | *SS | a Ta có: CFG G = (N, T, P, S); N = {S}; T = {+, *, a}; S = S; P: S → +SS | *SS | a 240 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn PDA tƣơng đƣơng M = : 0 - Q = {q}; - Σ = {+, *, a}; - Γ = {S}; - q = q; - Z = S; - δ: δ (q, +, S) = (q, SS) S → +SS; δ (q, *, S) = (q, SS) S → *SS; δ (q, a, S) = (q, ) S → a 2) S → aS | bS | aA; A → bB| b; B → aC; C → b Ta có: CFG G = (N, T, P, S); N = {S, A, B, C}; T = {a, b}; S = S; P: S → aS | bS | aA; A → bB| b; B → aC; C → b PDA tƣơng đƣơng M = : 0 - Q = {q}; - Σ = {a, b}; - Γ = {{S, A, B, C}; - q = q; - Z = S; - δ: δ (q, a, S) = {(q, S), (q, A)} S → aS | aA; δ (q, b, S) = (q, S) S → bS; δ (q, a, B) = (q, C) B → aC; δ (q, b, C) = (q, ) C → b n n 3.48 1) Tập hợp {a b | n ≥ 0} - Đƣa văn phạm phi ngữ cảnh G sinh ngôn ngữ (xem tập trƣớc); - Chuyển G dạng chuẩn Greibach; - Áp dụng giải thuật xây dựng PDA biết CFG Phạm Hùng Phú 241 Lời giải tóm tắt hƣớng dẫn m n 2) Tập hợp {a b | m, n > 0} - Đƣa văn phạm phi ngữ cảnh G sinh ngôn ngữ (xem tập trƣớc); - Chuyển G dạng chuẩn Greibach; - Áp dụng giải thuật xây dựng PDA biết CFG i j 3) Tập hợp {a ca | i, j ≥ 0} - Đƣa văn phạm phi ngữ cảnh G sinh ngôn ngữ (xem tập trƣớc); - Chuyển G dạng chuẩn Greibach; - Áp dụng giải thuật xây dựng PDA biết CFG m m n 4) {0 | m, n ≥ 1} - Đƣa văn phạm phi ngữ cảnh G sinh ngôn ngữ (xem tập trƣớc); - Chuyển G dạng chuẩn Greibach; - Áp dụng giải thuật xây dựng PDA biết CFG m m n n 5) { a b c d | m, n ≥ 0} - Đƣa văn phạm phi ngữ cảnh G sinh ngôn ngữ (xem tập trƣớc); - Chuyển G dạng chuẩn Greibach; - Áp dụng giải thuật xây dựng PDA biết CFG 3.49 1) G = (N, T, P, S): - N = { S, [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], 0 1 1 [q , Z , q ], [q , Z , q ], [q , Z , q ], [q , Z , q ]}; 0 0 1 0 1 - T = {0, 1}; - S = S (ký tự thêm vào) - Tập luật sinh P chứa luật sinh có dạng: + S → [q , Z , q ] | [q , Z , q ]; 0 0 Các luật sinh cho biến khác N đƣợc xây dựng từ hàm chuyển PDA nhƣ sau: - Vì δ(q , 1, Z ) = {(q , XZ )} nên 0 0 + [q , Z , q ] → [q , X, q ][q , Z , q ] | [q , X, q ][q , Z , q ]; 0 0 0 0 1 0 + [q , Z , q ] → [q , X, q ][q , Z , q ] | [q , X, q ][q , Z , q ] 0 0 0 1 1 - Vì δ(q , 1, X) = {(q , XX)} nên 242 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn + [q , X, q ] → 1[q , X, q ][q , X, q ] | 1[q , X, q ][q , X, q ]; 0 0 0 1 + [q , X, q ] → 1[q , X, q ][q , X, q ] | 1[q , X, q ][q , X, q ] 0 1 1 - Vì δ(q , 1, X) = {(q , ε)} nên [q , X, q ] → 1 - Vì δ(q , 1, X) = {(q , ε)} nên [q , X, q ] → 1 1 - Vì δ(q , ε, X) = {(q , ε)} nên [q , X, q ] → ε 1 1 - Vì δ(q , ε, Z ) = {(q , ε)} nên [q , Z , q ] → ε 1 1 2) G = (N, T, P, S): - N = { S, [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], 0 1 1 [q , Z , q ], [q , Z , q ], [q , Z , q ], [q , Z , q ]}; 0 0 1 0 1 - T = {0, 1}; - S = S (ký tự thêm vào) - Tập luật sinh P chứa luật sinh có dạng: + S → [q , Z , q ] | [q , Z , q ]; 0 0 Các luật sinh cho biến khác N đƣợc xây dựng từ hàm chuyển PDA nhƣ sau: - Vì δ(q , 1, Z ) = {(q , XZ )} nên 0 0 + [q , Z , q ] → [q , X, q ][q , Z , q ] | [q , X, q ][q , Z , q ]; 0 0 0 0 1 0 + [q , Z , q ] → [q , X, q ][q , Z , q ] | [q , X, q ][q , Z , q ] 0 0 0 1 1 - Vì δ(q , 1, X) = {(q , XX)} nên 0 + [q , X, q ] → 1[q , X, q ][q , X, q ] | 1[q , X, q ][q , X, q ]; 0 0 0 1 + [q , X, q ] → 1[q , X, q ][q , X, q ] | 1[q , X, q ][q , X, q ] 0 1 1 - Vì δ(q , 0, X) = {(q , X)} nên + [q , X, q ] → 0[q , X, q ]; 0 + [q , X, q ] → 0[q , X, q ] 1 - Vì δ(q , ε, Z ) = {(q , ε)} nên [q , Z , q ] → ε 0 0 0 - Vì δ(q , 1, X) = {(q , ε)} nên [q , X, q ] → 1 1 - Vì δ(q , 0, Z ) = {(q , Z )} nên Phạm Hùng Phú 0 243 Lời giải tóm tắt hƣớng dẫn + [q , Z , q ] → 0[q , Z , q ]; 0 0 + [q , Z , q ] → 0[q , Z , q ] 1 0 3) G = (N, T, P, S): - N = { S, [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], 0 1 1 [q , Z , q ], [q , Z , q ], [q , Z , q ], [q , Z , q ]}; 0 0 1 0 1 - T = {a, b, c}; - S = S (ký tự thêm vào) - Tập luật sinh P chứa luật sinh có dạng: + S → [q , Z , q ] | [q , Z , q ]; 0 0 Các luật sinh cho biến khác N đƣợc xây dựng từ hàm chuyển PDA nhƣ sau: - Vì δ(q , a, Z ) = {(q , X)} nên 0 + [q , Z , q ] → a[q , X, q ]; 0 0 + [q , Z , q ] → a[q , X, q ] 0 1 - Vì δ(q , a, X) = {(q , XX)} nên 0 + [q , X, q ] → a [q , X, q ][q , X, q ] | a [q , X, q ][q , X, q ]; 0 0 0 1 + [q , X, q ] → a [q , X, q ][q , X, q ] | a [q , X, q ][q , X, q ] 0 1 1 - Vì δ(q , c, X) = {(q , X)} nên + [q , X, q ] → c[q , X, q ]; 0 + [q , X, q ] → c[q , X, q ] 1 - Vì δ(q , b, Z ) = {(q , X)} nên 0 + [q , Z , q ] → b[q , X, q ]; 0 0 + [q , Z , q ] → b[q , X, q ] 0 1 - Vì δ(q , b, X) = {(q , XX)} nên 0 + [q , X, q ] → b[q , X, q ][q , X, q ] | b[q , X, q ][q , X, q ]; 0 0 0 1 + [q , X, q ] → b[q , X, q ][q , X, q ] | b[q , X, q ][q , X, q ] 0 1 1 - Vì δ(q , c, X) = {(q , ε)} nên [q , X, q ] → c 244 1 Phạm Hùng Phú Lời giải tóm tắt hƣớng dẫn 3.50 G = (N, T, P, S): - N = { S, [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], 0 1 [q , X, q ], [q , X, q ], [q , X, q ], [q , X, q ], 2 2 [q , Y, q ], [q , Y, q ], [q , Y, q ], [q , Y, q ], [q , Y, q ], 0 1 [q , Y, q ], [q , Y, q ], [q , Y, q ], [q , Y, q ], 2 2 [q , Z0, q ], [q , Z0, q ], [q , Z0, q ], [q , Z0, q ], [q , Z0, q ], 0 1 [q , Z0, q ], [q , Z0, q ], [q , Z0, q ], [q , Z0, q ], 2 2 - T = {a, b}; - S = S (ký tự thêm vào) - Tập luật sinh P chứa luật sinh có dạng: + S → [q , Z , q ] | [q , Z , q ] | [q , Z , q ]; 0 0 0 Các luật sinh cho biến khác N đƣợc xây dựng từ hàm chuyển PDA (tự làm, tƣơng tự tập trên) Phạm Hùng Phú 245 Tài liệu tham khảo TÀI LIỆU THAM KHẢO [1] Phan Đình Diệu - Lý thuyết Automat thuật toán - Nhà xuất Đại Học Trung Học chuyên nghiệp - 1997 [2] Hồ Văn Qn – Giáo trình lý thuyết ơtơmát ngơn ngữ hình thức – Nhà xuất Đại học quốc gia Tp Hồ Chí Minh – 2002 [3] Đặng Huy Ruận - Lý thuyết ngơn ngữ hình thức otomat - Đại học Quốc gia Hà Nội - 2002 [4] Nguyễn Văn Xuất - Automat ngơn ngữ hình thức nguyên lý chƣơng trình dịch - Nhà xuất thống kê - 2005 [5] John E Hopcroft, Jeffrey D.Ullman – Introduction to Automata Theory, Languages and Computation – Addison – Wesley Publishing Company, Inc – 1979 246 Phạm Hùng Phú ... thúc 1 32 Phạm Hùng Phú Câu hỏi tập chƣơng Với luật sinh P‟có dạng A → B B2…Bm (m 2) thực - Thêm vào N‟ m -2 biến D , D ,… , D m -2 - Thay tập luật sinh: A→B D ; 1 D →B D ; 2 D D m-3 m -2 →B D... thúc Xét luật sinh P‟có dạng A → B B2…Bm (m 2) Ta bổ sung thêm m1 biến D , D ,… , D m -2 thay tập luật sinh: A→B D ; 1 D →B D ; 2 D D m-3 m -2 →B →B m -2 m-1 D m -2 ; B m Đặt N” tập biến (ký tự không... = n Ta có: (q , ambn, Z ) ⊢(q0, am-1bm-1, X) ⊢m-1 (q0, bm-1, X X) 0 (gồm m-1 ký tự X) ⊢(q1, bm -2 , X X) (gồm m -2 ký tự X) ⊢m -2 (q1, , ): đoán nhận ambm-1 Cho automat push down M = < , Q,