Tải bản đầy đủ (.ppt) (16 trang)

Automata đẩy xuống

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (159.91 KB, 16 trang )

Automata đẩy xuống
(Push Down Automata)
Nội dung:

Khái niệm về PDA

PDA đơn định và không đơn định

PDA chấp nhận chuỗi bằng Stack rỗng và PDA chấp
nhận chuỗi bằng trạng thái kết thúc

Sự tương đương giữa PDA và CFG
Chương 6:
1
2
PDA
Ta đã biết:

Lớp ngôn ngữ chính quy được sinh ra từ văn phạm chính quy
và được đoán nhận bởi automata hữu hạn

Lớp ngôn ngữ phi ngữ cảnh được sinh ra từ văn phạm phi ngữ
cảnh → câu hỏi: CFG có thể được đoán nhận bởi một automata
không? automata đó như thế nào?
Mô tả: gồm các thành phần của một automata hữu hạn với sự bổ
sung thêm một ngăn xếp làm việc (Stack)
0 1 1 0 0 1 0 1
Y
B
R
Bộ điều khiển


3
PDA
Ví dụ: xét L = {wcw
R
| 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 q
1
và q
2

Stack có 3 ký hiệu: xanh (B), vàng (Y) và đỏ (R)

Quy tắc thao tác trên automata:
4
PDA
Các khái niệm:

Phân loại PDA: đơn định (DPDA) và không đơn định (NPDA)

Phép chuyển: có 2 kiểu

Phụ thuộc ký hiệu nhập: với một trạng thái, một ký hiệu tại
đỉnh Stack và một ký hiệu nhập, PDA lựa chọn trạng thái kế
tiếp, thay thế ký hiệu trên Stack và di chuyển đầu đọc trên
băng nhập.

Không phụ thuộc ký hiệu nhập (ε – dịch chuyển): ký hiệu

nhập không được dùng, đầu đọc không di chuyển.

Ngôn ngữ được chấp nhận bởi PDA

Bởi Stack rỗng

Bởi trạng thái kết thúc
Một ngôn ngữ được chấp nhận bởi PDA khi và chỉ khi nó là
một ngôn ngữ phi ngữ cảnh.
5
PDA
Định nghĩa: một PDA M là một hệ thống 7 thành phần
M (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

Γ : bộ chữ cái Stack

δ : hàm chuyển Q x (Σ ∪ {ε}) x Γ → tập con của Q x Γ*

q
0
: trạng thái khởi đầu


Z
0
: 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 = Ø)
6
PDA
Hàm chuyển δ:

Hàm chuyển phụ thuộc ký hiệu nhập
δ(q, a, Z) = { (p
1
, γ
1
), (p
2
, γ
2
), , (p
m
, γ
m
) }

Hàm chuyển không phụ thuộc ký hiệu nhập
δ(q, ε, Z) = { (p
1
, γ
1

), (p
2
, γ
2
), , (p
m
, γ
m
) }
Ví dụ: PDA chấp nhận wcw
R
bằng Stack rỗng
1) δ(q
1
, 0, R) = {(q
1
, BR)} 7) δ(q
1
, c, R) = {(q
2
, R)}
2) δ(q
1
, 1, R) = {(q
1
, YR)} 8) δ(q
1
, c, B) = {(q
2
, B)}

3) δ(q
1
, 0, B) = {(q
1
, BB)} 9) δ(q
1
, c, Y) = {(q
2
, Y)}
4) δ(q
1
, 1, B) = {(q
1
, YB)} 10) δ(q
2
, 0, B) = {(q
2
, ε)}
5) δ(q
1
, 0, Y) = {(q
1
, BY)} 11) δ(q
2
, 1, Y) = {(q
2
, ε)}
6) δ(q
1
, 1, Y) = {(q

1
, YY)} 12) δ(q
2
, ε, R) = {(q
2
, ε)}
7
PDA
Hình thái (ID): dùng để ghi nhớ trạng thái và nội dung của Stack
(q, aw, Zα) ⊢
M
(p, w, βα) nếu δ(q, a, Z) chứa (p, β)
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
L (M) = {w | (q
0
, w, Z
0
) ⊢
*
(p, ε, γ) với p ∈ F và γ ∈ Γ
*
}

Ngôn ngữ được chấp nhận bởi Stack rỗng
N (M) = {w | (q
0
, w, Z
0

) ⊢
*
(p, ε, ε) với p ∈ Q}
Ví dụ: PDA chấp nhận wcw
R
bằng Stack rỗng với chuỗi nhập
001c100
(q
1
, 001c100, R) (q⊢
1
, 01c100, BR) (q⊢
1
, 1c100, BBR) ⊢
(q
1
, c100, YBBR) (q⊢
2
, 100, YBBR) (q⊢
2
, 00, BBR) ⊢
(q
2
, 0, BR) (q⊢
2
, ε, R) (q⊢
2
, ε, ε) : Chấp nhận
8
PDA không đơn định (NPDA)

Ví dụ: thiết kế PDA chấp nhận {ww
R
| w ∈ (0 + 1)*} bằng Stack rỗng

Không có ký hiệu c để biết thời điểm chuyển từ trạng thái q
1
sang q
2


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 q
1
và push
vào Stack

Nếu ký hiệu thuộc chuỗi ngược : chuyển sang trạng thái q
2
và pop
khỏi Stack

M({q
1
, q
2
}, {0, 1}, {R, B, Y}, δ, q
1
, R, Ø):
1) δ(q

1
, 0, R) = {(q
1
, BR)} 6) δ(q
1
, 1, Y) = {(q
1
, YY),(q
2
, ε)}
2) δ(q
1
, 1, R) = {(q
1
,YR)} 7) δ(q
2
, 0, B) = {(q
2
, ε)}
3) δ(q
1
, 0, B) = {(q
1
, BB), (q
2
, ε)} 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
, ε)}
9
PDA không đơn định (NPDA)
Ví dụ: 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
Khởi đầu

(q
1
, 001100, R)


(q
1
, 01100, BR) → (q
2
, 1100, R) → (q
2
, 1100, ε) : Không chấp nhận

(q
1
, 1100, BBR)

(q
1
, 100, YBBR) → (q
2
, 00, BBR)
↓ ↓
(q
1
, 00, YYBBR) (q
2
, 0, BR) → (q
2
, ε, R) → (q
2
, ε, ε) : Chấp nhận

(q
1

, 0, BYYBBR) → (q
2
, ε, YYBBR) : Không chấp nhận

(q
1
, ε, BBYYBBR) : Không chấp nhận
10
PDA đơn định (DPDA)
Định nghĩa: một PDA M(Q, Σ, Γ, δ, q
0
, Z
0
, F) được gọi là đơn định
nếu:

∀q ∈ Q và Z ∈ Γ: nếu δ(q, ε, Z) ≠ Ø thì δ(q, a, Z) = Ø với ∀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ụ: ww
R
đượ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
Tương đương giữa PDA với Stack rỗng và
PDA với trạng thái kết thúc
Định lý 6.1: Nếu một ngôn ngữ phi ngữ cảnh 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 M
2
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 M
1

Cách xây dựng:
Đặt M
2
(Q, Σ, Γ, δ, q
0
, Z
0
, F) và M
1
(Q ∪ {q
e
, q
0
'}, Σ, Γ, δ', q
0
', X
0
, Ø)

δ'(q
0
', ε, X
0
) = {(q

0
, Z
0
X
0
)}

δ'(q, a, Z) chứa mọi phần tử của δ(q, a, Z) với a ∈ (Σ ∪ {ε})

δ'(q, ε, Z) chứa (q
e
, ε) với ∀q ∈ F và Z ∈ (Γ ∪ {X
0
})

δ'(q
e
, ε, Z) chứa (q
e
, ε) với ∀Z ∈ (Γ ∪ {X
0
})
12
Tương đương giữa PDA với Stack rỗng và
PDA với trạng thái kết thúc
Định lý 6.2: Nếu một ngôn ngữ phi ngữ cảnh L được chấp nhận bởi
một PDA chấp nhận chuỗi bởi Stack rỗng M
1
thì L cũng đượ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 M

2

Cách xây dựng:
Đặt M
1
(Q, Σ, Γ, δ, q
0
, Z
0
, F)
và M
2
(Q ∪ {q
0
', q
f
}, Σ, Γ ∪ {X
0
}, δ', q
0
', X
0
, {q
f
})

δ'(q
0
', ε, X
0

) = {(q
0
, Z
0
X
0
)}

δ'(q, a, Z) = δ(q, a, Z) với a ∈ (Σ ∪ {ε})

δ'(q, ε, X
0
) chứa (q
f
, ε) với ∀q ∈ Q
13
Tương đương giữa PDA và CFG
Đị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 M sao cho L = N(M)
Cách xây dựng:
Đặt G(V, T, P, S) thỏa dạng chuẩn Greibach và L(G) không chứa ε

δ'(q, a, A) = (q, γ) khi và chỉ khi A → aγ
Đặt M({q}, T, V, δ, q, S, Ø) là PDA chấp nhận L với Stack rỗng
Ví dụ: S → aAA ; A → aS | bS | a
NPDA tương đương M({q}, {a, b}, {S, A}, δ, q, S, Ø) với δ như sau:
1. δ(q, a, S) = {(q, AA)}
2. δ(q, a, A) = {(q, S), (q, ε)}
3. δ(q, b, A) = {(q, S)}
14

Tương đương giữa PDA và 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à ngôn ngữ phi ngữ cảnh
Cách xây dựng:
Đặt G(V, T, P, S) là CFG, trong đó:

V là tập các đối tượng dạng [q, A, p]
Đặt PDA M(Q, Σ, Γ, δ, q
0
, Z
0
, Ø) chấp nhận L với Stack rỗng

S là ký hiệu bắt đầu mới được thêm vào

P là tập các luật sinh dạng
1. S → [q
0
, Z
0
, q] với ∀q ∈ Q
2. [q, A, q
m+1
] → a [q
1
, B
1
, q
2
][q

2
, B
2
, q
3
] [q
m
, B
m
, q
m+1
]
sao cho δ(q, a, A) có chứa (q
1
, B
1
B
2
B
m
)
Nếu m = 0 thì luật sinh có dạng [q, A, q
1
] → a
15
Tương đương giữa PDA và CFG
Ví dụ: xây dựng CFG tương đương sinh ra ngôn ngữ được chấp
nhận bởi PDA M({q
0
, q

1
}, {0, 1}, {Z
0
, X}, δ, q
0
, Z
0
, Ø) với δ như
sau:
1. δ(q
0
, 0, Z
0
) = {(q
0
, XZ
0
)}
2. δ(q
0
, 0, X) = {(q
0
, XX)}
3. δ(q
0
, 1, X) = {(q
1
, ε)}
4. δ(q
1

, 1, X) = {(q
1
, ε)}
5. δ(q
1
, ε, X) = {(q
1
, ε)}
6. δ(q
1
, ε, Z
0
) = {(q
1
, ε)}
Xây dựng: CFG G(V, {0, 1}, P, S)
1. Tập các biến V = [q, A, p] ∪ S
= { S, [q
0
, X, q
0
], [q
0
, X, q
1
], [q
1
, X, q
0
], [q

1
, X, q
1
],
[q
0
, Z
0
, q
0
], [q
0
, Z
0
, q
1
], [q
1
, Z
0
, q
0
], [q
1
, Z
0
, q
1
] }
2. Tập các luật sinh P

S → [q
0
, Z
0
, q
0
] | [q
0
, Z
0
, q
1
]
δ
1
) [q
0
, Z
0
, q
0
] → 0 [q
0
, X, q
0
] [q
0
, Z
0
, q

0
] | 0 [q
0
, X, q
1
] [q
1
, Z
0
, q
0
]
[q
0
, Z
0
, q
1
] → 0 [q
0
, X, q
0
] [q
0
, Z
0
, q
1
] | 0 [q
0

, X, q
1
] [q
1
, Z
0
, q
1
]
16
Tương đương giữa PDA và CFG
δ
2
) [q
0
, X, q
0
] → 0 [q
0
, X, q
0
] [q
0
, X, q
0
] | 0 [q
0
, X, q
1
] [q

1
, X, q
0
]
[q
0
, X, q
1
] → 0 [q
0
, X, q
0
] [q
0
, X, q
1
] | 0 [q
0
, X, q
1
] [q
1
, X, q
1
]
δ
3
) [q
0
, X, q

1
] → 1
δ
4
) [q
1
, X, q
1
] → 1
δ
5
) [q
1
, X, q
1
] → ε
δ
6
) [q
1
, Z
0
, q
1
] → ε
Đặt: [q
0
, X, q
0
] = A, [q

0
, X, q
1
] = B, , [q
0
, Z
0
, q
0
] = E, , [q
1
, Z
0
, q
1
] = H
S → E | F
E → 0AE | 0BG
F → 0AF | 0BH
A → 0AA | 0BC
B → 0AB | 0BD | 1
D → ε | 1
H → ε
Ta có luật sinh:
Giản lược văn phạm:
S → F
F → 0BH
B → 0BD | 1
D → ε | 1
H → ε

S → 0B
B → 0B | 0B1 | 1

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×