<< Chapter < Page Chapter >> Page >

Đặt M1 (Q  {qe, q0’}, , , ’, q0’, X0, ) trong đó ’ định nghĩa như sau:

1) ’(q0’, e, X0) = {(q0, Z0X0)}

2) ’(q, a, Z) chứa mọi phần tử của (q, a, Z), q  Q, a   hoặc a =  và Z  

3) q  F và Z    {X0}, ’(q, , Z) chứa (qe, )

4) Z    {X0}, ’(q0’, e, Z) chứa (qe, )

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 X0 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 M1 chọn việc đi vào trạng thái qe và xoá Stack hay là tiếp tục mô phỏng M2. 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 M1 chuyển tương tự như M2, M1 sẽ xoá rỗng Stack và chấp nhận input trong khi M2 chưa đi vào trạng thái kết thúc nghĩa là input chưa được chấp nhận.

Đặt x  L(M2) thì (q0, x, Z0) ⊢*M2 (q, , ) với q  F. Ta xét M1 với input x.

Theo quy tắc 1 : (q0’, x, X0) ⊢*M1 (q0, x, Z0X0)

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:

(q0, x, Z0) ⊢*M1 (q, e, g)

Nếu một PDA có thể thực hiện một chuỗi các phép chuyển từ một ID đã cho thì nó có thể làm một chuỗi 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 chuỗi ký hiệu Stack vào dưới chuỗi Stack ban đầu (vì các ký hiệu ở phía dưới của Stack không làm ảnh hưởng gì).

Vậy (q0’, x, X0) ⊢M1 (q0, x, Z0X0) ⊢*M1 (q, , X0).

Theo quy tắc 3 và 4 : (q, , X0) ⊢*M1 (qe, , ).

Vì vậy (q0’, x, X0) ⊢*M1 (qe, , ) và M1 chấp nhận chuỗi x bằng Stack rỗng.

Ngược lại, nếu M1 chấp nhận x bằng Stack rỗng thì dễ dàng chỉ ra rằng chuỗi 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 chuỗi 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(M2).

ĐỊNH LÝ 6.2 : Nếu L là N(M1) với PDA M1 nào đó thì L là L(M2) với một PDA M2 nào đó.

Chứng minh

Ta sẽ xây dựng M2 tương tự M1 và M2 đi vào trạng thái kết thúc khi và chỉ khi M1 làm rỗng Stack của nó.

Đặt M1 (Q, , , , q0, Z0, F) là PDA sao cho L = N(M1).

Đặt M2 (Q  {q0’, qf}, ,   {X0}, ’, q0’, X0, {qf}) trong đó ’ được định nghĩa như sau:

  1. ’(q0’, e, X0) = {(q0, Z0X0)}
  2. q  Q, a    {}, và Z   : ’(q, a, Z) = (q, a, Z)

3) q  Q, ’(q, , X0) chứa (qf, )

Quy tắc 1 cho phép M2 đi vào 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ý hiệu X0, ký hiệu này sẽ nằm bên dưới tất cả các ký hiệu Stack của M1. Quy tắc 2 cho phép M2 chuyển tương tự như M1. Khi M1 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 nó trừ ký hiệu X0 nằm dưới đáy Stack. Quy tắc 3 làm cho M2 sau đó khi gặp X0 xuất hiện thì đi vào trạng thái kết thúc và chấp nhận input x.

Chứng minh L(M2) = N(M1) cũng tương tự như định lý 6.1

Tương đương giữa pda và cfl

ĐỊNH LÝ 6.3: Nếu L là ngôn ngữ phi ngữ cảnh thì tồn tại PDA M sao cho L = N(M).

Chứng minh

Giả sử  không thuộc L(G) (có thể sửa đổi lý luận cho trường hợp ngôn ngữ L(G) có chứa ). Đặt G (V, T, P, S) là văn phạm phi ngữ cảnh có dạng chuẩn Greibach sinh ra L. Đặt M ({q}, T, V, , q, S, ), trong đó (q, a, A) chứa (q, ) khi và chỉ khi A  a là một luật sinh trong P.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Giáo trình tin học lý thuyết. OpenStax CNX. Jul 30, 2009 Download for free at http://cnx.org/content/col10826/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Giáo trình tin học lý thuyết' conversation and receive update notifications?

Ask