PDA và văn phạm phi ngữ cảnh

Một phần của tài liệu Bài giảng ngôn ngữ hình thức phần 2 (Trang 47 - 49)

1. A i → A j γ với j > i;

3.5.4. PDA và văn phạm phi ngữ cảnh

1) Sự tương đương của việc đoán nhận xâu bằng trạng thái kết thúc và bằng Stack rỗng

a) Định lý 1

Nếu L là một ngôn ngữ phi ngữ cảnh đƣợc đoán nhận bởi một PDA M2

bằng trạng thái kết thúc thì L đƣợc đoán nhận bởi một PDA M

Stack rỗng.

Chứng minh:

Ta sẽ xây dựng M1 tƣơng tự nhƣ M2 nhƣng M1 sẽ xóa rỗng Stack của nó khi M

2 đi vào trạng thái kết thúc. Ta dùng một trạng thái qe của M1 để xóa Stack của nó và dùng ký tự đánh dấu đáy Stack M1 bằng ký tự X0, vì vậy M1 không thể làm rỗng Stack của nó khi M2 chƣa đi vào trạng thái kết thúc.

Đặt M2=<Q, Σ, Γ, δ, q 0, Z

0, F> là PDA sao cho L = L(M 2). Đặt M1= <Q  {q

e, q‟0}, Σ, Γ, δ‟, q‟0, X

0, ∅> trong đó δ‟ định nghĩa nhƣ sau: 1. δ‟(q‟0, ε, X

0) = {(q 0, Z

0X0)}; 0)};

2. δ‟(q, a, Z) chứa mọi phần tử của δ(q, a, Z) với qQ, aΣhoặc a = ε và ZΓ; 3. δ‟(q, ε, Z) chứa (qe, ε) với qF và Z  Γ  {X

0}; 4. δ‟(q‟0, ε, Z) chứa (qe, ε) với  Z  Γ {X0}.

Quy tắc 1 làm cho PDA M1 đi vào trạng thái khởi đầu của M2 trừ việc thêm X

0 vào đáy Stack. Quy tắc 2 cho phép M1 chuyển tƣơng tự nhƣ M2. Quy tắc 3 và 4 cho phép M

1 chọn việc đi vào trạng thái qe và xoá Stack hay là tiếp tục mô phỏng M

2. Chú ý rằng M2 có thể xóa rỗng Stack của nó khi chƣa tới trạng thái kết thúc vì vậy M1 phải đƣợc đánh dấu đáy Stack bằng X0. Vì nếu không làm nhƣ vậy thì khi M

1 chuyển tƣơng tự nhƣ M2 thì M

1 sẽ xoá rỗng Stack và đoán nhận xâu vào trong khi M

2 chƣa đi vào trạng thái kết thúc nghĩa là xâuvào chƣa đƣợc đoán nhận. Đặt x  L(M

2) thì (q 0, x, Z

0) ⊢*

M2 (q, ε, γ) với q  F. Ta xét M

1 với xâu vào x. Theo quy tắc 1: (q‟0, x, X

0) ⊢*M1 (q 0, x, Z

0X0) 0)

Theo quy tắc 2 mỗi phép chuyển của M2 là một phép chuyển trong M1, vậy: (q

0, x, Z

0) ⊢*M1 (q, ε, γ)

Nếu một PDA có thể thực hiện một dãy các phép chuyển từ một ID đã cho thì nó có thể làm một dãy các phép chuyển đó từ một ID bất kỳ thu đƣợc từ ID đầu tiên bằng cách thêm các xâu ký tự Stack vào dƣới xâu Stack ban đầu (vì các ký tự ở

Vậy (q‟0, x, X 0) ⊢M1 (q 0, x, Z 0X 0) ⊢*M1 (q, ε, γX 0). Theo quy tắc 3 và 4: (q, ε, γX 0) ⊢*M1 (q e, ε, ε). Vì vậy (q‟0, x, X 0) ⊢*M1 (q

e, ε, ε) và M1 đoán nhận xâu x bằng Stack rỗng. Ngƣợc lại, nếu M1 đoán nhậnx bằng Stack rỗng thì dễ dàng chỉ ra rằng dãy các phép chuyển phải bắt đầu bằng một phép chuyển theo quy tắc 1, sau đó bằng một xâu phép chuyển theo quy tắc 2, trong khi thực hiện các phép chuyển này M1 chuyển tƣơng tự nhƣ M2, sau đó xóa Stack của M1 bằng quy tắc chuyển 3 và 4.

Vậy x  L(M 2).

b) Định lý 2

Nếu L là một ngôn ngữ phi ngữ cảnh đƣợc đoán nhận bởi một PDA M1 bằng Stack rỗng thì L đƣợc đoán nhận bởi một PDA M2 nào đó bằng trạng thái kết thúc.

Chứng minh:

Ta sẽ xây dựng M2 tƣơng tự M1 và M

2 đi vào trạng thái kết thúc khi và chỉ khi M

1 làm rỗng Stack của nó. Đặt M1=<Q, Σ, Γ, δ, q0, Z

0,  > là PDA sao cho L = N(M 1). Đặt M2=<Q {q‟0, q f}, Σ, Γ {X 0}, δ‟, q‟0, X 0, {q f}> trong đó δ‟ đƣợc định nghĩa nhƣ sau: 1. δ‟(q‟0, ε, X0) = {(q 0, Z 0X 0)}; 2. δ‟(q, a, Z) = δ(q, a, Z) với q Q, a  Σ {ε}, và Z Γ; 3. δ‟(q, ε, X 0) chứa (qf, ε) với q Q.

Quy tắc 1 cho phép M2 đi vào hình trạng (hình thái) khởi đầu ID của M1, trừ việc M2 sẽ có chứa ở dƣới đáy Stack của nó ký tự X0, ký tự này sẽ nằm bên dƣới tất cả các ký tự Stack của M1. Quy tắc 2 cho phép M2 chuyển tƣơng tự nhƣ M1. Khi M

1 làm rỗng Stack của nó, thì M2 khi chuyển tƣơng tự nhƣ M1 sẽ xóa toàn bộ Stack của

Một phần của tài liệu Bài giảng ngôn ngữ hình thức phần 2 (Trang 47 - 49)

Tải bản đầy đủ (PDF)

(140 trang)