VI. VĂN PHẠM PHI NGỮ CẢNH (CFG: Context Free Grammar)
6.7.2 Dạng chuẩn Greibach GNF (Grei Normal Form)
Ta gọi luật sinh với các biến A ở bên trái A – luật sinh.
Bổ đề 3:(Dùng thay thế các luật sinh trực tiếp)
Cho G(V, T, P, S) là một CFG, đặt A α1Bα2 là luật sinh trong P và B β1| β2 | …| βr là các B – luật sinh; văn phạm G1(V, T, P1, S) thu đƣợc từ G bằng cách loại bỏ luật sinh A α1Bα2 và thêm vào luật sinh A α1β1α2 | α1β2α2 | …| α1βrα2 thì L(G) = L(G1).
Tin học Lý Thuyết trên WEB‖
Bổ đề 4:(Dùng loại bỏ luật sinh dạng đệ quy trái trong văn phạm)
Đặt G (V, T, P, S) là CFG; A Aα1 | Aα2 | …| Aαr là tập các A – luật sinh có A là ký hiệu trái nhất của vế phải (luật sinh đệ quy trái). Đặt A β1 | β2 | …| βs là các A – luật sinh còn lại ; G1(V {B}, T, P1, S) là CFG đƣợc tạo thành bằng cách thêm biến mới B vào V và thay các A – luật sinh bằng các luật sinh dạng:
1) A βi Với 1 <= i <=s A βiB 2) A αi Với 1 <= i <=r A αiB
Định lý 6.5:(Dạng chuẩn Greibach hay GNF)
Mỗi CFL bất kỳ không chứa ε đƣợc sinh ra bởi một CFG mà mỗi luật sinh có dạng A aα với A là biến, a là một ký hiệu kết thúc và α là một chuỗi các biến (có thể rỗng).
Ví dụ 6.11: Tìm văn phạm có dạng GNF tƣơng đƣơng văn phạm G sau : A1 → A2A1 | A2A3
A2 → A3A1 | a A3 → A2A2 | b
Bƣớc 1 : G thỏa dạng chuẩn CNF sinh ra CFL không chứa ε.
Bƣớc 2 : Ta có V = {A1, A2, ..., A3}
Bƣớc 3 : Thay thế các luật sinh sao cho nếu Ai → Aj γ là một luật sinh thì j > i.
Ta thấy trong tập luật sinh, các luật sinh cho A1 và A2 đã thỏa điều kiện j > i. Chỉ có luật sinh A3 → A2A2 cần sửa đổi. Áp dụng bổ đề 3 để thay thế luật sinh này, ta có:
A3 → A3A1A2 | aA2
Sau đó, dùng bổ đề 4 để loại bỏ đệ quy trái, ta đƣợc tập luật sinh mới có dạng nhƣ sau :
A1 → A2A1 | A2A3 A2 → A3A1 | a
A3 → aA2 | b | aA2B | bB B → A1A2 | A1A2 B
Bƣớc 4 : Thay thế các Ai -luật sinh về đúng dạng.
Ở bƣớc này, ta có thể thấy tất cả các A3 - luật sinh đã có dạng chuẩn. Tiếp tục, áp dụng bổ đề 3 để thay thế các A3 - luật sinh vào A2, A1, thu đƣợc tập luật sinh mới nhƣ sau:
A1 → aA2A1A1 | bA1A1 | aA2BA1A1 | bBA1A1 | aA1| aA2A1A3 | bA1A3 | aA2BA1A3 | bBA1A3 | aA3
A2 → aA2A1 | bA1 | aA2BA1| bBA1| a
A3 → aA2 | b | aA2B | bB
B → A1A2 | A1A2 B
Bƣớc 5 : Thay thế các Bk - luật sinh về đúng dạng.
B → aA2A1A1A2 | bA1A1A2 | aA2BA1A1A2 | bBA1A1A2 | aA1A2 | aA2A1A3A2 | bA1A3A2 | aA2BA1A3A2 | bBA1A3A2 | aA3A2
| aA2A1A1A2B | bA1A1A2B | aA2BA1A1A2B | bBA1A1A2B | aA1A2 B | aA2A1A3A2B | bA1A3A2B | aA2BA1A3A2B | bBA1A3A2B | aA3A2B Cuối cùng, ta thu đƣợc văn phạm có dạng GNF với 39 luật sinh.