VI. VĂN PHẠM PHI NGỮ CẢNH (CFG: Context Free Grammar)
6.2. Dẫn xuất và ngôn ngữ
Dẫn xuất: Để định nghĩa ngôn ngữ sinh bởi văn phạm CFG G (V, T, P, S), ta dẫn nhập khái niệm dẫn xuất. Trƣớc hết ta giới thiệu hai quan hệ ⇒G và ⇒*G
giữa hai chuỗi trong tập (V ∪ T)*. Nếu A → β là một luật sinh trong văn phạm và
α, γ là hai chuỗi bất kỳ trong tập (V ∪ T)* thì αAγ ⇒G αβγ, hay ta còn nói luật sinh A → β áp dụng vào chuỗi αAγ để thu đƣợc chuỗi αβγ, nghĩa là αAγ sinh trực tiếp αβγ trong văn phạm G. Hai chuỗi gọi là quan hệ nhau bởi ⇒G nếu chuỗi thứ hai thu đƣợc từ chuỗi thứ nhất bằng cách áp dụng một luật sinh nào đó.
Giả sử α1, α2, ..., αm là các chuỗi thuộc (V ∪ T)* với m ≥ 1 và :
α1 ⇒G α2, α2 ⇒G α3, …, αm -1 ⇒G αm thì ta nói α1⇒*G αm hay α1 dẫn xuất ra αm trong văn phạm G.
Nhƣ vậy, ⇒*G là bao đóng phản xạ và bắc cầu của ⇒G. Nói cách khác, α ⇒*G β nếu β đƣợc dẫn ra từ α bằng không hoặc nhiều hơn các luật sinh của P. Chú ý rằng α ⇒*G α với mọi chuỗi α.
Thông thƣờng nếu không có nhầm lẫn ta sẽ dùng các ký hiệu ⇒ và ⇒*
thay cho ký hiệu ⇒G và ⇒*G. Nếu α dẫn ra β bằng i bƣớc dẫn xuất thì ta ký hiệu α ⇒iβ.
Ngôn ngữ sinh bởi văn phạm phi ngữ cảnh : Cho văn phạm CFG G(V, T, P, S) :
L(G) = {w⏐ w ∈ T* và S ⇒*G w}
Nghĩa là, một chuỗi thuộc L(G) nếu: 1) Chuỗi gồm toàn ký hiệu kết thúc. 2) Chuỗi đƣợc dẫn ra từ ký hiệu bắt đầu S.
Ta gọi L là ngôn ngữ phi ngữ cảnh (CFL) nếu nó là L(G) với một CFG G nào đó. Chuỗi α gồm các ký hiệu kết thúc và các biến, đƣợc gọi là một dạng câu sinh từ G nếu S ⇒*α. Hai văn phạm G1, G2 đƣợc gọi là tƣơng đƣơng nếu L(G1) = L(G2) Ví dụ 6.3: Xét văn phạm G (V, T, P, S), trong đó :
V = {S}, T = {a, b}, P = {S → aSb, S → ab}.
Bằng cách áp dụng luật sinh thứ nhất n -1 lần và luật sinh thứ hai 1 lần, ta có: S ⇒ aSb ⇒ aaSbb ⇒ a3
Sb3 ⇒ ... ⇒an-1
bn-1⇒ an
bn Vậy, L(G) chứa các chuỗi có dạng anbn, hay L(G) = {an
bn | n ≥ 1}.