Định lý 1: Nếu L là một NNPNC, thì tồn tại một ÔĐX M sao cho L = N(M).
Giả sử L = L(G) với G = (Σ, ∆, P, S) là một VPPNC. Lập ÔĐX M = (Σ, {q}, Σ∆, ∂, q, S, ) trong đó:
1) Với mọi A∆ thì ∂(A, q, ) = {αR, q) | (A → α)P} 2) Với mọi aΣ thì ∂(a, q, a) = {( , q)}
Vậy là: - Nếu đỉnh ngăn xếp là một ký hiệu không kết thúc A, thì nó bị thay thế, hệt như một bước suy dẫn trong G với sản xuất A → α. Lúc đó đầu đọc không dịch chuyển.
- Còn khi đỉnh ngăn xếp là một ký hiệu cuối α, thì nó được đọ với ký hiệu trỏ trên băng vào và được rút gọn (loại khỏi ngăn xếp) nếu có sự trùng khớp. Lúc đó đầu đọc chuyển sang phải.
Có thể thấy rằng, hoạt động của M là một quá trình bắt chước một suy dẫn trái trong G cho đến khi sinh ra đúng xâu vào trên băng, trong đó mỗi dạng xâu trái bị ngắt ra làm đôi tại ký hiệu không kết thúc ở bên trái nhất:
- Phần bên phải (có chứa các ký hiệu không kết thúc) nằm ở trong ngăn xếp, nhưng theo thứ tự đảo ngược; lúc khởi đầu nó là S (đáy ngăn xếp).
- Phần bên trái gồm toàn các ký hiệu cuối, đương nhiên phải trùng khớp với phần đầu của xâu vào, cho nên đã được đọ dần với xâu vào trên băng mà không cần lưu lại ở đâu nữa.
Ví dụ: Cho VPPNC G:
S → aAA A → aS | bS | a
ÔĐX tương đương với G có hàm chuyển ∂ như sau: ∂(S, q, ε) = {(aAA, q)}
∂(A, q, ε) = {(aS, q), (bS, q), (a, q)} ∂(a, q, a) = {(ε, q)}
∂(b, q, b) = {(q, ε)}
Xét suy dẫn trái trong G sinh ra xâu abaaaa
SG aAA G abSA G abaAAA G abaaAA GabaaaA Gabaaaa Suy dẫn này sẽ được M bắt trước bởi quá trình đoán nhận xâu abaaaa như sau:
SqabaaaaMAAaqabaaaaMAAqbaaaaMASbqbaaaaMASqaaaaM AAAaqaaaa MAAAqaaaMAAaqaaaMAAqaaMAaqaaMAqaMaqaMq
Định lý 2: Nếu L = N(M) với một ÔĐX M nào đó, thì L là một NNPNC
Cho M = (Σ, Q, Γ, ∂, q0, Z0, ). Thành lập VPPNC G = (Σ, ∆, P, S), trong đó ∆ là tập mọi phần tử có dạng [A, q, p] với A Γ và p, qQ, và bổ sung thêm phần tử mới S. P được thành lập như sau:
1) Với mọi qQ, S → [Z0, q0, q] là sản xuất trong P
2) Nếu (Bm…B2B1, q)∂(A, q, a), với A, B1, …, Bm Γ; q, q1Q; aΣ {ε}, thì với mọi q2, q3,…, qm+1 trong Q:
[A, q, qm+1]→ a[B1, q1, q2] [B2, q2, q3]… [Bm, qm, qm+1] là một sản xuất trong P (trường hợp m=0, thì sản xuất lập được là [A, q, q1]→ a).
Văn phạm G xây dựng được như trên nhằm làm cho mỗi suy dẫn trái của một xâu w sẽ là một sự bắt trước quá trình đoán nhận xâu w của ÔĐX M. Trong suy dẫn, mỗi dạng câu đều có dạng xα, với xΣ+ và α∆*, và các biến trong α tương ứng với các ký hiệu chứa trong ngăn xếp của M vào lúc M vừa đọc xong xâu con x trên băng vào.
Bài tập:
1. Lập các ÔĐX đoán nhận các ngôn ngữ sau: a) {aibj | i, j0}
b) {aibj | i, j1} c) {aicaj | ij0} d) {aibicj | i, j0}
2. Lập các ÔĐX đoán nhận các xâu trên {a, b} có số a bằng số b 3. Lập các ÔĐX đoán nhận các xâu trên {a, b} có số a gấp đôi số b 4. Lập ÔĐX tương đương với VPPNC: S → +SS | *SS | a
5. Lập văn phạm cho ngôn ngữ N(M) với
M = ({0, 1}, {q0, q1}, {Z0, X}, ∂, q0, Z0, ) trong đó ∂ được cho như sau: ∂(Z0, q0, 1) = {(Z0X, q0)} ∂(Z0, q0, ε) = {(ε, q0)}
∂(X, q0, 1) = {(XX, q0)} ∂(X, q1, 1) = {(ε, q1)} ∂(X, q0, 0) = {(X, q1)} ∂(Z0, q1, 0) = {(Z0, q0)}