1. Văn Phạm
(Grammar)
Văn Phạm - Khái niệm
Khái niệm: VP là tập các quy tắc để sinh ra một tập hợp các từ hay các liên
kết của những từ đó trên bảng chữ cái Alphabet ∑ cho trước.
VD đầu tiên: [Tôi | học bài]
Văn phạm ở đây là gì?
Câu -> chủ ngữ + vị ngữ (tôi + học bài)
Chủ ngữ -> đại từ nhân xưng (tôi)
Vị ngữ -> động từ + danh từ (học + bài)
Đại từ nhân xưng -> tôi
Động từ -> học
Danh từ -> bài
VP của một NNHT dựa trên bảng chữ cái Alphabet ∑ được định nghĩa như một
bộ gồm 4 thành phần: G = (V, T, P, S)
V: Tập các biến (A, B, C, ..., S) S biến khởi đầu.
T: Tập các ký hiệu kết thúc (a, b, c, ...)
+ T dựa trên ∑: T ⊆ ∑
+ T ∩ V = 𝝓
P: Tập hợp các quy tắc sinh: X -> Y
+ X là một tập tùy ý được lấy ra từ tập (V ∪ T)* và X phải chứa ít nhất một
biến trong nó.
+ Y là một từ tùy ý được lấy ra từ tập (V ∪ T)*
Văn Phạm – Các Ví Dụ
VD1:
Bảng chữ cái Alphabet ∑ = {a, b}
Văn phạm (Grammar) G = {V, T, P, S}
Tập các biến V = {S, A, B}
2. Tập các ký hiệu kết thúc T = {a, b}
Tập các quy tắc sinh:
P: (X -> Y)
S -> A
A -> aA
aA -> aB
B -> b
a-> aB
Giải:
Xét với định nghĩa:
T ⊆ ∑ thỏa mãn
T ∩ V = 𝝓 thỏa mãn
(V ∪ T)* = {S, A, B, a, b}* = ∑* = {𝜺, S, aA, aB, AA, ...}
P: (X -> Y)
S -> A hợp lệ
A -> aA hợp lệ
aA -> aB hợp lệ
B -> b hợp lệ
a-> aB không hôp lệ (vì X không chứa biến)
Xét dẫn xuất:
S => A => aA => aB => ab
(B => b)
kết thúc dẫn xuất (vì chỉ toàn chưa ký hiệu kết thúc, không chứa biến)
VD2:
Tập các biền: V = {S, B}
Tập các ký hiệu kết thúc: T = {a, b, c}
Tập các quy tắc sinh:
P:
P0: S -> aBBc
P1: B -> b
P2: B -> ba
P3: BB -> bBa
3. Dẫn xuất ra abbac?
Giải:
Cách 1:
S => aBBc => abBc => abbac
P0 P1 P2
Cách 2:
S => aBBc => aBbac => abbac
P0 P2 P1
Cách 3:
S => aBBc => abBac => abbac
P0 P3 P1
VD3:
Tập các biến: V = {S}
Tập các ký hiệu kết thúc: T = {a}
Tập các quy tắc sinh:
P:
S -> aS | 𝜺 (S sinh ra aS hoặc S sinh ra rỗng)
Nhớ lại phép kết nối:
w.𝜺 = 𝜺.w = w
Giải:
Xét thử dẫn xuất:
S => aS => aaS => aaaS => aaa𝜺 => aaa
Ta có thể suy ra ngôn ngữ L = {an | n ≥ 0}
VD4:
Tập các biến: V = {S}
Tập các ký hiệu kết thúc: T = {a, b}
Tập các quy tắc sinh:
P:
S -> aSb | 𝜺
Giải:
Xét dẫn xuất:
4. S => aSb => aaSbb => aaaSbbb => aaa𝜺bbb => aaabbb
Ta có thể suy ra ngôn ngữ L = {anbn | n ≥ 0}
Quay trở lại VD đầu tiên:
[Tôi | học bài]
Tập các quy tắc sinh:
P:
Câu -> chủ ngữ + vị ngữ (S -> A + B)
Chủ ngữ -> đại từ nhân xưng (A -> C)
Vị ngữ -> động từ + danh từ (B -> D + E)
Đại từ nhân xưng -> tôi (C -> a)
Động từ -> học (D -> b)
Danh từ -> bài (E -> c)
Tập các biến: V = {Câu, CN, VN, DTNX, ĐT, DT} = {S, A, B, C, D, E}
Tập các ký hiệu kết thúc: T = {tôi, học, bài} = {a, b, c}