Automata đẩy xuốngPushdown automata MỤC ĐÍCH: Thiết kế PDA chấp nhận CFG bằng stack rỗng hoặc bằng trạng thái kết thúc; Biến đổi tương đương giữa PDA chấp nhận ngôn ngữ bằng trạng th
Trang 1Automat a
1
©copyright by PhD C.T.Ha, Le Quy Don Technical University
Trang 2Bài 6 Automata đẩy xuống
(Pushdown automata)
MỤC ĐÍCH:
Thiết kế PDA chấp nhận CFG bằng stack rỗng hoặc bằng trạng thái kết thúc;
Biến đổi tương đương giữa PDA chấp nhận ngôn
ngữ bằng trạng thái kết thúc sang PDA chấp nhận bằng stack rỗng
Biến đổi tương đương giữa NPDA và CFG
YÊU CẦU:
2
Trang 3Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA 6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
3
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 4Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
4
Trang 56.1 Khái niệm về Pushdown Automata
Ta đã biết: Lớp RL được sinh ra từ RG và được
đoán nhận bởi FA; CFL được sinh ra từ CFG
Câu hỏi: Liệu có thể được đoán nhận CFL bởi một FA? Nếu có thì automata đó như thế nào?
Ví dụ 6.1: Automata đoán nhận ngôn ngữ dạng:
Trang 66.1 Khái niệm về Pushdown Automata
6
Ví dụ 6.5: L={0n1n}= {ε, 01, 0011, 000111, …}, }, thiết kế DFA đoán nhận ngôn ngữ trên ???
q4
0
10
Trang 7Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA 6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
7
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 86.1.1 PDA và các khái niệm liên quan
Ví dụ 6.5: về kiểm tra cân bằng
của chuỗi đóng mở ngoặc sử
dụng stack:
while (input symbol is “[”) {
<push “[” onto the stack>;
while (input symbol is “]”) &&
Trang 96.1.1 PDA và các khái niệm liên quan
PDA là một FA với sự bổ xung thêm một ngăn xếp
của FA được tăng lên, dẫn đến PDA có khả năng đoán nhận lớp ngôn ngữ rộng hơn là RL (RG, RE);
sử dụng bộ nhớ có tên gọi là Pushdown automata;
Tại mỗi thời điểm, PDA điều khiển đồng thời cả dòng dữ liệu nhập vào (băng nhập- tape) và bộ nhớ - bộ đẩy
chuyển sang một trạng thái mới, hoặc thêm, xóa đi dữ liệu từ stack, hoặc đồng thời cả hai;
Lớp PDA có khả năng đoán nhận lớp CFL, trong đó bao gồm các ngôn ngữ lập trình hiện đại;
11/25/2023
9
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 106.1.1 PDA và các khái niệm liên quan
Có 2 dạng chuyển trạng thái (transitions):
Dạng 1: phụ thuộc vào ký hiệu nhập Tại mỗi trạng thái, với
1 ký hiệu đọc vào và đỉnh stack, PDA sẽ lựa chọn trạng thái
kế tiếp và một chuỗi ký hiệu thay thế trên stack, đầu đọc dịch sang phải 1 ký hiệu;
Dạng 2: không phụ thuộc vào ký hiệu nhập (dịch chuyển ε)
Đầu đọc đứng im Ngăn xếp biến đổi.
Có 2 cách định nghĩa ngôn ngữ chấp nhận bởi PDA:
Ngôn ngữ chấp nhận bởi stack rỗng: Gồm các chuỗi nhập
mà sau bước chuyển cuối cùng stack trở về trạng thái rỗng;
Ngôn ngữ chấp nhận bởi trạng thái kết thúc: Gồm các
chuỗi nhập mà sau bước chuyển cuối cùng rơi vào một
trong các trạng thái kết thúc;
10
Trang 116.1.1 PDA và các khái niệm liên quan
Trang 126.1.1 PDA và các khái niệm liên quan
Ví dụ 6.6: xét L = {wcwR | w (0 + 1)*} được sinh
ra từ CFG:
S → 0S0 | 1S1 | c
Ta xây dựng PDA như sau:
Bộ điều khiển có 2 trạng thái q1 và q2
Stack có 3 ký hiệu: xanh (B), vàng (Y) và đỏ (R)
Quy tắc thao tác trên automata:
12
Trang 136.1.1 PDA và các khái niệm liên quan
q2 pop() và không đọc ký tự nào
Thao tác trên automata với chuỗi
1011c1101 ???
Trang 146.1.1 PDA và các khái niệm liên quan
●ĐN 6.1: một PDA A là một hệ thống 7 thành phần:
A (Q, Σ, Γ, δ, q 0 , Z 0 , F)
Q : tập hữu hạn các trạng thái;
Σ : bộ chữ cái nhập (tape or input alphabet);
Γ : bộ chữ cái stack (stack alphabet);
δ : hàm chuyển Q x (Σ {ε}) x Γ → tập con của Q x Γ*;
q0 : trạng thái khởi đầu;
Z0 : ký hiệu bắt đầu trên stack;
F Q : tập các trạng thái kết thúc (nếu PDA chấp
nhận chuỗi bằng Stack rỗng thì F = Ø).
14
Trang 156.1.1 PDA và các khái niệm liên quan
●ĐN 6.2: Hàm chuyển δ phụ thuộc ký hiệu nhập:
Chuyển đầu đọc tới vị trí ký tự
tiếp theo trên băng
Trang 166.1.1 PDA và các khái niệm liên quan
●ĐN 6.3: Hàm chuyển δ không phụ thuộc ký hiệu
nhập:
δ(q, ε, z) = { (p) = { (p1, γ1), (p2, γ2), , (pm, γm) },
16
trong đó:
trạng thái hiện thời là q;
ký hiệu trên đỉnh hiện thời của
Không có ký hiệu đọc vào,
không dịch chuyển đầu đọc
Trang 176.1.1 PDA và các khái niệm liên quan
●Ví dụ 6.6: PDA chấp nhận wcwR bằng Stack rỗng
1) δ(qq1, 0, R) = {(q) = {(qq1, BR) = {(q)} 7) δ(qq1, c, R) = {(q) = {(qq2, R) = {(q)}2) δ(qq1, 1, R) = {(q) = {(qq1, YR) = {(q)} 8) δ(qq1, c, B) = {(qq2, B)}3) δ(qq1, 0, B) = {(qq1, BB)} 9) δ(qq1, c, Y) = {(qq2, Y)}4) δ(qq1, 1, B) = {(qq1, YB)} 10) δ(q2, 0, B) = {(qq2, ε)}5) δ(qq1, 0, Y) = {(qq1, BY)} 11) δ(qq2, 1, Y) = {(qq2, ε)} 6) δ(qq1, 1, Y) = {(qq1, YY)} 12) δ(qq2, ε, R) = {(q) = {(qq2, ε)}
●ĐN 6.4: Hình thái (configuration or ID) của
PDA dùng để ghi nhớ trạng thái và nội dung của
Trang 186.1.1 PDA và các khái niệm liên quan
ĐN 6.5: Ngôn ngữ chấp nhận bởi PDA:
Ngôn ngữ được chấp nhận bằng trạng thái kết thúc
(q2, 0, BR) →(q2, ε, R) →(q2, ε, ε) : chấp nhận chuỗi.
18
Trang 19Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA 6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
19
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 206.1.2 PDA không đơn định (NPDA)
Ví dụ 6.7: thiết kế PDA chấp nhận ngông ngữ
trong vd 6.3:
{wwR | w (0 + 1)*} bằng Stack rỗng
Nhận xét: do không có ký hiệu c để biết thời điểm chuyển từ trạng thái q1 sang q2, dẫn đến bắt buộc phải đoán thử (khi thấy 2 ký hiệu liên tiếp giống nhau)
Nếu ký hiệu thuộc chuỗi xuôi: giữ nguyên trạng thái q1 và push vào stack;
Nếu ký hiệu thuộc chuỗi ngược: chuyển sang trạng thái q2 và pop khỏi Stack
20
Trang 216.1.2 PDA không đơn định (NPDA)
● Ta xây dựng như sau :
A({q1, q2}, {0, 1}, {R, B, Y}, δ, q1, R, Ø), trong đó δ có các bước chuyển như sau:
1) δ(q 1 , 0, R) = {(q 1 , BR)}6) δ(q1, 1, Y) = {(q1, YY),(q2, ε)} 2) δ(q 1 , 1, R) = {(q 1 ,YR)} 7) δ(q 2 , 0, B) = {(q 2 , ε)}
3) δ(q1, 0, B) = {(q1, BB), (q2, ε)} 8) δ(q 2 , 1, Y) = {(q 2 , ε)} 4) δ(q 1 , 0, Y) = {(q 1 , BY)} 9) δ(q 1 , ε, R) = {(q 2 , ε)}
5) δ(q 1 , 1, B) = {(q 1 , YB)} 10) δ(q 2 , ε, R) = {(q 2 , ε)}
● Các phép chuyển hình thái của PDA chấp nhận chuỗi
001100 thuộc ngôn ngữ {ww R | w (0 + 1)*} bằng stack rỗng:
11/25/2023
21
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 226.1.2 PDA không đơn định (NPDA)
Trang 236.1.2 PDA không đơn định (NPDA)
ε, R ε
0, Y BY
1, B YB
ε, R ε
Trang 24Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
24
Trang 256.1.2 PDA đơn định (DPDA)
ĐN 6.6: Một PDA A(Q, Σ, Γ, δ, q0, Z0, F) được gọi là đơn định nếu:
q Q và Z Γ: nếu δ(q, ε, Z) ≠ Ø thì δ(q, a, Z) = Ø,a Σ
Không có q Q, Z Γ và a (Σ {ε}) mà δ(q, a, Z) chứa nhiều hơn một phần tử
Chú ý: đối với PDA thì dạng đơn định và không đơn
định là không tương đương nhau
Ví dụ 6.7: wwR được chấp nhận bởi PDA không đơn định, nhưng không được chấp nhận bởi bất kỳ một PDA đơn định nào
11/25/2023
25
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 266.1.2 PDA đơn định (DPDA)
Ví dụ 6.1: Automata đoán nhận ngôn ngữ dạng:
Trang 27Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1
6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA 6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
27
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 286.2.1 Biến đổi PDA từ dạng 2 sang dạng 1
Định lý 6.1: Nếu một CFL L được chấp nhận bởi một PDA chấp nhận chuỗi bởi trạng thái kết thúc A2 thì L cũng được chấp nhận bởi một PDA chấp nhận chuỗi bởi Stack rỗng A1
Trang 29Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1
6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2
6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA 6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
29
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 306.2.2 Biến đổi PDA từ dạng 1 sang dạng 2
Định lý 6.2: Nếu một CFL L được chấp nhận bởi một PDA chấp nhận chuỗi bởi stack rỗng thì L cũng được chấp nhận bởi một PDA chấp nhận chuỗi bởi trạng
Trang 31Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2 6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA
6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
31
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 326.3.1 Biến đổi từ CFG sang PDA
Định lý 6.3: Nếu L là một ngôn ngữ phi ngữ cảnh thì tồn tại PDA chấp nhận chuỗi với stack rỗng A
sao cho L = N(A)
1 Xây dựng văn phạm G = < Σ, Δ, S, P > thỏa
dạng chuẩn Greibach và L(G) không chứa ε
2 Đặt A = ({q}, Σ, Γ, δ, q, S, Ø) là PDA chấp nhận
L với Stack rỗng δ'}, Σ, Γ, δ', q(q, a, A) = (q, γ) khi và chỉ khi
A → aγ
32
Trang 336.3.1 Biến đổi từ CFG sang PDA
Trang 346.3.1 Biến đổi từ CFG sang PDA
34
Ví dụ 6.9: Xây dựng PDA cho G:
S aTb | b
T Ta | ε
Xét quá trình đoán nhận aab:
S → aTb → aTab → aab
(q0, aab, $) → (q1, aab, S$) →
(q1, aab, aTb$) → (q1, ab, Tb$) →
(q1, ab, Tab$) → (q1, ab, ab$) →
Trang 35Bài 6 Pushdown Automata
6.1 Khái niệm về Pushdown Automata (PDA)
6.1.1 PDA và các khái niệm liên quan
6.1.2 PDA không đơn định (NPDA)
6.1.3 PDA đơn định (DPDA)
6.2 Sự tương đương giữa 2 dạng PDA
6.2.1 Biến đổi tương đương từ dạng 2 sang
dạng 1 6.2.2 Biến đổi tương đương từ dạng 1 sang
dạng 2
6.3 Sự tương đương giữa PDA và CFG
6.3.1 Biến đổi tương đương từ CFG sang PDA
6.3.2 Biến đổi tương đương từ PDA sang CFG11/25/2023
35
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 366.3.2 Biến đổi từ PDA sang CFG
Định lý 6.4: Nếu L được chấp nhận bởi một PDA chấp nhận chuỗi bởi stack rỗng thì L là CFL
Giải thuật: Đặt PDA A = (Q, Σ, Γ, δ, q0, Z0, Ø) chấp nhận L với stack rỗng Đặt G = < Σ, Δ, S, P > là
Trang 376.3.2 Biến đổi từ PDA sang CFG
11/25/2023
Automata và ngôn ngữ hình thức -
©copyright by PhD C.T.Ha, Le Quy
Don Technical University
[q0, Z0, q0], [q0, Z0, q1], [q1, Z0, q0], [q1, Z0, q1] }
= { S, A, B, , G, H}
Xây dựng P có dạng sau:
S → [q0, Z0, q0] | [q0, Z0, q1]
Trang 386.3.2 Biến đổi từ PDA sang CFG
Trang 396.3.2 Biến đổi từ PDA sang CFG