Định nghĩa Automat đẩy xuống

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 40 - 44)

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

3.5.2. Định nghĩa Automat đẩy xuống

Automat đẩy xuống có một bộ điều khiển hữu hạn và một Stack. Stack chứa một xâu các ký tự thuộc một bảng chữ cái nào đó. Ký tự bên trái nhất của xâu xem nhƣ ký tự tại đỉnh Stack.

PDA đƣợc gọi là không đơn định nếu nhƣ có nhiều hơn một lựa chọn các phép chuyển trong một lần chuyểnnào đó. Ngƣợc lại gọi là PDA đơn định.

Phép chuyển sẽ có hai kiểu:

- Kiểu thứ nhất phụ thuộc vào ký tự vào, tức là với một trạng thái, một ký tự tại đỉnh Stack và một ký tự vào; PDA sẽ lựa chọn trạng thái kế tiếp và một xâu các ký tự thay thế trên Stack, đầu đọc dịch đi sang phải một ký tự.

chuyển sau khi chuyển trạng thái. Thực chất, bƣớc chuyển đặc biệt này là một sự tạm ngừng quan sát trên băng vào để sắp xếp lại các ký tự trong ngăn xếp.

Có hai cách để định nghĩa ngôn ngữ đoán nhận bởi automat đẩy xuống:

- Ngôn ngữ đƣợc đoán nhận bởi Stack rỗng: gồm tất cả các xâu vào mà sau một dãy các phép chuyển trạng thái làm cho automat dẫn tới Stack rỗng.

- Ngôn ngữ đƣợc đoán nhận bởi trạng thái kết thúc: ta thiết kế một số trạng thái kết thúc, khi đó ngôn ngữ đoán nhậnbởi automat có thể định nghĩa gồm tất cả các xâu vào mà có một dãy các phép chuyển làm cho automat dẫn tới một trong những trạng thái kết thúc.

Ta có thể thấy hai cách định nghĩa cho sự đoánnhận xâu này là tƣơng đƣơng nhau trong mọi trƣờng hợp, có nghĩa là nếu một ngôn ngữ đƣợc đoán nhận bởi Stack rỗng của một PDA nào đó thì nó cũng sẽ đƣợc đoán nhận bằng trạng thái kết thúc trên một PDA khác, và ngƣợc lại. Thiết kế PDA đoán nhậnxâu bằng trạng thái kết thúc thƣờng phổ biến hơn, nhƣng sẽ dễ dàng hơn để chứng minh nguyên lý cơ bản của PDA khi thiết kế PDA đoán nhận xâu bằng Stack rỗng. Nguyên lý này đƣợc phát biểu nhƣ sau: Một ngôn ngữ đƣợc đoán nhận bởi PDA khi và chỉ khi nó là một ngôn ngữ phi ngữ cảnh.

Một cách hình thức, ta định nghĩa:

1) Định nghĩa

Một automat đẩy xuống M là một hệ thống M = <Q, Σ, Γ, δ, q0, Z

0, F). Trong đó: 1. Q là tập hữu hạn các trạng thái.

2. Σ là bảng chữ cái gọi là bảng chữ cái nhập (vào). 3. Γ là bảng chữ cái gọi là bảng chữ cái Stack.

4. δ: hàm chuyển ánh xạ từ Q × (Σ {ε}) × Γ → Q × Γ*. 5. q

0 là trạng thái khởi đầu. 6. Z

0 là một chữ cái riêng của Stack gọi là ký tự bắt đầu trên Stack. 7. F  Q là tập các trạng thái kết thúc.

(Trong trƣờng hợp PDA đƣợc thiết kế đoán nhận ngôn ngữ bằng Stack rỗng thì tập hợp F = ∅)

Trừ khi ta dùng các ký tự khác, ta quy ƣớc dùng chữ cái nhỏ ở đầu bảng chữ cái để chỉ các ký tự vào, các chữ cái nhỏ cuối bảng chữ cái để chỉ các xâu vào. Các chữ cái in hoa và chữ Hy lạp chỉ ký tự và xâu ký tự trên Stack.

2) Sự dịch chuyển

a) Hàm chuyển phụ thuộc ký tự vào

δ(q, a, Z) = {(p1, γ1), (p

2, γ2), ..., (p

m, γm)}

Trong đó: q và pi với 1 ≤ i ≤ m, là các trạng thái thuộc tập Q, a  Σ, Z là một ký trên đỉnh Stack và γi  Γ*với 1 ≤ i ≤ m.

Nghĩa là PDA đang ở trạng thái q nhìn thấy ký tự vào a và ký tự Z tại đỉnh Stack thì nó chuyển sang một trạng thái pi nào đó, thay Z bằng γi và dịch chuyển đầu đọc đi một ký tự. Ta quy ƣớc rằng ký tự bên trái nhất của γi sẽ là ký tự đƣợc thay cao nhất trên Stack (nghĩa là nó nằm tại đỉnh Stack mới) và ký tự bên phải nhất của γi là ký tự đƣợc thay thấp nhất trong Stack. Chú ý rằng không đƣợc phép chọn pi và γj với i ≠ j tại một bƣớc chuyển nào đó.

b) Hàm chuyển không phụ thuộc ký tự vào

δ(q, ε, Z) = {(p1, γ1), (p

2, γ2), ..., (p

m, γm)}

Trong đó: q là trạng thái mà PDA đang giữ, độc lập với ký tự vào, PDA đi vào trạng thái pi thay Z bởi γi với 1 ≤ i ≤ m. Trong trƣờng hợp này đầu đọc không dịch chuyển.

Ví dụ: PDA đoán nhậnngôn ngữ {wcwR |w  (0+1)*} bằng Stack rỗng. M = <Q, Σ, Γ, δ, q0, Z 0, F). Trong đó: Q = {q 1, q 2}; Σ = {0, 1, c}; Γ = {R, B, Y}; q 0= q 1; Z = R;

δ: 1. δ(q 1, 0, R) = {(q 1, BR)}; 2. δ(q 1, 1, R) = {(q 1, YR)}; 3. δ(q 1, 0, B) = {(q 1, BB)}; 4. δ(q 1, 1, B) = {(q 1, YB)}; 5. δ(q1, 0, Y) = {(q 1, BY)}; 6. δ(q1, 1, Y) = {(q 1, YY)}; 7. δ(q 1, c, R) = {(q 2, R)}; 8. δ(q 1, c, B) = {(q 2, B)}; 9. δ(q 1, c, Y) = {(q 2, Y)}; 10. δ(q 2, 0, B) = {(q 2, ε)}; 11. δ(q 2, 1, Y) = {(q 2, ε)}; 12. δ(q 2, ε, R) = {(q 2, ε)}.

3) Hình trạng (hình thái) (ID: Instantaneous Descriptions)

Để hình thức hóa cấu hình của một PDA với một PDA cụ thể, ta định nghĩa một hình trạng. Hình trạng là một bộ ba (q, w, γ), trong đó q là trạng thái, w là xâu vào và γlà xâu các ký tự nằm trong Stack.

Nếu M = <Q, Σ, Γ, δ, q0, Z0, F> là một PDA, ta nói: (q, aw, Zα) ⊢M (p, w, βα) nếu δ(q, a, Z) chứa (p, β) Ở đây, a có thể là một ký tự trong xâu vào hoặc ε. Ta dùng ký hiệu ⊢*

M cho bao đóng phản xạ và bắc cầu của ⊢M, tức là: I ⊢* K đối với mỗi ID I và I ⊢M J và J ⊢*

M K thì I ⊢*

M K. Ta viết I ⊢i K nếu ID I trở thành K sau chính xác i bƣớc chuyển. Chữ chỉ số dƣới M trong các ký hiệu ⊢M, ⊢iM

Chẳng hạn, với PDA mô tả nhƣ trên, ta có (q1, BY)  δ(q

1, 0, Y), suy ra rằng (q

1, 011, YYR) ⊢ (q

1, 11, BYYR).

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 40 - 44)

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

(140 trang)