1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tin học lý thuyết - Chương 6 ppsx

16 248 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 375,04 KB

Nội dung

Chương 6: Automata đẩy xuống (Push Down Automata) Nội dung: • Khái niệm PDA • PDA đơn định khơng đơn định • PDA chấp nhận chuỗi Stack rỗng PDA chấp nhận chuỗi trạng thái kết thúc • Sự tương đương PDA CFL PDA Ví dụ: xét L = {wcwR | w  (0 + 1)*} sinh từ CFG S → 0S0 | 1S1 | c Ta xây dựng PDA sau: • Bộ điều khiển có trạng thái q1 q2 • Stack có ký hiệu: xanh (B), vàng (Y) đỏ (R) • Quy tắc thao tác automata: PDA Các khái niệm: • Phân loại PDA: đơn định (DPDA) khơng đơn định (NPDA) • Phép chuyển: có kiểu ✔ Phụ thuộc ký hiệu nhập: với trạng thái, ký hiệu đỉnh Stack ký hiệu nhập, PDA lựa chọn trạng thái kế tiếp, thay ký hiệu Stack di chuyển đầu đọc 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 dùng, đầu đọc khơng di chuyển • Ngôn ngữ chấp nhận PDA ✔ Bởi Stack rỗng ✔ Bởi trạng thái kết thúc Một ngôn ngữ chấp nhận PDA ngôn ngữ phi ngữ cảnh PDA Định nghĩa: PDA M hệ thống thành phần M (Q, Σ, Γ, δ, q0, Z0, F) • Q : tập hữu hạn trạng thái • Σ : chữ nhập • Γ : chữ Stack • δ : hàm chuyển Q x (Σ  {ε}) x Γ → tập Q x Γ* • q0 : trạng thái khởi đầu • Z0 : ký hiệu bắt đầu Stack • F  Q : tập trạng thái kết thúc (nếu PDA chấp nhận chuỗi Stack rỗng F = Ø) PDA Hàm chuyển δ: • Hàm chuyển phụ thuộc ký hiệu nhập δ(q, a, Z) = { (p1, γ1), (p2, γ2), , (pm, γm) } • Hàm chuyển khơng phụ thuộc ký hiệu nhập δ(q, ε, Z) = { (p1, γ1), (p2, γ2), , (pm, γm) } Ví dụ: PDA chấp nhận wcwR Stack rỗng 1) δ(q1, 0, R) = {(q1, BR)} 7) δ(q1, c, R) = {(q2, R)} 2) δ(q1, 1, R) = {(q1, YR)} 8) δ(q1, c, B) = {(q2, B)} 3) δ(q1, 0, B) = {(q1, BB)} 9) δ(q1, c, Y) = {(q2, Y)} 4) 5) 6) δ(q1, 1, B) = {(q1, YB)} δ(q1, 0, Y) = {(q1, BY)} δ(q1, 1, Y) = {(q1, YY)} 10) δ(q2, 0, B) = {(q2, ε)} 11) δ(q2, 1, Y) = {(q2, ε)} 12) δ(q2, ε, R) = {(q2, ε)} PDA Hình thái (ID): dùng để ghi nhớ trạng thái nội dung Stack (q, aw, Zα) ⊢M (p, w, βα) δ(q, a, Z) chứa (p, β) Ngơn ngữ chấp nhận PDA: • Ngơn ngữ chấp nhận trạng thái kết thúc L (M) = {w | (q0, w, Z0) ⊢* (p, ε, γ) với p  F γ  Γ*} • Ngơn ngữ chấp nhận Stack rỗng N (M) = {w | (q0, w, Z0) ⊢* (p, ε, ε) với p  Q} Ví dụ: PDA chấp nhận wcwR Stack rỗng với chuỗi nhập 001c100 (q1, 001c100, R) ⊢ (q1, 01c100, BR) ⊢ (q1, 1c100, BBR) ⊢ (q1, c100, YBBR) ⊢ (q2, 100, YBBR) ⊢ (q2, 00, BBR) ⊢ (q2, 0, BR) ⊢ (q2, ε, R) ⊢ (q2, ε, ε) : Chấp nhận PDA không đơn định (NPDA) Ví dụ: thiết kế PDA chấp nhận {wwR | w  (0 + 1)*} Stack rỗng • Khơng có ký hiệu c để biết thời điểm chuyển từ trạng thái q1 sang q2 • Bắt buộc phải đốn thử (khi thấy 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 push vào Stack ✔ Nếu ký hiệu thuộc chuỗi ngược : chuyển sang trạng thái q pop khỏi Stack • M({q1, q2}, {0, 1}, {R, B, Y}, δ, q1, R, Ø): 1) ε)} 2) 3) 4) 5) δ(q1, 0, R) = {(q1, BR)} 6) δ(q1, 1, Y) = {(q1, YY),(q2, δ(q1, 1, R) = {(q1,YR)} 7) δ(q2, 0, B) = {(q2, ε)} δ(q1, 0, B) = {(q1, BB), (q2, ε)} 8) δ(q2, 1, Y) = {(q2, ε)} δ(q1, 0, Y) = {(q1, BY)} 9) δ(q1, ε, R) = {(q2, ε)} δ(q1, 1, B) = {(q1, YB)} 10) δ(q2, ε, R) = {(q2, ε)} PDA khơng đơn định (NPDA) Ví dụ: phép chuyển hình thái PDA chấp nhận chuỗi 001100 thuộc ngơn ngữ {wwR | w  (0 + 1)*} Stack rỗng Khởi đầu  (q1, 001100, R)  (q1, 01100, BR)  (q2, 1100, R)  (q2, 1100, ) : Không chấp nhận  (q1, 1100, BBR)  (q1, 100, YBBR)  (q2, 00, BBR)   (q1, 00, YYBBR) (q2, 0, BR)  (q2, , R)  (q2, , ) : Chấp nhận  (q1, 0, BYYBBR)  (q2, , YYBBR) : Không chấp nhận  (q1, , BBYYBBR) : Không chấp nhận PDA đơn định (DPDA) Định nghĩa: PDA M(Q, Σ, Γ, δ, q0, Z0, F) gọi đơn định nếu: • q  Q Z  Γ: δ(q, ε, Z) ≠ Ø δ(q, a, Z) = Ø với a  Σ • Khơng có q  Q, Z  Γ a  (Σ  {ε}) mà δ(q, a, Z) chứa nhiều phần tử Chú ý: PDA dạng đơn định khơng đơn định khơng tương đương Ví dụ: wwR chấp nhận PDA không đơn định, không chấp nhận PDA đơn định 10 Tương đương PDA với Stack rỗng PDA với trạng thái kết thúc Định lý 6.1: Nếu ngôn ngữ phi ngữ cảnh L chấp nhận PDA chấp nhận chuỗi trạng thái kết thúc M2 L chấp nhận PDA chấp nhận chuỗi Stack rỗng M1 Cách xây dựng: Đặt M2(Q, Σ, Γ, δ, q0, Z0, F) M1(Q  {qe, q0'}, Σ, Γ, δ', q0', X• ,δ'(q ', ε, X ) = {(q , Z X )} Ø) 0 0 • δ'(q, a, Z) chứa phần tử δ(q, a, Z) với a  (Σ  {ε}) • δ'(q, ε, Z) chứa (qe, ε) với q  F Z  (Γ  {X0}) • δ'(qe, ε, Z) chứa (qe, ε) với Z  (Γ  {X0}) 11 Tương đương PDA với Stack rỗng PDA với trạng thái kết thúc Định lý 6.2: Nếu ngôn ngữ phi ngữ cảnh L chấp nhận PDA chấp nhận chuỗi Stack rỗng M1 L chấp nhận PDA chấp nhận chuỗi trạng thái kết thúc M2 Cách xây dựng: Đặt M1(Q, Σ, Γ, δ, q0, Z0, F) M2(Q  {q0', qf}, Σ, Γ  {X0}, δ', q0', X0, {qf}) • δ'(q0', ε, X0) = {(q0, Z0X0)} • δ'(q, a, Z) = δ(q, a, Z) với a  (Σ  {ε}) • δ'(q, ε, X0) chứa (qf, ε) với q  Q 12 Tương đương PDA CFL Định lý 6.4: Nếu L chấp nhận PDA chấp nhận chuỗi Stack rỗng L ngôn ngữ phi ngữ cảnh Cách xây dựng: Đặt PDA M(Q, Σ, Γ, δ, q0, Z0, Ø) chấp nhận L với Stack rỗng Đặt G(V, T, P, S) CFG, đó: • V tập đối tượng dạng [q, A, p] • S ký hiệu bắt đầu thêm vào • P tập luật sinh dạng S → [q0, Z0, q] với q  Q [q, A, qm+1] → a [q1, B1, q2][q2, B2, q3] [qm, Bm, qm+1] cho δ(q, a, A) có chứa (q1, B1B2 Bm) Nếu m = luật sinh có dạng [q, A, q1] → a 14 Tương đương PDA CFL Ví dụ: xây dựng CFG tương đương sinh ngôn ngữ chấp nhận PDA M({q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, Ø) với δ sau: δ(q0, 0, Z0) = {(q0, XZ0)} δ(q1, 1, X) = {(q1, ε)} δ(q0, 0, X) = {(q0, XX)} δ(q1, ε, X) = {(q1, ε)} δ(q0, 1, X) = {(q1, ε)} δ(q1, ε, Z0) = {(q1, ε)} Xây dựng: CFG G(V, {0, 1}, P, S) Tập biến V = [q, A, p]  S = { S, [q0, X, q0], [q0, X, q1], [q1, X, q0], [q1, X, q1], [q0, Z0, q0], [q0, Z0, q1], [q1, Z0, q0], [q1, Z0, q1] } Tập luật sinh P S → [q0, Z0, q0] | [q0, Z0, q1] δ1) [q0, Z0, q0] → [q0, X, q0] [q0, Z0, q0] | [q0, X, q1] [q1, Z0, q0] [q0, Z0, q1] → [q0, X, q0] [q0, Z0, q1] | [q0, X, q1] [q1, Z0, q1] 15 Tương đương PDA CFL δ2) [q0, X, q0] → [q0, X, q0] [q0, X, q0] | [q0, X, q1] [q1, X, q0] [q0, X, q1] → [q0, X, q0] [q0, X, q1] | [q0, X, q1] [q1, X, q1] δ3) [q0, X, q1] → δ5) [q1, X, q1] → ε δ4) [q1, X, q1] → δ6) [q1, Z0, q1] → ε Đặt: [q0, X, q0] = A, [q0, X, q1] = B, , [q0, Z0, q0] = E, , [q1, Z0, q1] = H Ta có luật sinh: Giản lược văn phạm: S→E|F S→F E → 0AE | 0BG F → 0BH S → 0B F → 0AF | 0BH B → 0BD | B → 0B | 0B1 | A → 0AA | 0BC D→ε|1 B → 0AB | 0BD | H→ε D→ε|1 H→ε 16 ... không chấp nhận PDA đơn định 10 Tương đương PDA với Stack rỗng PDA với trạng thái kết thúc Định lý 6. 1: Nếu ngôn ngữ phi ngữ cảnh L chấp nhận PDA chấp nhận chuỗi trạng thái kết thúc M2 L chấp nhận... (qe, ε) với Z  (Γ  {X0}) 11 Tương đương PDA với Stack rỗng PDA với trạng thái kết thúc Định lý 6. 2: Nếu ngôn ngữ phi ngữ cảnh L chấp nhận PDA chấp nhận chuỗi Stack rỗng M1 L chấp nhận PDA chấp... δ(q, a, Z) với a  (Σ  {ε}) • δ''(q, ε, X0) chứa (qf, ε) với q  Q 12 Tương đương PDA CFL Định lý 6. 4: Nếu L chấp nhận PDA chấp nhận chuỗi Stack rỗng L ngôn ngữ phi ngữ cảnh Cách xây dựng: Đặt

Ngày đăng: 25/07/2014, 05:20