- Ngoài ra nếu s0 e là quy tắc của P thì không ảnh hưởng đến kết quả, ta giả thiết s
2. 5 A3 aZ3 8 Z3A 1A3A
3. A2 b 6. Z3 A1A3A2Z3 9. A3 a
2.1. A2 aA1 2.2. A2 bA3A2Z3 A1, 2.3. A3 bA3A2A1
2.4. A2 aZ3 A1.
- Đưa A1-quy tắc A1 A2 A3 về dạng chuẩn sau khi áp dụng các A2quy tắc: 1.1 A1 b A3 1.2. A1 bA3A2Z3A1A3 1.3.A1 aZ3A1A3 1.4 A1 aA1A3 1.5. A1 bA3A2A1A3 1. 4. A3 bA3A2Z3 7. A3 bA3A2 2. 5. A3 aZ3 8. Z3 A1A3 A2 3. A2 b 6. Z3 A1A3A2Z3 9. A3 a 2.1. A2 aA1 2.2. A2 bA3A2Z3 A1, 2.3. A3 bA3A2A1 2.4. A2 aZ3 A1.
B3. Ta thấy Z3- quy tắc chưa thuộc dạng chuẩn nên tiếp tục biến đổi: - Với quy tắc 8: Ta thay các A1- quy tắc 1.1-1.5 vào vỊ phải được 8.1. Z3 b A3A3A2 8.2.Z3 bA3A2Z3A1A3A3A2
8.3.Z3 aZ3A1A3A3A2,
8.4 Z3 aA1A3A3A2 8.5 Z3 bA3A2A1A3A3A2.Vậy ta nhận được các quy tắc chuẩn Greibach từ 1.1- 8.5. Vậy ta nhận được các quy tắc chuẩn Greibach từ 1.1- 8.5.
$4.Automat đẩy xuống(Automat push-down).
Như ta đã biết ngôn ngữ chính quy được sản sinh ra bởi các văn phạm chính quy, đồng thời lại được đoán nhận bởi automat hữu hạn. Trong mục này ta lại thấy rằng lớp các ngôn ngữ phi ngữ cảnh được sinh ra bởi văn phạm phi ngữ cảnh lại được đoán nhận bởi một loại automat khác, gọi là automat đẩy xuống, có điều automat đẩy
xuống ở đây phải không đơn định, còn lớp automat đẩy xuống đơn định chỉ cho phép đoán nhận tập con thực sự của văn phạm phi ngữ cảnh.
4.1. Các khái niệm.
a. Mô tả automat PA. PA vẫn giữ những thành phần cơ bản của automat hữu hạn gồm:
- Một bé điều khiển có hữu hạn trạng thái.
- Một đầu đọc cho phép đọc lần lượt các ký tự từ trái sang phải các ký hiệu của xâu vào ghi trên một băng vào.
- Một băng làm việc gọi là ngăn xếp(stack) nhờ băng này mà khả năng ghi nhớ được tăng thêm. Ngăn xếp được tổ chức theo nguyên tắc LIFO, khi đưa một ký hiệu vào ngăn xếp thì ký hiệu đó được đặt lên đầu ngăn và đẩy các ký hiệu cũ xuống dưới, khi đọc thì chỉ có một ký hiệu được đọc ấy là ký hiệu trên cùng và khi đọc xong thì ký hiệu đó được xoá khái ngăn xếp.
1 0 1 1 0 1 1 0 1
- Một bước chuyển của automat được thực hiện nh sau:
Với trạng thái của hiện tại của bé điều khiển, ký hiệu vào mà đầu đọc quan sát được lúc đó và ký hiệu ở đầu ngăn xếp mà automat chuyển sang trạng thái mới nào đó, ghi một xâu ký hiệu vào ngăn xếp và đầu đọc chuyển sang phải một « và ta gọi quá trình trên là một bước chuyển.
- Nếu ký hiệu vào không ảnh hưởng tới bước chuyển ta gọi đó là bước chuyển nhắm mắt, thực chất của nó là tạm dừng quan sát băng vào(đầu đọc đứng yên) nhằm chấn chỉnh Stack.
- Đoán nhận xâu vào của PA được thực hiện theo 2 cách:
Bộ môn khoa học máy tính - HVKTQS 59
Bé điều khiển(q) 1
0 1
1. Xâu vào được đọc xong và PA chuyển đến một trạng thái kết thúc nào đó.
2. Xâu vào được đọc xong và ngăn xếp trở thành rỗng. ( Sau này ta sẽ thấy rõ 2 cách tiếp cận trên là tương đương)
- Ví dụ. Cho văn phạm G=({0,1,c},{S},S, P) với P gồm các luật sinh: 1. S 0S0; 2. S 1S1; 3. S c.
Ngôn ngữ được sinh ra bởi văn phạm này là L(G)={wcw’w∈{0,1}*} Nó được đoán nhận bởi automat đẩy xuống nh sau:
- Xâu wcw’ đặt trên băng vào. - Ngăn xếp ở trn¹g thái rỗng
- Đầu đọc chuyển từng bước từ trái qua phải.
- Automat chỉ có 2 trạng thái q, p với q là trạng thái đầu. Quá trình đoán nhận wcw’ được thực hiện như sau:
- ở trạng thái q. đọc được ở băng vào ký hiệu đầu tiên của w (0 hoặc 1) và đưa ký hiệu đó vào ngăn xếp, vẫn ở trạng thái q và đầu đọc chuyển sang ký tự tiếp theo.
- Thực hiện nh trên với mọi ký tự còn lại của w, khi đó ta nhận được trong Stack xâu w với ký tự phải nhất nằm trên cùng. Chuyển đầu đọc sang ký tự tiếp theo. - Gặp ký tự c chuyển trạng thái p và chuyển đầu đọc sang phải.
- ở trạng thái p ký hiệu được đọc ở băng vào là 0 hoặc 1 trùng với ký tự nằm trên đỉnh Stack, loÞa ký tự đó khái ngăn xếp,giữ nguyên trạng thái p và chuyển đầu đọc sang phải
- Quá trình kết thúc khi Stack rỗng, cũng là lúc ta đọc xong xâu wcw’.
- Nhận xét. Nhờ ngăn xếp có khả năng lưu giữ một số bất kỳ các ký hiệu mà PA đẩy xuống có thể nhớ được xâu w cho dù nó có độ dài bao nhiêu. Automat hữu hạn không có khả năng này.
b. Automat Push Down là một bộ M=(Q, T, Γ,δ, q0, Z0, F) trong đó: - Q là tập hữu hạn các trạng thái.
- Γ là tập hữu hạn các các phần tử là bảng chữ cái đẩy xuống. - q0 ∈ Q là trạng thái đầu của automat.
- z0 ∈ Γ là ký hiệu đặc biệt của băng đẩy xuống gọi là ký hiệu bắt đầu, z0 xuất hiện đầu tiên ở đỉnh của bộ đẩy xuống.
- F⊆Q là tập trạng thái kết thúc.
- δ là ánh xạ δ: Q x T∪{e}xΓ 2QxΓ*
Chú ý rằng:
1. δ(q,a,Z)={(q1,γ1), (q2,γ2), (q3,γ3),…, (qm,γm)}, với q,qi ∈ Q, a ∈ T,Z ∈ Γ, γi ∈Γ* Nghĩa là: Automat ở trạng thái q nhìn thấy ký hiệu a ở băng vào, Z là ký hiệu ở đỉnh của bộ đẩy xuống, khi đó automat đổi sang trạng thái qi thay Z bởi xâu γi và dịch đầu đọc sang ký hiệu tiếp theo, ta quy ước rằng ký hiệu trái nhất cu¨ xâu γi sẽ nằm ở trên[đáy] và ký hiệu phải nhất đặt nằm ở đáy[đầu ngăn] của Stack.
2. δ(q,e,Z)={(q1,γ1), (q2,γ2), (q3,γ3),…, (qm,γm)}, với q,qi ∈ Q, Z ∈ Γ, γi ∈Γ*.
Nghĩa là: Automat ở trạng thái q không phụ thuộc ký hiệu vào được đọc ký tự Z ở đỉnh của bộ đẩy xuống, khi đó automat đổi sang trạng thái qi nào đó với i=1..m và Z được đổi sang γi và đầu đọc đứng yên.
d. Các ví dụ. M=(Q, T, Γ,δ, q0, Z0,F) với:
Q={q1, q2}, T:={0,1,c}, Γ={R,B,G}, q0=q1, Z0={R}, F=∅ δ:
1. δ(q1,0,R)={(q1,BR)}, 2. δ(q1,0,B)={(q1,BB)}, 3. δ(q1,0,G)={(q1,BG)} 4. δ(q1,c,R)={(q2,R)}, 5. δ(q1,c,B)={(q2,B)}, 6. δ(q1,c,G)={(q2,G)} 7. δ(q2,0,B)={(q2,e)}, 8. δ(q1,e,R)={(q2,e)},
9. δ(q1,1,R)={(q1,RG)} 10. δ(q1,1,B)={(q1,GB)} 11. δ(q1,1,G)={(q1,GG)} 12. δ(q2,1,G)={(q2,e)}
Ví dụ 2. Cho M:=({q1,q2},{0,1},{Z,0,1},δ, Z, ∅}, với các hàm chuyển như sau:
1. δ(q1,0,Z)={(q1,0)}, 2. δ(q1,1,Z)={(q1,1)}, 3. δ(q1,0,0)={(q1,00),(q2,e)} 4. δ(q1,0,1)={(q1,10)}, 5. δ(q1,1,0)={(q1,01)}, 6.δ(q1,1,1)={(q1,11),(q2,e)} 7. δ(q2,0,0)={(q2,e)}, 8. δ(q2,1,1)={(q2,e)},
9. δ(q1,1,Z)={(q2,e)} 10. δ(q2,e,Z)={(q2,e)}.
4.2. Ngôn ngữ đoán nhận bởi automat Pushdown(PA).a. Hình trạng của PA. a. Hình trạng của PA.
+ Ta nói hình trạng của PA là cặp (q, γ),q∈Q, γ ∈Γ* nếu M ở trạng thái q,γ
nằm trên Stack với ký hiệu trái nhất nằm trên đỉnh [đáy] Stack. Nếu a∈T∪{e};
γ, β∈Γ*; Z∈Γ và nếu (p, β) ∈δ(q,a,Z) khi đó ta viết như sau:
a:(q,Zγ) ⇒(p, βγ) [ a:(q,γZ) ⇒(p, βγ) và đọc là automat ở hình trạng (q,Zγ) khi nhìn thấy ký hiệu vào a nó chuyển sang trạng thái (p, βγ).
+ Đối với xâu w=a1a2...an nếu ai: (qi,γi) ⇒(qi+1, γi+1) khi đó ta viết: w: (q1,γ1) *⇒(qn+1, γn+1)
+ Quy ước e:(q,γ) ⇒(q, γ)
b. Nhận xét.ở mỗi thời điểm, tình trạng của PA xác định nhờ 3 yếu tố: - Xâu γ∈Γ* trong ngăn xếp( với ký hiệu bên trái nhất nằm ở đáy[đỉnh] - Trạng thái q∈ Q
- Phần xâu chưa đọc đến x∈ T*(với ký hiệu bên trái nhất là ký hiệu sẽ được đọc tiếp).
x
γ
( PA trong trường hợp ký hiệu trái nhất nằm ở đáy) q