Văn Phạm và các chủ đề liên quan

34 201 1
Văn Phạm và các chủ đề liên quan

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC ──────── * ─────── BÁO CÁO MÔN HỌC LÝ THUYẾT OTOMAT VÀ NGƠN NGỮ HÌNH THỨC CHỦ ĐỀ VĂN PHẠM VÀ CÁC VẤN ĐỀ LIÊN QUAN Sinh viên thực : Nhóm Tốn tin – K59 Giáo viên hướng dẫn: ThS Ngô Thị Hiền HÀ NỘI 5-2018 Sinh viên thực hiện: Nhóm MỤC LỤC LỜI NÓI ĐẦU LÝ THUYẾT CƠ SỞ Các khái niệm ngơn ngữ hình thức 1.1 Bảng chữ 1.2 Từ 1.3 Ngôn ngữ Các phép toán từ 2.1 Phép nhân ghép 2.2 Phép lấy từ ngược 2.3 Phép chia từ Các phép tốn ngơn ngữ 3.1 Phép hợp 3.2 Phép giao 3.3 Phép lấy phần bù 3.4 Phép nhân ghép 3.5 Phép lặp 3.6 Phép lấy ngôn ngữ ngược 3.7 Phép chia ngôn ngữ VĂN PHẠM 10 Định nghĩa 10 1.1 Mở đầu 10 1.2 Định nghĩa 10 Ngôn ngữ sinh văn phạm 11 2.1 Ngôn ngữ sinh văn phạm 11 2.2 Thuật toán G  L(G) 12 Phân cấp văn phạm theo chomsky Cây dẫn xuất 13 3.1 Phân cấp văn phạm theo Chomsky 13 3.2 Ví dụ 13 3.3 Cây dẫn xuất 15 Văn phạm tuyến tính 18 4.1 Văn phạm tuyến tính 18 4.2 Xây dựng văn phạm tuyến tính phải từ văn phạm tuyến tính trái 18 Sự tương đương văn phạm quy otomat hữu hạn 20 5.1 Sự tương đương văn phạm quy otomat hữu hạn 20 Sinh viên thực hiện: Nhóm 5.2 Xây dựng NFA từ văn phạm tuyến tính phải 21 5.3 Xây dựng văn phạm tuyến tính từ NFA 24 Giải thuật CYK 27 6.1 Văn phạm phi ngữ cảnh (CFG) Chuẩn Chomsky (CNF) 27 6.2 Giải thuật Coke- Kasami – Younger (CYK): 29 Sinh viên thực hiện: Nhóm LỜI NĨI ĐẦU Lý thuyết tính tốn nhiều ngành khác nó, chẳng hạn mật mã học, có liên quan mật thiết với lý thuyết ngôn ngữ Các tập vào thiết bị tính tốn xem ngơn ngữ nói cách sâu sắc mơ hình tính tốn đồng với lớp đặc tả ngôn ngữ theo nghĩa Trong chương trước giảng theo dõi ngơn ngữ gì, chất tính chất ngơn ngữ Trong báo cáo chúng em trình bày CÂY DẪN XUẤT VÀ THUẬT TOÁN CYK Tất liên quan đến văn phạm, đối tượng thú vị ngôn ngữ hình thức Văn phạm coi “hàm sinh” ngôn ngữ Từ tập khởi đầu quy tắc sinh văn phạm ta thu tập hợp từ ngữ ngôn ngữ định Như văn phạm liên quan mật thiết tới otomat hay không văn phạm đối tượng sinh ngơn ngữ otomat máy để đốn nhận ngơn ngữ Liệu otomat đốn nhận ngơn ngữ sinh văn phạm có tương đồng với hay khơng Qua báo cáo chúng em tìm hiểu qua nội dung: Định nghĩa văn phạm Ngôn ngữ sinh văn phạm - Thuật tốn sinh ngơn ngữ từ văn phạm G Phân loại văn phạm theo Chomsky Cây dẫn xuât Văn phạm tuyến tính Thuật tốn chuyển từ văn phạm tuyến tính trái -> văn phạm tuyến tính phải Sự tương đương văn phạm quy otomat hữu hạn Thuật tốn chuyển văn phạm tuyến tính phái -> NFA Thuật tốn chuyển từ NFA -> văn phạm tuyến tính phải Giải thuật CYK Báo cáo hoàn thành thời gian ngắn chắn khơng tránh khỏi thiếu sót, chúng em mong giáo bạn góp ý! Chúng em xin chân thành cảm ơn Sinh viên thực hiện: Nhóm LÝ THUYẾT CƠ SỞ Các khái niệm ngơn ngữ hình thức 1.1 Bảng chữ Định nghĩa 1.1 Tập Σ khác rỗng gồm hũu hạn hay vô hạn ký hiệu gọi bảng chữ Mỗi phần tử a∈ Σ gọi chữ hay ký hiệu Thí dụ 1.1 Dưới bảng chữ  ∑ = {a, b, c, … , x, y, z}  Δ = {α, β, γ, δ, ε, η, ϕ, κ, μ, χ, ν, π, θ, ρ, σ, τ, ω,ξ, ψ},  Г = {0, 1},  W = {if, then, else, a, b, c, d, e, f, +, -, ∗, /, =, ≠} 1.2 Từ Định nghĩa 1.2 Giả sử có bảng chữ Σ = {a1, a2, …, am}, dãy chữ α = ai1 ai2…ait, với aij ∈ Σ (1 ≤ j ≤ t) gọi từ hay xâu bảng chữ Σ Tổng số vị trí ký hiệu xuất xâu α gọi độ dài từ α ký hiệu | α | Như vậy, từ bảng chữ Σ xâu hữu hạn gồm số lớn hay khơng chữ Σ, chữ xuất nhiều lần Xâu khơng có chữ gọi từ rỗng ký hiệu ε Rõ ràng từ rỗng từ thuộc bảng chữ Hai từ α = a1a2…an β = b1b2…bm gọi nhau, ký hiệu α = β, n = m = bi với i = 1, 2, …, n Nếu α từ bảng chữ Σ, Σ ⊆ Δ α từ bảng chữ Δ Tập từ bảng chữ Σ ký hiệu Σ* , tập từ khác rỗng bảng chữ Σ ký hiệu Σ+ Như Σ+ = Σ* \ {ε} Σ* = Σ+ ∪ {ε} Dễ thấy tập Σ* Σ+ vơ hạn Về cấu trúc đại số Σ* vị nhóm tự sinh Σ với đơn vị từ rỗng ε, Σ+ nửa nhóm tự sinh Σ Có thể chứng minh tập Σ* Σ+ vô hạn đếm Sinh viên thực hiện: Nhóm Thí dụ 1.2 Ta có ε , 0, 01, 101, 1010, 110011 từ bảng chữ Г = {0,1} Các xâu ε, beautiful, happy, holiday từ bảng chữ Σ = {a, b, c, …, z} 1.3 Ngôn ngữ Định nghĩa 1.3 Cho bảng chữ Σ, mỗt tập L ⊆ Σ* gọi ngơn ngữ hình thức (hay ngôn ngữ) bảng chữ Σ Tập rỗng, ký hiệu ∅, ngôn ngữ không gồm từ gọi ngôn ngữ rỗng Vậy ngôn ngữ rỗng ngôn ngữ bảng chữ Chú ý ngôn ngữ rỗng: L = ∅ khác với ngôn ngữ gồm từ rỗng: L = {ε} Thí dụ 1.3 Σ* ngơn ngữ gồm tất từ Σ Σ+ ngôn ngữ gồm tất từ khác từ trống Σ L={ ε, 0, 1, 01, 10, 00, 11, 011,100} ngôn ngữ bảng chữ Г={0, 1} L = {a, b, c, aa, ab, ac, abc} ngôn ngữ bảng chữ Σ = {a, b, c} L1 = {ε, a, b, abb, aab, aaa, bbb, abab}, L2 = {anbn | n∈ N} hai ngôn ngữ bảng chữ Σ = {a, b}, L1 ngôn ngữ hữu hạn L2 ngôn ngữ vô hạn Mỗi từ thuộc ngôn ngữ L2 có số chữ a số chữ b với a b không xen kẽ, a nằm phía trái b phía phải từ Các phép toán từ Các phép toán thực từ bảng chữ Σ, tạo nên từ thuộc bảng chữ 2.1 Phép nhân ghép Định nghĩa 2.1 Tích ghép (hay nhân ghép) hai từ α = a1a2…am từ β = b1b2…bn bảng chữ Σ, từ γ = a1a2…amb1b2…bn bảng chữ Σ Kí hiệu phép nhân ghép γ = α.β (hay γ = αβ) Sinh viên thực hiện: Nhóm 2.2 Phép lấy từ ngược Định nghĩa 2.2 Giả sử có từ khác rỗng ω = a1a2 …am bảng chữ Σ, từ am am-1… a2 a1 gọi từ ngược (hay từ soi gương) từ ω, ký hiệu ωR , hay ω^ Khi ω = ε ta quy ước εR = ε 2.3 Phép chia từ Là phép toán ngắt bỏ phần đầu hay phần cuối từ Ta có định nghĩa sau: Định nghĩa 2.3 Phép chia trái từ α cho từ β (hay thương bên trái α β) cho kết phần lại từ α sau ngắt bỏ phần đầu β từ α, ký hiệu β\α Định nghĩa 2.4 Phép chia phải từ α cho từ γ (hay thương bên phải α γ) cho kết phần lại từ α sau ngắt bỏ phần cuối γ từ α, ký hiệu α/γ Các phép tốn ngơn ngữ Các họ ngôn ngữ cụ thể thường đặc trưng cách tiện lợi qua phép toán xác định ngơn ngữ, họ gồm ngơn ngữ nhận việc tổ hợp từ số ngôn ngữ cho trước số phép tốn Vì ngơn ngữ tập hợp nên ta có phép tốn đại số tập hợp phép giao, phép hợp, phép hiệu, phép lấy bù ngôn ngữ Chẳng hạn, với L1 L2 hai ngơn ngữ bảng chữ Σ ta có ngơn ngữ sau bảng chữ Σ: L1 ∪ L2, L1 ∩ L2, L1.L2, Σ* \ L1 Dưới trình bày phép tốn ngơn ngữ 3.1 Phép hợp Định nghĩa 3.1 Hợp hai ngôn ngữ L1 L2 bảng chữ ∑, ký hiệu L1∪ L2, ngơn ngữ bảng chũ ∑, tập từ: L = {ω ∈ Σ* | ω ∈ L1 ω ∈ L2 } Định nghĩa phép hợp mở rộng cho số hữu hạn ngôn ngữ, tức hợp ngôn ngữ L1, L2, …, Ln bảng chữ Σ, tập từ: 𝑛 ⋃ 𝐿𝑖 = {ω ∈ Σ ∗ |ω ∈ Li , với i đó, ≤ i ≤ n} 𝑖=1 Sinh viên thực hiện: Nhóm 7 3.2 Phép giao Định nghĩa 3.2 Giao hai ngôn ngữ L1 L2 bảng chữ ∑, ký hiệu L1∩ L2 , ngôn ngữ bảng chữ ∑, tập từ: L = {ω ∈ Σ* | ω ∈ L1 ω ∈ L2 } Định nghĩa phép giao mở rộng cho số hữu hạn ngôn ngữ, tức giao ngôn ngữ L1, L2, …, Ln bảng chữ Σ, tập từ: 𝒏 ⋂{ω ∈ Σ ∗ |ω ∈ Li , với ≤ i ≤ n} 𝒊=𝟏 3.3 Phép lấy phần bù Định nghĩa 3.3 Ngôn ngữ phần bù ngôn ngữ L bảng chữ Σ, ký hiệu CΣL (hay đơn giản CL, không gây nhầm lẫn), ngơn ngữ bảng chữ ∑, tập từ: CΣ L = {ω ∈ Σ* | ω ∉ L } 3.4 Phép nhân ghép Định nghĩa 3.4 Cho hai ngôn ngữ L1 bảng chữ Σ1 L2 bảng chữ Σ2 Nhân ghép hay tích hai ngôn ngữ L1 L2 ngôn ngữ bảng chữ Σ1 ∪ Σ2, ký hiệu L1L2, đuợc xác định bởi: L1L2 = {αβ | α∈L1 β∈L2} 3.5 Phép lặp Định nghĩa 3.5 Cho ngôn ngữ L bảng chữ Σ, đó: 𝑛  Tập từ {ε} ∪ L ∪ L2 ∪ … ∪ Ln ∪ … = ⋃∞ 𝑛=0 𝐿 gọi ngôn ngữ lặp ngơn ngữ L(hay bao đóng ghép ngơn ngữ L), ký hiệu L* 𝑛 Vậy ngôn ngữ lặp L hợp luỹ thừa L: 𝐿∗ ⋃∞ 𝑛=0 𝐿 𝑛  Tập từ L ∪ L2 ∪ … ∪ Ln ∪ … = ⋃∞ 𝑛=1 𝐿 gọi ngôn ngữ lặp cắt ngôn ngữ L, ký hiệu L+, Vậy ngôn ngữ lặp cắt L hợp luỹ thừa dương L: 𝑛 L+=⋃∞ 𝑛=1 𝐿 3.6 Phép lấy ngôn ngữ ngược Sinh viên thực hiện: Nhóm Định nghĩa 3.6 Cho ngôn ngữ L bảng chữ Σ, ngơn ngữ ngược L ngơn ngữ bảng chữ ∑, ký hiệu LR hay L^, tập từ: LR = {ω ∈ Σ* / ωR ∈ L} 3.7 Phép chia ngôn ngữ Định nghĩa 3.7 Cho ngôn ngữ X Y bảng chữ Σ, thương bên trái ngôn ngữ X cho ngôn ngữ Y ngôn ngữ ∑, ký hiệu Y \ X , tập từ: Y \ X = {z ∈ Σ* / x ∈ X, y ∈ Y mà x = yz} Định nghĩa 3.8 Cho ngôn ngữ X Y bảng chữ Σ, thương bên phải ngôn ngữ X cho ngôn ngữ Y ngôn ngữ ∑, ký hiệu X /Y , tập từ: X / Y = {z ∈ Σ* / x ∈ X, y ∈ Y mà x = zy} Sinh viên thực hiện: Nhóm VĂN PHẠM Định nghĩa 1.1 Mở đầu Ta hình dung văn phạm “thiết bị tự động” mà có khả sinh tập hợp từ bảng chữ cho trước Mỗi từ sinh sau số hữu hạn bước thực quy tắc văn phạm Văn phạm phải có đặc điểm sau: Đối với từ thuộc ngơn ngữ cho, ta chọn quy cách hoạt động văn phạm để sau số hữu hạn bước làm việc dừng sinh từ Văn phạm có khả sinh tất từ ngôn ngữ cho Với từ ω cho trước, văn phạm cho biết từ có thuộc ngơn ngữ cho hay khơng 1.2 Định nghĩa Văn phạm G thứ tự gồm thành phần: G = < N, T, S, P > Trong đó: - N (Nonterminal) bảng chữ cái, T ∩ N = ∅, gọi bảng ký hiệu phụ (hay báng chữ không kết thúc), phần tử gọi ký hiệu không kết thúc hay ký hiệu phụ - T (Terminal) bảng chữ cái, gọi bảng chữ (hay bảng chữ kết thúc), phần tử gọi ký hiệu kết thúc hay ký hiệu bản; - S (Start) ∈ T gọi ký hiệu xuất phát hay tiên đề; - P tập hợp quy tắc sinh có dạng α→β, α gọi vế trái β gọi vế phải quy tắc này, với α, β ∈ (N ∪ T)* α chứa ký hiệu khơng kết thúc P = {α→β | α = α’Aα’’, với A ∈ T, α’, α’’, β ∈ (N ∪ T)* } Ví dụ: G = Sinh viên thực hiện: Nhóm 10 Sự tương đương văn phạm quy otomat hữu hạn 5.1 Sự tương đương văn phạm quy otomat hữu hạn Văn phạm quy mơ tả ngơn ngữ quy sinh từ văn phạm tuyến tính trái văn phạm tuyến tính phải Kết xác định hai định lý sau: Định lý 5.1 Ngôn ngữ sinh từ văn phạm quy ngơn ngữ quy Chứng minh: Trước hết, ta giả sử L = L(G) với văn phạm tuyến tính phải G(N, T, S, P) Ta xây dựng NFA - M (Q, A, δ, [S], [ε]) mô dẫn xuất G Q bao gồm trạng thái có dạng [α] với α S chuỗi hậu tố vế phải luật sinh P Ta định nghĩa δ sau : Nếu A biến, δ([A], ε) = {[α] | A → α luật sinh} Nếu a thuộc VT α thuộc (N + T)*, δ([aα], a) = {[α]} Sau đó, ta dễ dàng chứng minh quy nạp theo độ dài dẫn xuất δ ([S], w ) chứa [α] có chuỗi dẫn xuất S ⇒ * xA ⇒ xy α với A → y α luật sinh P xy = w, hay α = S w = ε Khi [ ε ] trạng thái kết thúc nhất, M chấp nhận w S ⇒ * xA ⇒ w Nhưng chuỗi dẫn xuất cho chuỗi ký hiệu kết thúc qua bước, nên ta thấy M chấp nhận w G sinh w Vì vậy, văn phạm tuyến tính phải sinh ngơn ngữ quy Bây giờ, giả sử G(N, T, S, P) văn phạm tuyến tính trái Đặt văn phạm G’(N, T, S, P’) với P’ chứa luật sinh P có vế phải đảo ngược, nghĩa : P’ = { A → α | A → αR ∈ P } Nếu ta đảo ngược chuỗi vế phải luật sinh văn phạm tuyến tính trái, ta có văn phạm tuyến tính phải, ngược lại Do đó, hiển nhiên có G’ văn phạm tuyến tính phải, dễ dàng để L(G’) = L(G)R Theo chứng minh trên, ta có L(G’) tập quy Mà thơng thường tập quy giữ ngun tính chất áp dụng phép đảo ngược nên L(G’)R = L(G) tập quy Sinh viên thực hiện: Nhóm 20 Vậy, văn phạm tuyến tính trái hay phải sinh tập hợp quy Định lý 5.2 Nếu L ngơn ngữ quy, L sinh từ văn phạm tuyến tính trái văn phạm tuyến tính phải Chứng minh: Đặt L = L(M) với DFA M(Q, Σ, δ, q0, F) Trước hết, ta giả sử trạng thái q0 trạng thái kết thúc Kế tiếp, ta đặt L = L(G) với văn phạm tuyến tính phải G(V, Σ, P, q0), P chứa luật sinh dạng p → aq δ(p, a) = q luật sinh dạng p → a δ(p, a) trạng thái kết thúc Rõ ràng δ(p, w) = q có chuỗi dẫn xuất p ⇒*wq Nếu wa chấp nhận M, ta đặt δ(q0, w) = p, suy dẫn xuất q0⇒*wq Tương tự, δ(p, a) trạng thái kết thúc, p → a luật sinh, nên q0⇒*wa Ngược lại, đặt q0⇒*x Ta có x = wa q0⇒*wq ⇒wa với p Và δ(q0, w) = p δ(p, a) trạng thái kết thúc nên x ∈ L(M) Hay nói cách khác : L(M) = L(G) = L Bây giờ, xét q0∈ F, chuỗi rỗng ε thuộc L Lưu ý văn phạm G vừa định nghĩa sinh ngơn ngữ L – {ε} Chúng ta sửa đổi G cách thêm vào ký hiệu bắt đầu S với luật sinh S → q0 | ε Văn phạm thu có dạng tuyến tính phải phát sinh ngơn ngữ L Để phát sinh văn phạm tuyến tính trái cho L, ta bắt đầu với NFA cho LR sau đảo ngược chuỗi vế phải cho tất luật sinh văn phạm tuyến tính phải vừa thu 5.2 Xây dựng NFA từ văn phạm tuyến tính phải a Bài tốn Input: Văn phạm tuyến tính phải Gp = (N, T, S, P) Với N = {N0=S, N1, …} T = {a1, a2, …} Output: Otomat không đơn định M = (Q, ∑, δ, q0, F) b Thủ tục Gp to NFA B0: Xác định bảng chữ ∑=T B1: Khởi tạo tập trạng thái Sinh viên thực hiện: Nhóm 21 Ứng với biến Vi văn phạm ta xây dựng trạng thái mang nhãn Ni cho NFA, tưc là: N⊂Q B2: Xác định trạng thái bắt đầu q0 Ứng với biến khởi đầu N0, trạng thái N0 NFA trờ thành trạng thái khởi đầu, tức là: q0 = N0 B3: Xác định tập trạng thái kết thúc F Nếu văn phạm có luật sinh dạng: Ni  a1a2…am thêm vào NFA trạng thái kết thúc [ε] B4: Ứng với luật sinh văn phạm có dạng Ni  a1a2…amNj Thì thêm vào NFA chuyển trạng thái δ(Ni, a1a2…am) = Nj B5: Ứng với luật sinh dạng Ni  a1a2…am Thì thêm vào NFA chuyển trạng thái δ(Ni, a1a2…am) = [ε] c Ví dụ Xây dựng NFA chấp nhận ngôn ngữ văn phạm sau: G = (N, T, S, P) Với N = {S, A} T = {a, b} P: S  aA | ba A  aA | abS | b Giải B0: ∑ = T = {a, b} B1: Do S, A ∈ N nên thêm S, A vào Q Q = {[S], [A]} B2: Trạng thái bắt đầu: q0 = S B3: Do tồn luật sinh (S  ba) nên ta thêm trạng thái kết thúc [ε] vào Q Q = {[S], [A], [ε]} F = {[ε]} B4: - Do (S  aA) nên thêm hàm chuyển δ(S, a) = A - Do (S  ba) nên thêm hàm chuyển δ(S, b) = [a] δ([a], a) = [ε] Sinh viên thực hiện: Nhóm 22 Làm tương tự, cuối ta có NFA d Thuật tốn Sinh viên thực hiện: Nhóm 23 5.3 Xây dựng văn phạm tuyến tính từ NFA a Bài tốn Intput: Otomat khơng đơn định M= (Q, ∑, δ, q0, F) Với Q = {q0, q1, …} ∑ = {a1, a2, …} Output: Văn phạm tuyến tính phải Gp = (N, T, S, P) Sinh viên thực hiện: Nhóm 24 b Thủ tục NFA to Gp B0: Xác định tập kí tự kết thúc T=∑ B1: Xác định tập kí tự chưa kết thúc, kí tự bắt đầu Biến trạng thái NFA thành kí tự chưa kết thúc văn phạm N = Q, S = q0 B2: Với hàm chuyển trạng thái δ(qi, aj) = qk M, ta xây dựng luật sinh tuyến tính phải tương ứng: qi  ajqk B3: Đối với trạng thái qf ∈ F, ta xây dựng luật sinh qf  ε c Ví dụ Xây dựng văn phạm tuyến tính phải cho NFA sau: Giải B0: B1: T = ∑ = {a, b} N = {Q0, Q1, Q2} S = Q0 B2: - Vì δ(q0, b) = q0 nên ta có luật sinh Q0  bQ0 - Vì δ(q0, a) = q1 nên ta có luật sinh Q0  aQ1 - Vì δ(q1, b) = q1 nên ta có luật sinh Q1  bQ1 - Vì δ(q1, a) = q2 nên ta có luật sinh Q1  aQ2 - Vì δ(q2, a) = q1 nên ta có luật sinh Q2  aQ1 - Vì δ(q2, b) = q2 nên ta có luật sinh Q2  bQ2 B3 : Vì q2 ∈ F nên ta có luật sinh Q2  ε Vậy ta văn phạm G = ({Q0, Q1, Q2}, {a, b}, Q0, P) P = {Q0  bQ0, Q0  aQ1, Q1  bQ1, Sinh viên thực hiện: Nhóm 25 Q1  aQ2, Q2  aQ1, Q2  bQ2, Q2  ε} Sinh viên thực hiện: Nhóm 26 Giải thuật CYK 6.1 Văn phạm phi ngữ cảnh (CFG) Chuẩn Chomsky (CNF) Định nghĩa 6.1 Cho văn phạm G   , , S , P  , văn phạm G gọi văn phạm phi ngữ cảnh qui tắc sinh P có dạng    với   *       Ví dụ: Văn phạm G  S , ,  , a, b , S , P  , với luật sinh P: S     a | a   b | b Định lý 6.1 : Một ngôn ngữ phi ngữ cảnh không chứa ε sinh văn phạm mà qui tắc sinh có dạng A → BC A → a, với A, B, C biến a ký hiệu kết thúc Các bước chuẩn hóa văn phạm phi ngữ cảnh dạng chuẩn Chomsky để áp dụng thuật tốn CYK: - Bước 1: Loại bỏ quy tắc sinh vô nghĩa - Bước 2: Loại bỏ qui tắc sinh ε - Bước 3: Loại bỏ qui tắc sinh đơn - Bước 4: Chỉnh qui tắc sinh cho vế phải có độ dài khơng q 2, nghĩa vế phải có dạng A → BC A → a Ví dụ: Chuyển văn phạm phi ngữ cảnh G dạng chuẩn Chomsky Biết G có qui tắc sinh P: S → ccAabB | bcaCB | cBcD A→ Aba | bb B → BC | c | ɛ C → bbCa | ACaa | B | ac D → DD | Aaa E → cB| B | ɛ  Bước 1: Loại bỏ qui tắc sinh vô nghĩa: S → ccAabB | bcaCB | cBcD A→ Aba | bb B → BC | c | ɛ C → bbCa | ACaa | B | ac D → DD | Aaa  Bước 2: Loại bỏ qui tắc sinh ɛ: S → ccAabB | bcaCB | cBcD |ccAab | bcaC | ccD | bcaB | bca A→ Aba | bb B → BC | c | C C → bbCa | ACaa | B | ac | bba | Aaa D → DD | Aaa  Bước 3: Loại bỏ qui tắc sinh đơn: Sinh viên thực hiện: Nhóm 27 S → ccAabB | bcaCB | cBcD |ccAab | bcaC | ccD | bcaB | bca A→ Aba | bb B → BC | c | bbCa | ACaa | ac | bba | Aaa C → bbCa | Acaa | BC | c | ac | bba | Aaa D → DD | Aaa  Bước 4: Chỉnh lại qui tắc cho độ dài vế phải tối đa (qui tắc có dạng A → BC A → a): + Các qui tắc sinh S: - Với ccAabB đặt ccAa = E, bB = F, cc = G, Aa = H, a = X, b = Y, c = Z Ta có: S → EF E → GH; F → YB G → ZZ; H → AX X → a; Y → b; Z → c - Với bcaCB đặt bcaC = I, bc = J, aC = K, Ta có: S → IB I → JK J → YZ; K → XC - Với cBcD đặt cB = L, cD = M Ta có S → LM L → ZB; M → ZD - Với ccAab đặt ccAa = E nên ta có: S → EY - Vì đặt bcaC = I nên theo S → JK - Với ccD đặt cc = G nên ta có S → GD - Với bcaB đặt bc = J nên đặt aB = N Ta có: S → JN; N → XB - Với bca đặt bc= J, ta có: S → JX + Các qui tắc sinh A: - Với Aba đặt ba = O Ta có: A → AO; O → YX - Với bb ta có: A → YY + Các qui tắc sinh B: - Với bbCa đặt bb = P, Ca = Q Ta có: B → PQ P → YY Q → CX - Với ACaa đặt AC = R, aa = T Ta có: B → RT R → AC T → XX - Với BC | c| ac | bba | Aaa tương tự ta có: B → BC | c | XZ | PX | AT + Các qui tắc sinh C: qui tắc sinh C giống qui tắc sinh B nên ta cần viết lại + Các qui tắc sinh D: Do đặt aa = T nên ta có: D → DD | AT Kết luận: Tổng hợp qui tắc sinh sau chuẩn hóa ta văn phạm theo chuẩn Chomsky: Sinh viên thực hiện: Nhóm 28 S → EF | IB | LM | EY | JK | GD | JN | JX A → AO | P B → BC | c | PQ | RT | XZ | PX | AT C → PQ | RT | BC | c | XZ | PX | AT D → DD | AT E → GH; F → YB; G → ZZ; H → AX; I → JK; J → YZ; K → XC L → ZB; M → ZD; N → XB; P → YY; Q → CX; R → AC; T → XX X → a; Y → b; Z → c 6.2 Giải thuật Coke- Kasami – Younger (CYK): a Bài toán - - Đầu vào: + Văn phạm G   , , S , P  có dạng chuẩn Chomsky khơng có suy dẫn rỗng + Xâu vào w  w1w w n Đầu ra: Bảng phân tích xâu w để kiểm tra xâu w có sản sinh văn phạm G thuật toán CYK b Ý tưởng - Giả thiết chuỗi w  w1w w n Ta định nghĩa tập Xij tập tất kí hiệu suy dẫn chuỗi w i w i 1 w i  j 1 (chuỗi wi có độ dài j) Bài tốn đoán nhận S * w tương đương với việc trả lời S có thuộc tập 1n hay khơng? Vấn đề tính  ij nào? c Thuật tốn //tính X chuỗi có độ dài For (int i=1; i

Ngày đăng: 28/09/2019, 20:36

Từ khóa liên quan

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

Tài liệu liên quan