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

16 393 1
Tin học lý thuyết - Chương 6 docx

Đ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

Chương VI : Ơtơmát đẩy xuống Chương VI ƠTƠMÁT ĐẨY XUỐNG Nội dung chính: Trong chương này, khảo sát dạng mơ hình ơtơmát khác, có khả nhận diện lớp ngôn ngữ mà văn phạm phi ngữ cảnh sinh ôtômát đẩy xuống (PDA) - với bổ sung thêm Stack đóng vai trị giữ nhớ q trình ơtơmát thực phép chuyển để nhận dạng ngôn ngữ Tiếp theo đó, mối quan hệ tương đương hai chế - ôtômát đẩy xuống CFGdùng biểu diễn cho lớp văn phạm phi ngữ cảnh nêu chứng minh chặt chẽ Mục tiêu cần đạt : Cuối chương này, sinh viên có thể: Thiết kế PDA chấp nhận ngôn ngữ phi ngữ cảnh cho trước Stack rỗng hay trạng thái kết thúc Chuyển PDA chấp nhận ngôn ngữ trạng thái kết thúc sang PDA chấp nhận ngôn ngữ Stack rỗng ngược lại Xây dựng NPDA chấp nhận ngôn ngữ sinh từ CFG Viết văn phạm phi ngữ cảnh sinh lớp ngôn ngữ chấp nhận NPDA cho trước Kiến thức bản: Để tiếp thu tốt nội dung chương này, sinh viên cần nắm vững tính chất lớp ngơn ngữ phi ngữ cảnh; chế đốn nhận ngơn ngữ dạng máy trừu tượng ôtômát thành phần bắt buộc chúng; … Tài liệu tham khảo : [1] V.J Rayward-Smith – A First course in Formal Language Theory (Second Editor) – McGraw-Hill Book Company Europe – 1995 (Chapter : Pushdown Automata ) [2] John E Hopcroft, Jeffrey D.Ullman – Introduction to Automata Theory, Languages and Computation – Addison – Wesley Publishing Company, Inc – 1979 (Chapter : Pushdown Automata ) [3] Hồ Văn Quân – Giáo trình lý thuyết ơtơmát ngơn ngữ hình thức – Nhà xuất Đại học quốc gia Tp Hồ Chí Minh – 2002 [4] Copy right by David Matuszek - NPDAs and CFGs: http://www.netaxs.com/people/nerp/automata/npda-cfg0.html 94 Chương VI : Ơtơmát đẩy xuống I ÔTÔMÁT ĐẨY XUỐNG ( PDA : PUSHDOWN AUTOMATA) Như ta biết, lớp ngơn ngữ quy sinh từ văn phạm quy, đồng thời đốn nhận ôtômát hữu hạn (đơn định không đơn định) Trong phần này, lại thấy điều tương tự lớp ngôn ngữ phi ngữ cảnh, sinh từ văn phạm phi ngữ cảnh, đốn nhận loại ơtơmát khác - gọi ơtơmát đẩy xuống (PDA) Có điều khác biệt đây, có dạng ơtơmát đẩy xuống khơng đơn định (NPDA) đủ mạnh để đốn nhận lớp ngơn ngữ phi ngữ cảnh, cịn dạng đơn định (DPDA) cho phép đoán nhận tập thực lớp ngôn ngữ Tuy nhiên, tập bao gồm phần lớn ngơn ngữ lập trình 1.1 Mơ tả PDA Ơtơmát đẩy xuống thực chất ôtômát với điều khiển hai: băng nhập Stack (bộ đẩy xuống) Về bản, giữ tất thành phần ôtômát hữu hạn, với bổ sung thêm ngăn xếp làm việc (Stack) đóng vai trị giữ nhớ, nhờ mà khả ghi nhớ ôtômát tăng thêm Stack xem chồng đĩa, đặt vào sau lấy trước (LIFO) Với mở rộng ôtômát đẩy xuống chấp nhận biểu thức khơng quy Chẳng hạn tập hợp L = {wcwR | w ∈ (0+1)*} (với wR chuỗi đảo ngược chuỗi w) ngôn ngữ phi ngữ cảnh sinh văn phạm S → 0S0 | 1S1 | c khơng thể chấp nhận ôtômát hữu hạn 1 0 1 Y B R Bộ điều khiển Hình 6.1 - Mô tả PDA Để chấp nhận ngôn ngữ L ta dùng điều khiển có hai trạng thái q1, q2 Stack ta đặt đĩa xanh (B), vàng (Y), đỏ (R) Thiết bị thao tác theo quy tắc sau đây: 1) Máy bắt đầu với đĩa đỏ Stack điều khiển trạng thái q1 95 Chương VI : Ơtơmát đẩy xuống 2) Nếu đưa vào thiết bị ta đặt đĩa xanh vào Stack Nếu đưa vào thiết bị trạng thái q1 ta đặt đĩa vàng vào Stack Cả hai trường hợp thiết bị không thay đổi trạng thái 3) Nếu c đưa vào thiết bị trạng thái q1 thiết bị đổi trạng thái sang q2 không thay đổi Stack 4) Nếu đưa vào thiết bị trạng thái q2 đỉnh Stack đĩa màu xanh đĩa lấy Nếu đưa vào thiết bị trạng thái q2 đĩa vàng đỉnh Stack ta loại bỏ đĩa Trạng thái q2 không thay đổi 5) Nếu thiết bị trạng thái q2 đĩa đỏ đỉnh Stack ta loại bỏ đĩa không cần ký hiệu nhập 6) Ngồi trường hợp thiết bị không thay đổi Các quy tắc tóm tắt bảng sau: INPUT Đỉnh Stack Trạng thái Xanh q1 q2 Vàng q1 q2 Đỏ q1 q2 Thêm đĩa xanh, giữ nguyên q1 c Thêm đĩa vàng, Chuyển sang q2 giữ nguyên q1 Xoá đỉnh Stack, giữ nguyên q2 Thêm đĩa xanh, Thêm đĩa vàng, Chuyển sang q2 giữ nguyên q1 giữ nguyên q1 Xoá đỉnh Stack giữ nguyên q2 Thêm đĩa xanh, Thêm đĩa vàng, Chuyển sang q2 giữ nguyên q1 giữ nguyên q1 Xố đỉnh Stack khơng cần đọc input Hình 6.2 - Mô tả hoạt động PDA chấp nhận ngôn ngữ {wcwR |w∈ (0+1)*} Một chuỗi chấp nhận thiết bị đọc duyệt qua đến hết chuỗi đồng thời với Stack trở trạng thái rỗng Nhận xét : Nhờ Stack có khả lưu giữ số ký hiệu mà PDA nhớ nửa phần đầu chuỗi (w) gặp ký hiệu phân cách c, cho dù chuỗi có độ dài lớn đến Và sau đó, ký hiệu đem để so sánh dần với phần chuỗi ngược cịn lại (wR) Một ơtơmát hữu hạn khơng có khả ghi nhớ 1.2 Định nghĩa Ơtơmát đẩy xuống có điều khiển hữu hạn Stack Stack chứa chuỗi ký hiệu thuộc chữ Ký hiệu bên trái chuỗi xem ký 96 Chương VI : Ơtơmát đẩy xuống hiệu đỉnh Stack PDA khơng đơn định có số hữu hạn lựa chọn phép chuyển lần chuyển Phép chuyển có hai kiểu: - Kiểu thứ phụ thuộc vào ký hiệu nhập, tức 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 chuỗi ký hiệu thay Stack, đầu đọc dịch sang phải ký hiệu - Kiểu thứ hai không phụ thuộc vào ký hiệu nhập, gọi ε - dịch chuyển : tương tự kiểu thứ nhất, ngoại trừ ký hiệu nhập không dùng đầu đọc không dịch chuyển sau chuyển trạng thái Thực chất, bước chuyển đặc biệt tạm ngừng quan sát băng nhập để xếp lại ký hiệu ngăn xếp Có hai cách để định nghĩa ngơn ngữ chấp nhận ôtômát đẩy xuống: - Ngôn ngữ chấp nhận Stack rỗng: gồm tất input mà sau chuỗi phép chuyển trạng thái làm cho ôtômát dẫn tới Stack rỗng - Ngôn ngữ chấp nhận trạng thái kết thúc: ta thiết kế số trạng thái kết thúc, ngơn ngữ chấp nhận ơtơmát định nghĩa gồm tất input mà có chuỗi phép chuyển làm cho ôtômát dẫn tới trạng thái kết thúc Ta thấy hai cách định nghĩa cho chấp nhận chuỗi tương đương trường hợp, có nghĩa tập hợp chấp nhận Stack rỗng PDA chấp nhận trạng thái kết thúc PDA khác, ngược lại Thiết kế PDA chấp nhận chuỗi trạng thái kết thúc thường phổ biến hơn, dễ dàng để chứng minh nguyên lý PDA thiết kế PDA chấp nhận chuỗi Stack rỗng Nguyên lý phát biểu sau: Một ngôn ngữ chấp nhận PDA ngơn ngữ phi ngữ cảnh Một cách hình thức, ta định nghĩa: Định nghĩa : Một ôtômát đẩy xuống M hệ thống M (Q, Σ, Γ, δ, q0, Z0, F), : 1) Q tập hữu hạn trạng thái 2) Σ chữ gọi chữ nhập 3) Γ chữ gọi chữ Stack 4) δ: hàm chuyển ánh xạ từ Q × (Σ ∪{ε}) × Γ → tập hữu hạn Q × Γ* 5) q0 trạng thái khởi đầu 5) Z0 chữ riêng Stack gọi ký hiệu bắt đầu Stack 6) F ⊆ Q tập trạng thái kết thúc (Trong trường hợp PDA thiết kế chấp nhận ngôn ngữ Stack rỗng tập hợp F = ∅) Trừ ta dùng ký hiệu khác, ta quy ước dùng chữ nhỏ gần đầu bảng chữ để ký hiệu nhập, chữ nhỏ cuối bảng chữ để chuỗi nhập Các chữ hoa chữ Hy lạp ký hiệu chuỗi ký hiệu Stack 97 Chương VI : Ơtơmát đẩy xuống Câu hỏi : So sánh thành phần định nghĩa hình thức cho ôtômát đẩy xuống PDA với ôtômát hữu hạn khảo sát chương ? Nêu khả mở rộng PDA so với FA ? Sự dịch chuyển Hàm chuyển phụ thuộc ký hiệu nhập : δ(q, a, Z) = {(p1, γ1), (p2, γ2), , (pm, γm)} q pi, ≤ i ≤ m, trạng thái thuộc tập Q, a ∈ Σ, Z ký hiệu Stack γi ∈ Γ*, ≤ i ≤ m, PDA trạng thái q với ký hiệu nhập a ký hiệu Z đỉnh Stack, vào trạng thái pi thay Z γi dịch chuyển đầu đọc ký hiệu Ta quy ước ký hiệu bên trái γi ký hiệu thay cao Stack (nghĩa nằm đỉnh Stack mới) ký hiệu bên phải γi ký hiệu thay thấp Stack Chú ý không phép chọn pi γj với i ≠ j bước chuyển Hàm chuyển khơng phụ thuộc ký hiệu nhập : δ(q, ε, Z) = {(p1, γ1), (p2, γ2), , (pm, γm)} q trạng thái mà PDA giữ, độc lập với ký hiệu nhập, PDA vào trạng thái pi thay Z γi với ≤ i ≤ m Trong trường hợp đầu đọc không dịch chuyển Thí dụ 6.1 : Mơ tả cho PDA chấp nhận ngôn ngữ {wcwR |w ∈ (0+1)*} Stack rỗng M ({q1, q2}, {0, 1, c}, {R, B, Y}, δ, q1, R, ∅ ) 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) δ(q1, 0, R) = {(q1, BR)} δ(q1, 1, R) = {(q1, YR)} δ(q1, 0, B) = {(q1, BB)} δ(q1, 1, B) = {(q1, YB)} δ(q1, 0, Y) = {(q1, BY)} δ(q1, 1, Y) = {(q1, YY)} δ(q1, c, R) = {(q2, R)} δ(q1, c, B) = {(q2, B)} δ(q1, c, Y) = {(q2, Y)} δ(q2, 0, B) = {(q2, ε)} δ(q2, 1, Y) = {(q2, ε)} δ(q2, ε, R) = {(q2, ε)} Hình 6.3 - Mơ tả PDA chấp nhận wcwR Stack rỗng Chú ý phép chuyển PDA viết lên đỉnh Stack chuỗi γ có độ dài Chẳng hạn δ(q1, 0, R) = {(q1, BR)} Nếu γ có độ dài PDA đơn giản thay 98 Chương VI : Ơtơmát đẩy xuống ký hiệu đỉnh Stack không làm thay đổi độ dài Stack Nếu γ ε PDA loại bỏ (Pop) phần tử đỉnh Stack Chẳng hạn δ(q2, ε, R) = {(q2, ε)} nghĩa PDA trạng thái q2 với R đỉnh Stack PDA xóa R độc lập với ký hiệu nhập, trường hợp đầu đọc khơng dịch chuyển, điều có nghĩa PDA khơng u cầu cịn ký hiệu chuỗi nhập Hình thái (ID : Instantaneous Descriptions) Để hình thức hóa cấu hình PDA với PDA cụ thể, ta định nghĩa hình thái (ID) ID phải ghi nhớ trạng thái nội dung Stack ID ba (q, w, γ), q trạng thái, w chuỗi nhập γ chuỗi ký hiệu Stack Nếu M (Q, Σ, Γ, δ, q0, Z0, F) PDA, ta nói : (q, aw, Zα) ⊢M (p, w, βα) δ(q, a, Z) chứa (p, β) Lưu ý a ký hiệu input ε Chẳng hạn với PDA mơ tả trên, ta có (q1, BY) ∈ δ(q1, 0, Y), suy (q1, 011, YYR) ⊢ (q1, 11, BYYR) Ta dùng ký hiệu ⊢*M cho bao đóng phản xạ bắt cầu ⊢M, tức : I ⊢* I ID I, I ⊢M J J ⊢*M K I ⊢*M K Ta viết I ⊢i K ID I trở thành K sau xác i bước chuyển Chữ số M ky 1hiệu ⊢M, ⊢iM ⊢*M bỏ qua M xác định Ngôn ngữ chấp nhận PDA Với PDA M (Q, Σ, Γ, δ, q0, Z0, F), ta định nghĩa : Ngôn ngữ chấp nhận trạng thái kết thúc là: 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} Khi có chấp nhận Stack rỗng tập trạng thái kết thúc khơng cịn cần thiết ta ký hiệu tập trạng thái kết thúc F ∅ Thí dụ 6.2 : Các phép chuyển hình thái PDA chấp nhận chuỗi 001c100 thuộc ngôn ngữ {wcwR |w ∈ (0+1)*} Stack rỗng sau : (q1, 001c100, R) ⊢ (q1, 01c110, YR) ⊢ (q1, 1c110, YYR) ⊢ (q1, c100, BYYR) ⊢ (q2, 100, BYYR) ⊢ (q2, 00, YYR) ⊢ (q2, 0, YR) ⊢ (q2, ε, R) ⊢ (q2, ε, ε) : Chấp nhận Nhận xét : Trong ví dụ thiết kế PDA chấp nhận ngơn ngữ {wcwR |w ∈ (0+1)*} Stack rỗng trên, ta thấy giá trị hàm chuyển ln là đơn trị Tại thời điểm từ trạng thái điều khiển, đọc vào không đọc ký hiệu băng nhập, với ký hiệu đỉnh Stack, có giá trị xác định 99 Chương VI : Ơtơmát đẩy xuống bước chuyển Vì thế, ta gọi dạng PDA ôtômát đẩy xuống đơn định DPDA PDA không đơn định (NPDA) Thí dụ 6.3 : Thiết kế PDA chấp nhận ngôn ngữ {wwR | w ∈ (0+1)*} Stack rỗng Câu hỏi : Hãy nêu vai trò ký hiệu c ngơn ngữ cho thí dụ 6.1 cho nhận xét khác biệt dạng chuỗi thuộc ngơn ngữ thí dụ 6.3 với thí dụ 6.1 nêu ? Rõ ràng ta thấy khơng có diện ký hiệu c chuỗi nhập để xác định thời điểm điều khiển chuyển từ trạng thái q1 sang trạng thái q2, vấn đề trở nên phức tạp cần phải định đâu ký hiệu bắt đầu cho chuỗi ngược (wR) ? Ở thời điểm mà điều khiển đọc thấy hai ký hiệu liên tiếp giống chuỗi nhập bắt buộc phải đốn thử hai khả cho ký hiệu thứ hai: giữ trạng thái q1 Push vào Stack xem ký hiệu thuộc chuỗi xuôi (w), chuyển sang trạng thái q2 Pop khỏi Stack xem ký hiệu bắt đầu cho chuỗi ngược (wR) Mô tả PDA không đơn định chấp nhận ngôn ngữ {wwR |w ∈ (0+1)*} Stack rỗng M ({q1, q2}, {0, 1}, {R, B, Y}, δ, q1, R, ∅ ) 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) δ(q1, 0, R) = {(q1, BR)} δ(q1, 1, R) = {(q1,YR)} δ(q1, 0, B) = {(q1, BB), (q2, ε)} δ(q1, 0, Y) = {(q1, BY)} δ(q1, 1, B) = {(q1, YB)} δ(q1, 1, Y) = {(q1, YY),(q2, ε)} δ(q2, 0, B) = {(q2, ε)} δ(q2, 1, Y) = {(q2, ε)} δ(q1, ε, R) = {(q2, ε)} δ(q2, ε, R) = {(q2, ε)} Hình 6.4 - Mơ tả PDA khơng đơn định chấp nhận wwR Stack rỗng Quy tắc (1) đến (3) cho phép M lưu trữ input Stack, quy tắc (3) (6) cho phép M lựa chọn hai phép chuyển M định (đốn) đến chuỗi chuyển sang phép chuyển thứ 2: M chuyển sang q2 thử thích hợp phần chuỗi lại với ký hiệu Stack Nếu M đoán chuỗi nhập có dạng wwR M làm rỗng Stack chấp nhận chuỗi nhập 100 Chương VI : Ơtơmát đẩy xuống Cũng NFA PDA khơng đơn định (NPDA) M chấp nhận input có chuỗi lựa chọn mà M làm rỗng Stack Nghĩa M ln ln "đốn đúng", đốn sai nguyên nhân để loại bỏ input Một input bị loại bỏ lựa chọn để làm rỗng Stack (hay khơng thể "đốn đúng" khơng tồn cách đúng) Thí dụ 6.4 : Các 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 sau : Khởi đầu ↓ (q1, 001100, R) → (q2, 001100, ε) : Không chấp nhận ↓ (q1, 01100, BR) → (q2, 1100, R) → (q2, 1100, ε) : Không chấp nhận ↓ (q1, 1100, BBR) ↓ (q1, 100, YBBR) → (q2, 00, BBR) ↓ ↓ (q2, 0, BR) → (q2, ε, R) → (q2, ε, ε) : Chấp nhận (q1, 00, YYBBR) ↓ (q1, 0, BYYBBR) → (q2, ε, YYBBR) : Không chấp nhận ↓ (q1, ε, BBYYBBR) : Không chấp nhận Hình 6.5 - Hình thái PDA với input 001100 PDA đơn định (DPDA) Một PDA M (Q, Σ, Γ, δ, q0, Z0, F) gọi đơn định nếu: 1) ∀q ∈ Q Z ∈ Γ: δ(q, ε, Z) ≠ ∅ δ(q, a, Z) = ∅, ∀a ∈ Σ 2) Khơng có q ∈Q, Z ∈ Γ a ∈ (Σ ∪ {ε}) mà δ(q, a, Z) chứa nhiều phần tử Điều kiện không cho phép khả chọn lựa phép chuyển không xác định ký hiệu nhập (ε - dịch chuyển) phép chuyển ký hiệu input Điều kiện không cho phép chọn lựa vài phép chuyển (q, a, Z) hay (q, ε, Z) Khơng ơtơmát hữu hạn FA, PDA thơng thường xét khơng đơn định trừ ta có ghi cụ thể Đối với ôtômát hữu hạn, dạng đơn định không đơn định tương đương phương diện chấp nhận ngôn ngữ Tuy nhiên, điều không với ôtômát đẩy xuống, PDA không đơn định PDA đơn định không tương đương Thực tế ngôn ngữ wwR chấp nhận PDA không đơn định không chấp nhận PDA đơn định 101 Chương VI : Ơtơmát đẩy xuống II PDA VÀ VĂN PHẠM PHI NGỮ CẢNH 2.1 Tương đương việc chấp nhận chuỗi trạng thái kết thúc Stack rỗng ĐỊNH LÝ 6.1: Nếu L L(M2) với PDA M2 L N(M1) với PDA M1 Chứng minh Ta xây dựng M1 tương tự M2 M1 xóa rỗng Stack M2 vào trạng thái kết thúc Ta dùng trạng thái qe M1 để xóa Stack dùng ký hiệu đánh dấu đáy Stack M1 ký hiệu X0, M1 khơng thể làm rỗng Stack M2 chưa vào trạng thái kết thúc Đặt M2 (Q, Σ, Γ, δ, q0, Z0, F) PDA cho L = L(M2) Đặt M1 (Q ∪ {qe, q0’}, Σ, Γ, δ’, q0’, X0, ∅) δ’ định nghĩa sau: 1) δ’(q0’, ε, X0) = {(q0, Z0X0)} 2) δ’(q, a, Z) chứa phần tử δ(q, a, Z), ∀q ∈ Q, a ∈ Σ a = ε Z ∈ Γ 3) ∀q ∈ F Z ∈ Γ ∪ {X0}, δ’(q, ε, Z) chứa (qe, ε) 4) ∀Z ∈ Γ ∪ {X0}, δ’(q0’, ε, Z) chứa (qe, ε) Quy tắc làm cho PDA M1 vào trạng thái khởi đầu M2 trừ việc thêm X0 vào đáy Stack Quy tắc cho phép M1 chuyển tương tự M2 Quy tắc cho phép M1 chọn việc vào trạng thái qe xoá Stack tiếp tục mơ M2 Chú ý M2 xóa rỗng Stack chưa tới trạng thái kết thúc M1 phải đánh dấu đáy Stack X0 Vì khơng làm M1 chuyển tương tự M2, M1 xoá rỗng Stack chấp nhận input M2 chưa vào trạng thái kết thúc nghĩa input chưa chấp nhận Đặt x ∈ L(M2) (q0, x, Z0) ⊢*M2 (q, ε, γ) với q ∈ F Ta xét M1 với input x Theo quy tắc : (q0’, x, X0) ⊢*M1 (q0, x, Z0X0) Theo quy tắc phép chuyển M2 phép chuyển M1, vậy: (q0, x, Z0) ⊢*M1 (q, ε, γ) Nếu PDA thực chuỗi phép chuyển từ ID cho làm chuỗi phép chuyển từ ID thu từ ID cách thêm chuỗi ký hiệu Stack vào chuỗi Stack ban đầu (vì ký hiệu phía Stack khơng làm ảnh hưởng gì) Vậy (q0’, x, X0) ⊢M1 (q0, x, Z0X0) ⊢*M1 (q, ε, γX0) Theo quy tắc : (q, ε, γX0) ⊢*M1 (qe, ε, ε) 102 Chương VI : Ơtơmát đẩy xuống Vì (q0’, x, X0) ⊢*M1 (qe, ε, ε) M1 chấp nhận chuỗi x Stack rỗng Ngược lại, M1 chấp nhận x Stack rỗng dễ dàng chuỗi phép chuyển phải bắt đầu phép chuyển theo quy tắc 1, sau chuỗi phép chuyển theo quy tắc 2, thực phép chuyển M1 chuyển tương tự M2, sau xóa Stack M1 quy tắc chuyển Vậy x ∈ L(M2) ĐỊNH LÝ 6.2 : Nếu L N(M1) với PDA M1 L L(M2) với PDA M2 Chứng minh Ta xây dựng M2 tương tự M1 M2 vào trạng thái kết thúc M1 làm rỗng Stack Đặt M1 (Q, Σ, Γ, δ, q0, Z0, F) PDA cho L = N(M1) Đặt M2 (Q ∪ {q0’, qf}, Σ, Γ ∪ {X0}, δ’, q0’, X0, {qf}) δ’ định nghĩa sau: 1) δ’(q0’, ε, X0) = {(q0, Z0X0)} 2) ∀q ∈ Q, a ∈ Σ ∪ {ε}, Z ∈ Γ : δ’(q, a, Z) = δ(q, a, Z) 3) ∀q ∈ Q, δ’(q, ε, X0) chứa (qf, ε) Quy tắc cho phép M2 vào hình thái khởi đầu ID M1, trừ việc M2 có chứa đáy Stack ký hiệu X0, ký hiệu nằm bên tất ký hiệu Stack M1 Quy tắc cho phép M2 chuyển tương tự M1 Khi M1 làm rỗng Stack nó, M2 chuyển tương tự M1 xóa tồn Stack trừ ký hiệu X0 nằm đáy Stack Quy tắc làm cho M2 sau gặp X0 xuất vào trạng thái kết thúc chấp nhận input x Chứng minh L(M2) = N(M1) tương tự định lý 6.1 2.2 Tương đương PDA CFL ĐỊNH LÝ 6.3: Nếu L ngơn ngữ phi ngữ cảnh tồn PDA M cho L = N(M) Chứng minh Giả sử ε khơng thuộc L(G) (có thể sửa đổi lý luận cho trường hợp ngơn ngữ L(G) có chứa ε) Đặt G (V, T, P, S) văn phạm phi ngữ cảnh có dạng chuẩn Greibach sinh L Đặt M ({q}, T, V, δ, q, S, ∅), δ(q, a, A) chứa (q, γ) A → aγ luật sinh P PDA M mô chuỗi dẫn xuất trái G Vì G dạng chuẩn Greibach nên dạng câu dẫn xuất trái gồm chuỗi ký hiệu kết thúc x sau chuỗi biến α M lưu trữ phần hậu tố α dạng câu bên trái Stack sau xử lý phần tiền tố x 103 Chương VI : Ơtơmát đẩy xuống Một cách hình thức ta : S ⇒* xα dẫn xuất trái (q, x, S) ⊢*M (q, ε, α) (1) Trước tiên, giả sử (q, x, S) ⊢i (q, ε, α) quy nạp theo số lần i S ⇒* xα Với i = 0, điều hiển nhiên x = ε α = S Giả sử i ≥ đặt x = ya Xét bước chuyển hình thái trước bước cuối : (q, ya, S) ⊢i -1 (q, a, β) ⊢ (q, ε, α) (2) Nếu loại bỏ ký hiệu a cuối chuỗi input hình thái (2), ta có: (q, y, S) ⊢i -1 (q, ε, β) (vì a khơng ảnh hưởng đến phép chuyển M) Theo giả thiết quy nạp S ⇒* yβ Phép chuyển (q, a, β) ⊢ (q, ε, α) suy β = Aγ, với A ∈ V A → aη luật sinh G α = ηγ Vậy S ⇒* yβ ⇒ yaηγ = xα Ta chứng minh xong "nếu" giả thiết (1) Ngược lại, ta giả sử S ⇒i xα dẫn xuất trái Ta chứng minh quy nạp theo số bước dẫn xuất i rằng: (q, x, S) ⊢* (q, ε, α) Với i = 0: phép chuyển hiển nhiên Xét i ≥ giả sử S ⇒i -1 yAγ ⇒ yaηγ, x = ya α = ηγ Theo giả thiết quy nạp : (q, y, S) ⊢* (q, ε, Aγ) Vậy (q, ya, S) ⊢* (q, a, Aγ) Vì A → aη luật sinh nên δ(q, a, A) chứa (q, η) Vậy : (q, x, S) ⊢* (q, a, Aγ) ⊢* (q, ε, α) Hay phần "chỉ nếu" giả thiết (1) chứng minh xong Để kết thúc việc chứng minh, ta ý giả thiết (1) với α = ε S ⇒* x (q, x, S) ⊢* (q, ε, ε) Tức x ∈ L(G) x ∈ N(M) Thí dụ 6.3 : Xây dựng NPDA chấp nhận ngôn ngữ sinh CFG G có luật sinh sau : S → aAA A → aS | bS | a Ta có : CFG G ( {S, A}, {a, b}, P, S ) NPDA tương đương M ({q}, {a, b}, {S, A}, δ, q, S, ∅) với δ sau : 1) δ (q, a, S) = {(q, AA)} 2) δ (q, a, A) = {(q, S), (q, ε)} 3) δ (q, b, A) = {(q, ε)} ĐỊNH LÝ 6.4 : Nếu L N(M) với PDA M L ngơn ngữ phi ngữ cảnh Chứng minh Gọi PDA M (Q, Σ, Γ, δ, q0, Z0, ∅) Đặt G (V, Σ, P, S) CFG, : 104 Chương VI : Ôtômát đẩy xuống V tập đối tượng dạng [q, A, p] với p, q ∈ Q; A ∈ Γ S ký hiệu chưa kết thúc thêm vào P tập luật sinh có dạng : 1) S → [q0, Z0, q] ,∀q ∈ Q 2) [q, A, q m+1] → a[q1, B1, q2][q2, B2, q3] [qm, Bm, qm+1] ∀q, q1, q2, , qm+1 ∈ Q, a ∈ Σ ∪ {ε} A, B1, B2, , Bm ∈ Γ cho δ(q, a, A) có chứa (q1, B1B2 Bm) Nếu m = luật sinh có dạng [q, A, q1] → a Để nắm chứng minh, cần phải lưu ý biến luật sinh G xác định cho dẫn xuất trái G x mô PDA cho x nhập vào Cụ thể hơn, biến xuất bước G tương đương với ký hiệu Stack M Nói cách khác [q, A, p] dẫn x x nguyên nhân làm M xố rỗng Stack chuỗi phép chuyển từ trạng thái q đến trạng thái p B Để chứng minh L(G) = N(M), ta quy nạp theo số bước dẫn xuất G số bước chuyển trạng thái M [q, A, p] ⇒*G x (q, x, A) ⊢*M (p, ε, ε) Thí dụ 6.4 : Xây dựng CFG G tương đương sinh ngôn ngữ chấp nhận PDA sau : M ( {q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, ∅ ) với δ cho sau : 1) δ (q0, 0, Z0) = {(q0, XZ0)} 2) δ (q0, 0, X) = {(q0, XX)} 3) δ (q0, 1, X) = {(q1, ε)} 4) δ (q1, 1, X) = {(q1, ε)} 5) δ (q1, ε, X) = {(q1, ε)} 6) δ (q1, ε, Z0) = {(q1, ε)} Ta xây dựng CFG G (V, {0, 1}, P, S) sinh N(M) với thành phần sau : V = { 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 chứa luật sinh có dạng : Các luật sinh cho ký hiệu bắt đầu S : S → [q0, Z0, q0] | [q0, Z0, q1] Các luật sinh cho biến khác V xây dựng từ hàm chuyển PDA sau : [q0, Z0, q0] → [q0, X, q0][q0, Z0, q0] δ1) | [q0, X, q1][q1, Z0, q0] [q0, Z0, q1] → [q0, X, q0][q0, Z0, q1] | [q0, X, q1][q1, Z0, q1] δ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] → δ4) [q1, Z0, q1] → ε 105 Chương VI : Ơtơmát đẩy xuống δ5) δ6) [q1, X, q1] → ε [q1, X, q1] → Nhận xét khơng có luật sinh cho biến [q1, X, q0] [q1, Z0, q0] Vì tất luật sinh cho biến [q0, X, q0] [q0, Z0, q0] có chứa [q1, X, q0] [q0, Z0, q0] vế phải, nên có chuỗi ký hiệu kết thúc dẫn từ biến [q0, X, q0] [q0, Z0, q0] Loại bỏ biến khỏi tập biến V xóa luật sinh có liên quan đến chúng tập P, ta thu văn phạm có dạng sau: S → [q0, Z0, q1] [q0, Z0, q1] → [q0, X, q1][q1, Z0, q1] [q0, X, q1] → [q0, X, q1][q1, X, q1] [q0, X, q1] → [q1, Z0, q1] → ε [q1, X, q1] → ε [q1, X, q1] → Câu hỏi : Sinh viên dùng kiến thức học chương trước (ĐỊNH LÝ 5.2) để viết văn phạm tương đương với văn phạm chứa ký hiệu vơ ích ? 2.3 Quan hệ CFL tập hợp quy ĐỊNH LÝ 6.5 :Nếu L CFL R tập quy L ∩ R CFL Chứng minh Đặt L L(M) với PDA M (QM, Σ, Γ, δM, q0, Z0, FM) đặt R L(A) với DFA A (QA, ∑, δA, p0, FA) Ta xây dựng PDA M’ cho L ∩ R cách cho M A “chạy song song” Tức với ký hiệu nhập a M A thực phép chuyển độc lập M’ chấp nhận input M A chấp nhận Input A, M M’ Bộ điều khiển M’ 106 Bộ điều khiển A Bộ điều khiển M Satck M M’ Chương VI : Ơtơmát đẩy xuống Hình 6.6 - Chạy FA PDA song song Một cách hình thức, đặt M’ (QA × QM, Σ, Γ, δ, [p0, q0], Z0, FA × FM), hàm chuyển δ xác định sau : δ ([p, q], a, X) chứa ([p’, q’], γ) ⇔ δA(p, a) = p’ δM(q, a, X) chứa (q’, γ) Chú ý a ε, p’ = p Dễ dàng chứng minh quy nạp theo i : ([p0, q0], w, Z0) ⊢iM ’ ([p, q], ε, γ) ⇔ (q0, w, Z0) ⊢iM (q, ε, γ) δ(p0, w) = p (1) Với i = 0: (1) hiển nhiên p = p0, q = q0, γ = Z0 w = ε Giả sử (1) tới i - (i > 0) Xét ([p0, q0], xa, Z0) ⊢i -1M ’ ([p’, q’], a, β) ⊢M ’ ([p, q], ε, γ) , w = xa a ε ký hiệu ∈ Σ Theo giả thiết quy nạp, δA(p0, x) = p’ (q0, x, Z0) ⊢i -1M (q’, ε, β) Theo định nghĩa δ, thực tế ([p’, q’], a, β) ⊢M ‘ ([p, q], ε, γ) nên suy δA(p’, a) = p (q’, a, β) ⊢M (q, ε, γ) Vậy δA(p0, w) = p (q0, w, Z0) ⊢*M (q, ε, γ) Tương tự, ta chứng minh : Nếu (q0, w, Z0) ⊢iM (q, ε, γ) δA(p0, w) = p ([p0, q0], w, Z0) ⊢*M ’ ([p, q], ε, γ) (xem phần tập) Tổng kết chương VI: Đến chương này, nắm bắt vài ý tưởng liên quan đến khái niệm ngôn ngữ quy, ngơn ngữ phi ngữ cảnh, mối quan hệ chúng với dạng ôtômát hữu hạn đẩy xuống Những khảo sát chứng tỏ ngơn ngữ quy thực tập hợp ngôn ngữ phi ngữ cảnh, đó, ơtơmát đẩy xuống xét mặt có khả nhận dạng ngôn ngữ mạnh nhiều so với ôtômát hữu hạn Điều gợi cho ý tưởng mở rộng khả đốn nhận ngơn ngữ chế ơtơmát Nếu so sánh ôtômát hữu hạn ôtômát đẩy xuống, ta thấy chất khác 107 Chương VI : Ôtômát đẩy xuống biệt thể lưu trữ tạm thời dùng Stack Nếu khơng có lưu trữ, có dạng ơtơmát hữu hạn, lưu trữ Stack, ta có dạng ơtơmát đẩy xuống mạnh Từ suy luận này, hồn tồn mong đợi để định nghĩa họ ngơn ngữ rộng lớn cung cấp cho chế ôtômát nhớ với khả lưu trữ linh hoạt Điều dẫn đến khái niệm máy Turing giới thiệu chương sau, chế ơtơmát có tính máy móc hay tính giải thuật BÀI TẬP CHƯƠNG VI 6.1 Xây dựng PDA chấp nhận ngôn ngữ : a) {0m 1m 2n | m, n ≥ 1} b) {ak bl cn dm | m = k + l + n} c) {w | w ∈ {a, b}* #a(w) = #b(w)} d) {w | w ∈ {a,b}* #a(w) = 2#b(w)} 6.2 Xây dựng PDA tương đương với văn phạm : a) S → + SS | *SS | a b) S → aS | bS | aA A → bB| b B → aC C→b 6.3 Xây dựng văn phạm CFG tương đương với PDA sau : a) M ({q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, ∅), δ cho sau: δ(q0, 1, Z0) = {(q0, XZ0)} δ(q0, 0, X) = {(q0, XX)} δ(q0, 1, X) = {(q1, ε)} δ(q1, 1, X) = {(q1, ε)} δ(q1, ε, X) = {(q1, ε)} δ(q1, ε, Z0) = {(q1, ε)} b) M ({q0, q1}, {0, 1}, {Z0, X}, δ, q0, Z0, ∅), δ cho sau: δ(q0, 1, Z0) = {(q0, XZ0)} δ(q0, 1, X) = {(q0, XX)} δ(q0, 0, X) = {(q1, X)} δ(q0, ε, Z0) = {(q0, ε)} δ(q1, 1, X) = {(q1, ε)} δ(q1, 0, Z0) = {(q0, Z0)} c) M ({q0, q1}, {a, b, c}, {Z0, X}, δ, q0, Z0, ∅), δ cho sau: δ(q0, a, Z0) = {(q0, X)} δ(q0, a, X) = {(q0, XX)} δ(q0, c, X) = {(q1, X)} 108 Chương VI : Ơtơmát đẩy xuống δ(q0, b, Z0) = {(q0, X)} δ(q0, b, X) = {(q0, XX)} δ(q1, c, X) = {(q1, ε)} 109 ... = N(M1) tương tự định lý 6. 1 2.2 Tương đương PDA CFL ĐỊNH LÝ 6. 3: Nếu L ngơn ngữ phi ngữ cảnh tồn PDA M cho L = N(M) Chứng minh Giả sử ε khơng thuộc L(G) (có thể sửa đổi lý luận cho trường hợp... Sinh viên dùng kiến thức học chương trước (ĐỊNH LÝ 5.2) để viết văn phạm tương đương với văn phạm khơng có chứa ký hiệu vơ ích ? 2.3 Quan hệ CFL tập hợp quy ĐỊNH LÝ 6. 5 :Nếu L CFL R tập quy L... nhận input M A chấp nhận Input A, M M’ Bộ điều khiển M’ 1 06 Bộ điều khiển A Bộ điều khiển M Satck M M’ Chương VI : Ơtơmát đẩy xuống Hình 6. 6 - Chạy FA PDA song song Một cách hình thức, đặt M’ (QA

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

Từ khóa liên quan

Mục lục

  • Chương VI

  • ÔTÔMÁT ĐẨY XUỐNG

    • I. ÔTÔMÁT ĐẨY XUỐNG ( PDA : PUSHDOWN AUTOMATA)

      • 1.1. Mô tả PDA

      • q1

      • 1.2. Định nghĩa

      • II. PDA VÀ VĂN PHẠM PHI NGỮ CẢNH

        • 2.1. Tương đương của việc chấp nhận chuỗi bởi trạng thái kết thúc và bởi Stack rỗng

        • 2.2. Tương đương giữa PDA và CFL

        • 2.3. Quan hệ giữa CFL và tập hợp chính quy

        • BÀI TẬP CHƯƠNG VI

Tài liệu cùng người dùng

Tài liệu liên quan