Bài giảng Tin học: Chương 6 - Võ Huỳnh Trâm
lượt xem 3
download
Bài giảng "Tin học - Chương 5: Automata đẩy xuống" cung cấp cho người học các kiến thức: 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à CFL. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Tin học: Chương 6 - Võ Huỳnh Trâm
- Chương 6: 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à CFL 1
- 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: CFL 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ộ điều khiển B R 2
- PDA Ví dụ: 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: 3
- 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. 4
- PDA Định nghĩa: một PDA M là một hệ thống 7 thành phần M (Q, Σ, Γ, δ, q0, Z0, 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 Γ* • 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 = Ø) 5
- 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 bằng 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) δ(q1, 1, B) = {(q1, YB)} 10) δ(q2, 0, B) = {(q2, ε)} 5) δ(q1, 0, Y) = {(q1, BY)} 11) δ(q2, 1, Y) = {(q2, ε)} 6) δ(q1, 1, Y) = {(q1, YY)} 12) δ(q2, ε, R) = {(q2, ε)} 6
- 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 | (q0, w, Z0) ⊢* (p, ε, γ) với p ∈ F và γ ∈ Γ*} • Ngôn ngữ được chấp nhận bởi Stack rỗng N (M) = {w | (q0, w, Z0) ⊢* (p, ε, ε) với p ∈ Q} Ví dụ: PDA chấp nhận wcwR bằng 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 7
- PDA không đơn định (NPDA) Ví dụ: thiết kế PDA chấp nhận {wwR | 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 q1 sang q2 • 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 và push 1 vào Stack ✔ Nếu ký hiệu thuộc chuỗi ngược : chuyển sang trạng thái q và pop 2 khỏi Stack • M({q1, q2}, {0, 1}, {R, B, Y}, δ, q1, R, Ø): 1) δ(q1, 0, R) = {(q1, BR)} 6) δ(q1, 1, Y) = {(q1, YY),(q2, ε)} 2) δ(q1, 1, R) = {(q1,YR)} 7) δ(q2, 0, B) = {(q2, ε)} 3) δ(q1, 0, B) = {(q1, BB), (q2, ε)} 8) δ(q2, 1, Y) = {(q2, ε)} 4) δ(q1, 0, Y) = {(q1, BY)} 9) δ(q1, ε, R) = {(q2, ε)} 5) δ(q1, 1, B) = {(q1, YB)} 10) δ(q2, ε, R) = {(q2, ε)} 8
- 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ữ {wwR | w ∈ (0 + 1)*} bằng 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 9
- PDA đơn định (DPDA) Định nghĩa: một PDA M(Q, Σ, Γ, δ, q0, Z0, 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ụ: 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. 10
- 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 M2 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 M1 Cách xây dựng: Đặt M2(Q, Σ, Γ, δ, q0, Z0, F) và M1(Q ∪ {qe, q0'}, Σ, Γ, δ', q0', X0, Ø) • δ'(q0', ε, X0) = {(q0, Z0X0)} • δ'(q, a, Z) chứa mọi phần tử của δ(q, a, Z) với a ∈ (Σ ∪ {ε}) • δ'(q, ε, Z) chứa (qe, ε) với ∀q ∈ F và Z ∈ (Γ ∪ {X0}) • δ'(qe, ε, Z) chứa (qe, ε) với ∀Z ∈ (Γ ∪ {X0}) 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.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 M1 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 M2 Cách xây dựng: Đặt M1(Q, Σ, Γ, δ, q0, Z0, F) và 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 giữa PDA và CFL Đị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 ε Đặt M({q}, T, V, δ, q, S, Ø) là PDA chấp nhận L với Stack rỗng • δ'(q, a, A) = (q, γ) khi và chỉ khi A → aγ 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)} 13
- Tương đương giữa PDA và CFL Đị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 PDA M(Q, Σ, Γ, δ, q0, Z0, Ø) chấp nhận L với Stack rỗng Đặt G(V, T, P, S) là CFG, trong đó: • V là tập các đối tượng dạng [q, A, p] • 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 → [q0, Z0, q] với ∀q ∈ Q 2. [q, A, qm+1] → a [q1, B1, q2][q2, B2, q3]...[qm, Bm, qm+1] sao cho δ(q, a, A) có chứa (q1, B1B2...Bm) Nếu m = 0 thì luật sinh có dạng [q, A, q1] → a 14
- Tương đương giữa PDA và CFL Ví dụ: xây dựng CFG tương đương sinh ra ngôn ngữ được chấp nhận bởi PDA M({q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, Ø) với δ như sau: 1. δ(q , 0, Z ) = {(q , XZ )} 4. δ(q , 1, X) = {(q , ε)} 0 0 0 0 1 1 2. δ(q0, 0, X) = {(q0, XX)} 5. δ(q1, ε, X) = {(q1, ε)} 3. δ(q0, 1, X) = {(q1, ε)} 6. δ(q1, ε, Z0) = {(q1, ε)} Xây dựng: CFG G(V, {0, 1}, P, S) 1. Tập các 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] } 2. Tập các luật sinh P S → [q0, Z0, q0] | [q0, Z0, q1] δ1) [q0, Z0, q0] → 0 [q0, X, q0] [q0, Z0, q0] | 0 [q0, X, q1] [q1, Z0, q0] [q0, Z0, q1] → 0 [q0, X, q0] [q0, Z0, q1] | 0 [q0, X, q1] [q1, Z0, q1] 15
- Tương đương giữa PDA và CFL δ2) [q0, X, q0] → 0 [q0, X, q0] [q0, X, q0] | 0 [q0, X, q1] [q1, X, q0] [q0, X, q1] → 0 [q0, X, q0] [q0, X, q1] | 0 [q0, X, q1] [q1, X, q1] δ3) [q0, X, q1] → 1 δ5) [q1, X, q1] → ε δ4) [q1, X, q1] → 1 δ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 F → 0AF | 0BH S → 0B B → 0BD | 1 A → 0AA | 0BC B → 0B | 0B1 | 1 D→ε|1 B → 0AB | 0BD | 1 H→ε D→ε|1 H→ε 16
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học - Chương 4: Hàm trong Excel
20 p | 301 | 60
-
Bài giảng Tin học đại cương: Chương 1 - Học viện ngân hàng
7 p | 383 | 24
-
Bài giảng Tin học đại cương: Bài 6 - ĐH Bách khoa Hà Nội
13 p | 136 | 10
-
Bài giảng Tin học đại cương: Chương 2 - Tin học và công nghệ thông tin
12 p | 184 | 10
-
Bài giảng Tin học đại cương (Introduction to Informatics) - Chương 0: Giới thiệu môn học
5 p | 15 | 7
-
Bài giảng Tin học: Chương 4 - Võ Huỳnh Trâm
3 p | 89 | 6
-
Bài giảng Tin học ứng dụng - Chương 3: Chương trình ứng dụng
14 p | 25 | 5
-
Bài giảng Tin học: Chương 7 - Võ Huỳnh Trâm
12 p | 94 | 5
-
Bài giảng Tin học đại cương: Bài 8 - TS. Trần Quang Diệu
15 p | 53 | 3
-
Bài giảng Tin học: Chương 5 - Võ Huỳnh Trâm
7 p | 69 | 3
-
Bài giảng Tin học: Chương 3 - Võ Huỳnh Trâm
8 p | 75 | 2
-
Bài giảng Tin học cơ sở: Bài 9 - Ngôn ngữ lập trình và chương trình dịch - Đào Kiến Quốc
15 p | 78 | 2
-
Bài giảng Tin học đại cương: Bài 3 - ThS. Đinh Phú Hùng
19 p | 40 | 2
-
Bài giảng Tin học: Chương 2 - Võ Huỳnh Trâm
5 p | 61 | 2
-
Bài giảng Tin học: Chương 5 - Trường CĐ Cộng đồng Lai Châu
16 p | 19 | 2
-
Bài giảng Tin học: Chương 1 - Võ Huỳnh Trâm
5 p | 59 | 2
-
Bài giảng Tin học đại cương: Bài 1 - ThS. Đinh Phú Hùng
10 p | 48 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn