Bài giảng Đơn giản hóa văn phạm phi ngữ cảnh và các dạng chuẩn

Chuỗi trống đóng một vai trò khá đặc biệt trong nhiều định lý và chứng minh, và thường cần có một sự chú ý đặc biệt cho nó. „ Nếu L∋λ thì biểu diễn L= L1∪λ với L1= L-λ. Nếu G1= (V1, T, S1, P1) là văn phạm biểu diễn cho L1 thì G= (V1∪{S}, T, S, P1∪{S→S1| λ}) là văn phạm biểu diễn cho L. „ Trong chương này, chúng ta chỉ xem xét các NNPNC không chứa λ. „ Tuy nhiên những kết luận cho ngôn ngữ không chứa λ vẫn có thể áp dụng cho ngôn ngữ có chứa λ.

pdf35 trang | Chia sẻ: haohao89 | Lượt xem: 3073 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Đơn giản hóa văn phạm phi ngữ cảnh và các dạng chuẩn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Trang 189 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Chương 6 Đơn giản hóa VPPNC và các dạng chuẩn 6.1 Các phương pháp để biến đổi văn phạm 6.2 Hai dạng chuẩn quan trọng 6.3 Giải thuật thành viên cho văn phạm phi ngữ cảnh Trang 190 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Các phương pháp để biến đổi văn phạm „ Chuỗi trống đóng một vai trò khá đặc biệt trong nhiều định lý và chứng minh, và thường cần có một sự chú ý đặc biệt cho nó. „ Nếu L ∋ λ thì biểu diễn L = L1 ∪ λ với L1 = L - λ. Nếu G1 = (V1, T, S1, P1) là văn phạm biểu diễn cho L1 thì G = (V1 ∪ {S}, T, S, P1 ∪ {S→ S1 | λ}) là văn phạm biểu diễn cho L. „ Trong chương này, chúng ta chỉ xem xét các NNPNC không chứa λ. „ Tuy nhiên những kết luận cho ngôn ngữ không chứa λ vẫn có thể áp dụng cho ngôn ngữ có chứa λ. Trang 191 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Một vài qui tắc thay thế hiệu quả „ Định lý 6.1 „ Cho G = (V, T, S, P) là một VPPNC. Giả sử P có chứa luật sinh A→ x1Bx2 trong đó A, B là các biến khác nhau và B→ y1 | y2 | ... | yn là tập tất cả các luật sinh trong P mà có B ở vế trái. Cho G1= (V, T, S, P1) là VP được xây dựng bằng cách xóa đi A→ x1Bx2 từ P, và thêm vào nó A→ x1y1x2 | x1y2x2| ... | x1ynx2 Thì L(G) = L(G1) Trang 192 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Xét văn phạm G = ({A, B}, {a, b}, A, P) với các luật sinh A→ a | aA | bBc, B→ abA | b. Sau khi thay thế biến B ta nhận được VP tương đương như sau A→ a | aA | babAc | bbc, B→ abA | b „ Chuỗi abbc có các dẫn xuất trong G và G1 lần lượt như sau: A⇒ aA⇒ abBc⇒ abbc A⇒ aA⇒ abbc „ Chú ý rằng, biến B và các luật sinh của nó vẫn còn ở trong VP mặc dù chúng không còn đóng vai trò gì trong bất kỳ dẫn xuất nào. Sau này chúng ta sẽ thấy rằng những luật sinh không cần thiết như vậy có thể bị loại bỏ ra khỏi văn phạm. Trang 193 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ đệ qui trái „ Định lý 6.2 (Loại bỏ đệ qui trái) „ Cho G = (V, T, S, P) là một VPPNC. Chia tập các luật sinh mà vế trái của chúng là một biến đã cho nào đó (chẳng hạn là A), thành hai tập con riêng biệt A→ Ax1 | Ax2 | ... | Axn (6.2) A→ y1 | y2 | ... | ym (6.3) với xi, yi ∈ (V ∪ T)*, và A không là prefix của bất kỳ yi nào. Xét G1 = (V ∪ {Z}, T, S, P1), trong đó Z ∉ V và P1 nhận được bằng cách thay mọi luật sinh của P có dạng (6.2 ) và (6.3) bởi A→ yi | yiZ, i = 1, 2, . . . , m, Z→ xi | xiZ, i = 1, 2, . . . , n, Thì L(G) = L(G1). Trang 194 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ đệ qui trái (tt) „ Chứng minh „ Các dạng câu mà A sinh ra trong văn phạm G có dạng: A A(x1 + x2 + ... + xn)* ⇒ yi(x1 + x2 + ... + xn)* Các dạng câu này cũng có thể được sinh ra trong G1 bằng cách chú ý Z có thể sinh ra các dạng câu có dạng Z (x1 + x2 + ... + xn)(x1 + x2 + ... + xn)* mà A→ yi | yiZ nên A yi(x1 + x2 + ... + xn)* Vì vậy L(G) = L(G1). „ Ghi chú „ Các luật sinh đệ qui-trái chỉ là một trường hợp đặc biệt của đệ qui-trái trong văn phạm như được phát biểu sau. „ Một văn phạm được gọi là đệ qui-trái nếu có một biến A nào đó mà đối với nó A Ax là có thể. *⇒ *⇒ *⇒ *⇒ Trang 195 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Sử dụng Định lý 6.2 để loại bỏ các luật sinh đệ qui-trái khỏi VP A→ Aa | aBc | λ B→ Bb | ba „ Áp dụng định lý cho biến A ta được tập luật sinh mới như sau: A→ aBc | λ | aBcZ | Z B→ Bb | ba Z→ a | aZ „ Áp dụng định lý một lần nữa lần này cho biến B ta được tập luật sinh kết quả cuối cùng như sau: A→ aBc | aBcZ | Z | λ B→ ba | baY Z→ a | aZ Y→ b | bY „ Nhận xét „ Việc loại bỏ các luật sinh đệ qui-trái đưa ra các biến mới. VP kết quả có thể là "đơn giản" hơn đáng kể so với VP gốc nhưng một cách tổng quát nó sẽ có nhiều biến và luật sinh hơn. Trang 196 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Luật sinh vô dụng „ Định nghĩa 6.1: „ Cho G = (V, T, S, P) là một VPPNC. Một biến A ∈ V được gọi là khả dụng nếu và chỉ nếu có ít nhất một chuỗi w ∈ L(G) sao cho S xAy w, với x, y ∈ (V ∪ T)*. Bằng lời, một biến là khả dụng nếu và chỉ nếu nó xuất hiện trong ít nhất một dẫn xuất. Một biến mà không khả dụng thì gọi là vô dụng.Một luật sinh được gọi là vô dụng nếu nó có chứa bất kỳ biến vô dụng nào. „ Các dạng vô dụng „ Vô dụng loại 1: A w ∈ T* „ Vô dụng loại 2: S xAy *⇒ *⇒ *⇒ *⇒ Trang 197 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ các luật sinh vô dụng „ Định lý 6.3 „ Cho G = (V, T, S, P) là một VPPNC, ∃ một VP tương đương G0 = (V0, T, S, P0) mà không chứa bất kỳ biến vô dụng nào. „ Chứng minh „ Loại bỏ các biến và luật sinh vô dụng loại 1 Tạo văn phạm G1 = (V1, T, S, P1) với V1 là tập biến không vô dụng loại 1. Ta tìm V1 như sau: 1. Khởi tạo V1 = ∅. 2. Lặp lại bước sau cho đến khi không còn biến nào được thêm vào V1. „ Đối với mỗi A ∈ V mà có luật sinh A→ x, x ∈ (V1∪T)*, thì thêm A vào V1. 3. Loại khỏi P các luật sinh có chứa các biến ∉ V1, ta được P1. Trang 198 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ các luật sinh vô dụng (tt) „ Để loại tiếp các biến và các luật sinh vô dụng loại 2 ta dựa vào G1 vừa có ở trên và vẽ đồ thị phụ thuộc cho nó, sau đó tìm tập các biến không đạt tới được từ S. Loại các biến này và các luật sinh liên quan đến nó ra khỏi G1 ta được văn phạm kết quả G0. „ Đồ thị phụ thuộc (dependency graph) „ Là một đồ thị có các đỉnh biểu diễn các biến, còn một cạnh nối hai đỉnh A và B khi và chỉ khi có luật sinh dạng A→ xBy „ Ví dụ „ Loại bỏ các biến và các luật sinh vô dụng ra khỏi văn phạm G = ({S, A, B, C}, {a, b}, S, P), với tập luật sinh P là: S → aS | A | C B → aa A → a C → aCb A B Trang 199 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Loại bỏ các biến vô dụng loại 1 ta được V1 = {S, A, B} và tập luật sinh P1 S→ aS | A A→ a B→ aa „ Loại bỏ các biến vô dụng loại 2 ta được văn phạm kết quả S→ aS | A A→ a „ Nhận xét „ Nếu thay đổi thứ tự loại bỏ (loại bỏ các biến và luật sinh vô dụng loại 2 trước) thì sẽ không loại bỏ được tất cả các biến và luật sinh vô dụng chỉ bằng một lần như ví dụ sau cho thấy. S → aS | A | C A → a B → aa C → aCb S A B Trang 200 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) „ Xét văn phạm sau S→ aSb | ab | A A→ aAB B→ b „ Nếu loại bỏ các biến và luật sinh vô dụng loại 2 trước ta thấy văn phạm vẫn không thay đổi vì tất cả các biến đều đạt tới được từ S. Sau đó loại bỏ tiếp các biến và luật sinh vô dụng loại 1 ta sẽ được văn phạm sau: S→ aSb | ab | A B→ b „ Rõ ràng văn phạm này còn biến B là vô dụng loại 2. Trang 201 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ luật sinh-λ „ Định nghĩa 6.2 „ Bất kỳ luật sinh nào của VPPNC có dạng A→ λ được gọi là luật sinh-λ. Bất kỳ biến A nào mà A λ „ là có thể thì được gọi là khả trống (nullable). „ Định lý 6.4 „ Cho G là một VPPNC bất kỳ mà L(G) không chứa λ, thì tồn tại một văn phạm G0 tương đương mà không có chứa luật sinh-λ. „ Chứng minh: Bước 1 „ Tìm tập VN tất cả các biến khả trống của G bằng các bước sau. *⇒ Trang 202 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ luật sinh-λ 1. Đối với mọi luật sinh A → λ, đưa A vào VN. 2. Lặp lại bước sau cho đến khi không còn biến nào được thêm vào VN. „ Đối với mọi luật sinh B→ A1A2 … An, mà A1, A2, An ∈ VN thì đặt B vào VN. Bước 2 „ Sau khi có tập VN ta xây dựng tập luật sinh như sau. „ Ứng với mỗi luật sinh có dạng A→ x1x2 … xm, m ≥ 1, trong đó mỗi xi ∈ V ∪ T, đặt luật sinh này vào cùng với các luật sinh được sinh ra bằng cách thay thế các biến khả trống bằng λ trong mọi tổ hợp có thể, ngoại trừ nếu tất cả các xi đều khả trống thì không đặt luật sinh A→ λ vào P0 của G0 Trang 203 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Loại bỏ các luật sinh-λ của văn phạm sau: S→ ABaC C→ D | λ A→ BC D→ d B→ b | λ „ Vì B→ λ và C→ λ suy ra B và C là các biến khả trống. „ Vì A→ BC nên suy ra A cũng là biến khả trống. Ngoài ra không còn biến nào khác là khả trống. „ Theo Bước 2 ta xây dựng được tập luật sinh mới tương đương như sau: S→ ABaC | BaC | AaC | Aba | aC | Aa | Ba | a A→ BC | B | C B→ b C→ D D→ d Trang 204 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Loại bỏ luật sinh đơn vị „ Định nghĩa 6.3 „ Bất kỳ luật sinh nào của VPPNC có dạng A→ B trong đó A, B ∈ V được gọi là luật sinh-đơn vị. „ Định lý 6.5 „ Cho G = (V, T, S, P) là một VPPNC bất kỳ không có luật sinh-λ, thì tồn tại một VPPNC G1 = (V1, T, S, P1) mà không có bất kỳ luật sinh đơn vị nào và tương đương với G1. „ Chứng minh 1. Đặt vào trong P1 tất cả các luật sinh không đơn vị của P. 2. Đối với mỗi biến A tìm tất cả các biến B mà A B (*) „ Điều này thực hiện bằng cách vẽ đồ thị phụ thuộc cho G nhưng một cạnh nối 2 đỉnh A và B khi và chỉ khi có luật sinh-đơn vị A→ B. Hai biến A và B thõa (*) khi và chỉ khi có một con đường trong đồ thị đi từ A đến B. ⇒* Trang 205 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ 3. Đối với mỗi A, B thõa (*) thêm vào trong P1 các luật sinh A→ y1 | y2 | ... | yn với B→ y1 | y2 | ... | yn là các luật sinh không đơn vị của B. „ Ví dụ „ Loại bỏ các luật sinh đơn vị cho VP sau S→ Aa | B B→ A | bb A→ a | bc | B Trước hết, đặt các luật sinh không đơn vị vào trong P1 S→ Aa A→ a | bc B→ bb S A B Từ ĐTPT ta đưa được thêm các luật sinh sau vào S→ a | bc | bb A→ bb B→ a | bc Trang 206 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) „ Kết quả ta có văn phạm tương đương sau không có luật sinh đơn vị S→ Aa | a | bc | bb A→ a | bc | bb B→ bb | a | bc „ Định lý 6.6 „ Cho L là một NNPNC không chứa λ, tồn tại một VPPNC sinh ra L mà không chứa bất kỳ luật sinh vô dụng, luật sinh-λ, hay luật sinh-đơn vị nào. „ Chứng minh: B1. Loại bỏ luật sinh-λ B2. Loại bỏ luật sinh đơn vị B3. Loại bỏ luật sinh vô dụng loại 1, rồi vô dụng loại 2 Trang 207 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Một số nhận xét 1.Loại bỏ biến vô dụng loại 1 có thể sinh ra biến vô dụng loại 2. 2.Việc loại bỏ biến vô dụng loại 2 không sinh ra biến vô dụng loại 1. 3.Văn phạm không có luật sinh đơn vị thì việc loại bỏ luật sinh-λ có thể sinh ra luật sinh-đơn vị. 4.Văn phạm không có luật sinh-λ thì việc loại bỏ luật sinh-đơn vị không thể sinh ra luật sinh-λ mới. 5.Loại bỏ luật sinh-λ có thể sinh ra biến vô dụng loại 1. 6.Loại bỏ luật sinh-đơn vị có thể sinh ra biến vô dụng loại 2. 7.Văn phạm không có luật sinh-λ, luật sinh-đơn vị thì việc loại bỏ các luật sinh vô dụng loại 1, loại 2 không sinh ra thêm bất kỳ luật sinh-λ và luật sinh-đơn vị nào mới. Trang 208 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Dạng chuẩn Chomsky „ Định nghĩa 6.4 „ Một VPPNC là thuộc dạng chuẩn Chomsky nếu mọi luật sinh có dạng A→ BC, hoặc A→ a trong đó A, B, C ∈ V, còn a ∈ T. „ Định lý 6.7 „ Bất kỳ VPPNC G = (V, T, S, P) nào với λ ∉ L(G) đều có một văn phạm tương đương G1 = (V1, T, S, P1) có dạng chuẩn Chomsky. „ Chứng minh „ Không mất tổng quát giả sử G không có luật sinh-vô dụng, luật sinh-đơn vị và luật sinh-λ. Ta xây dựng văn phạm G1 có dạng chuẩn Chomsky bằng thủ tục sau: Trang 209 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Thủ tục: G-to-GChomsky „ Input: G = (V, T, S, P) với λ ∉ L(G) „ Output: G1 = (V1, T, S, P1) có dạng chuẩn Chomsky. 1.Đặt các luật sinh A→ a vào P1. 2.Đối với các luật sinh A→ x1x2 ... xn với n ≥ 2, xi ∈ (V ∪ T) thì thay các kí hiệu kết thúc, chẳng hạn xk = a, bằng các biến đại diện mới Ba, tạo thành các luật sinh trung gian A→ C1C2...Cn. 3.Ứng với mỗi biến đại diện Ba đặt vào P1 các luật sinh Ba→ a. 4. Sau khi thực hiện bước 2, ứng với mỗi luật sinh A→ C1C2 ... Cn mà n = 2 đặt nó vào P1. Ngược lại ứng với n > 2 ta giới thiệu các biến mới D1, D2, ... và đưa vào các luật sinh sau: A → C1D1 D1 → D1D2 Dn-2 → Cn-1Cn M Trang 210 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Hãy biến đổi VP sau thành VP có dạng chuẩn Chomsky. S→ a | ABa A→ aab B→ b | Ac S→ a B→ b S→ ABXa A→ XaXaXb B→ AXc Xa→ a Xb→ b Xc→ c S → AD1 D1→ BXa A → XaD2 D2→ XaXbBước 2 B ư ớ c 1 Bước 3 B ư ớ c 4 S → a | AD1 D1→ BXa A → XaD2 D2→ XaXb B → b | AXc Xa→ a Xb→ b Xc→ c Kết quả Trang 211 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Dạng chuẩn Greibach „ Định nghĩa 6.5 „ Một VPPNC là thuộc dạng chuẩn Greibach nếu mọi luật sinh có dạng A→ ax trong đó a ∈ T còn x ∈ V*. „ Định lý 6.8 „ Đối với mọi VPPNC G với λ ∉ L(G), thì tồn tại một văn phạm tương đương trong dạng chuẩn Greibach. „ Chứng minh „ Không mất tính tổng quát giả sử G không có luật sinh-vô dụng, luật sinh-đơn vị và luật sinh-λ. Ta xây dựng văn phạm có dạng chuẩn Greibach bằng thủ tục sau. Trang 212 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Thủ tục: G-to-GGreibach „ Input: G = (V, T, S, P) với λ ∉ L(G) „ Output: G1 = (V1, T, S, P1) có dạng chuẩn Greibach. 1.Đánh số thứ tự cho các biến chẳng hạn là A1, A2, . . . An. 2.Dùng Định lý 6.1 và 6.2 để viết lại VP sao cho các luật sinh có một trong ba dạng sau „ Điều này thực hiện được bằng cách sử dụng Định lý 6.1 và 6.2 cho các biến Ai theo thứ tự i đi từ 1, 2, ... đến n như sau. „ Giả sử xét luật sinh của biến Ai. Nếu có luật sinh Ai→ Ajx mà i > j thì thay Aj đi đầu bằng các vế phải của nó, và làm cho đến khi các luật sinh của Ai có dạng Ai→ Ajx, i ≤ j. Đến đây loại đệ qui trái cho Ai thì các luật sinh của nó sẽ có dạng như đã nêu. a ∈ T và xi ∈ (V ∪ T)* Zi là các biến mới Ai→ Ajxj, i < j Zi→ Ajxj, j ≤ n Ai→ axi Trang 213 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Thủ tục: G-to-GGreibach (tt) 3.Sau khi thực hiện bước 2, tất cả các luật sinh của An phải có dạng An→ axn „ Thay An đi đầu vế phải của các luật sinh bằng các vế phải của nó. Kết quả các luật sinh của An-1 có dạng An-1→ axn-1 „ Tương tự thay thế An-1 đi đầu vế phải của các luật sinh bằng các vế phải của nó. Và thực hiện lần lượt cho đến A1. 4.Thay các kí hiệu kết thúc, chẳng hạn a, không đi đầu vế phải bằng các biến đại diện, chẳng hạn Xa, đồng thời thêm vào các luật sinh mới Xa→ a. „ Ví dụ „ Biến đổi VP sau thành VP có dạng chuẩn Greibach S→ SBb | Ab A → Sb | Ba B→ Sb | a Trang 214 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ S→ SBb | Ab A → Sb | Ba B→ Sb | a B2→ S0b | a S0→ A1b | A1bZ0 (1) Z0→ B2b | B2bZ0 (2) A1→ A1bb | A1bZ0b | B2a B2→ B2aba | B2aZ1ba | B2abZ0a | B2aZ1bZ0a | b B2→ A1ba | A1bZ0a | b B2→ b | bZ2 (5) Z2→ aba | aZ1ba | abZ0a | aZ1bZ0a | abaZ2 | aZ1baZ2 | abZ0aZ2 | aZ1bZ0aZ2 (6) S0→ S0B2b | A1b A1→ S0b | B2a Loại đệ qui trái Thay thế Loại đệ qui trái Thay thế Loại đệ qui trái Thay thế A1→ B2a | B2aZ1 (3) Z1→ bb | bZ0b | bbZ1 | bZ0bZ1 (4) Trang 215 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) S0→ A1b | A1bZ0 (1) B2→ b | bZ3 (5) Thay thế S0→ bab | bZ2ab | baZ1b | bZ2aZ1b | babZ0 | bZ2abZ0 | baZ1bZ0 | bZ2aZ1bZ0 (8) Z0→ bb | bZ2b | bbZ0 |bZ2bZ0 (9)Z0→ B2b | B2bZ0 (2) Thay thế Thay thế A1→ B2a | B2aZ1 (3) A1→ ba | bZ2a | baZ1 |bZ2aZ1 (7) Trang 216 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) S0→ bab | bZ2ab | baZ1b | bZ2aZ1b | babZ0 | bZ2abZ0 | baZ1bZ0 | bZ2aZ1bZ0 (8) A1→ ba | bZ2a | baZ1 |bZ2aZ1 (7) B2→ b | bZ3 (5) Z0→ bb | bZ2b | bbZ0 |bZ2bZ0 (9) Z1→ bb | bZ0b | bbZ1 | bZ0bZ1 (4) Z2→ aba | aZ1ba | abZ0a | aZ1bZ0a | abaZ2 |aZ1baZ2 | abZ0aZ2 | aZ1bZ0aZ2 (6) Thay kí hiệu kết thúc không đi đầu bằng biến đại diện S → bXY | bZ2XY | bXZ1Y | bZ2XZ1Y | bXYZ0 | bZ2XYZ0 | bXZ1YZ0 | bZ2XZ1YZ0 A → bX | bZ2X | bXZ1 |bZ2XZ1 B → b | bZ3 Z0→ bY | bZ2Y | bYZ0 |bZ2YZ0 Z1→ bY | bZ0Y | bYZ1 | bZ0YZ1 Z2→ aYX | aZ1YX | aYZ0X | aZ1YZ0X | aYXZ2 | aZ1YXZ2 | aYZ0XZ2 | aZ1YZ0XZ2 X → a Y → b Văn phạm gần- Greibach Trang 217 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Giải thuật thành viên cho VPPNC „ Giải thuật CYK (J.Cocke, D.H.Younger, T.Kasami) „ Input: Văn phạm Chomsky G = (V, T, S, P) Chuỗi w = a1a2 … an „ Output: “Yes” + DXTN hoặc “No”. „ Chúng ta định nghĩa các chuỗi con wij = ai ... aj, „ Và các tập con của V Vij = {A ∈ V : A wij}, „ Để ý w = w1n, vậy w ∈ L(G) khi và chỉ khi S ∈ V1n. „ Vậy để biết w có ∈ L(G) hay không chúng ta tính V1n và xem S có ∈ V1n hay không. *⇒ Trang 218 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Giải thuật CYK „ A ∈ Vii nếu và chỉ nếu A có luật sinh A → ai. „ Vậy, Vii có thể được tính ∀i, 1 ≤ i ≤ n. „ Nếu B wik (⇔ B ∈ Vik), C w(k+1)j (⇔ C ∈ V(k+1)j) và đồng thời A → BC thì A wij (⇔ A ∈ Vij) ∀ i ≤ k, k < j. „ Vij = ∪k∈{i, i+1, ... , j – 1}{A: A→ BC, với B ∈ Vik, C ∈ V(k+1)j} „ Quá trình tính các tập Vij „ V11, V22, ...,Vnn „ V12, V23, . . .,V(n-1)n „ V13, V24, . . .,V(n-2)n „ ... „ V1n *⇒ *⇒ *⇒ Trang 219 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ „ Sử dụng giải thuật CYK đê PTCP chuỗi w = aabbb trên G sau S→ AB (1) A→ BB | a (2, 3) B→ AB | b (4, 5) „ Ta có w =a a b b b 1 2 3 4 5 „ V11 = {A}, V22 = {A}, V33 = {B}, V44 = {B}, V55 = {B}, „ V12 = ∅, V23 = {S, B}, V34 = {A}, V45 = {A}, „ V13 = {S, B}, V24 = {A}, V35 = {S, B}, „ V14 = {A}, V25 = {S, B}, „ V15 = {S, B}. S ∈ V15⇒ w ∈ L(G). Trang 220 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) „ Để tìm dẫn xuất cho w, chúng ta phải tìm cách “lưu vết” „ V11 = {A ( a)}, V22 = {A( a)}, V33 = {B( b)}, V44 = {B( b)}, V55 = {B( b)}, „ V12 = ∅, V23 = {S( A22B33), B( A22B33)}, V34 = {A( B33B44)}, V45 = {A( B44B55)}, „ V13 = {S( A11B23), B( A11B23)}, V24 = {A( B23B44)}, V35 = {S( A34B55), B( A34B55)}, „ V14 = {A( B13B44)}, V25 = {S( A22B35, A24B55), B( A22B35, A24B55)}, „ V15 = {S( A22B35, A24B55), B( A22B35, A24B55)}. 3→ S→ AB (1) A→ BB | a (2, 3) B→ AB | b (4, 5) w = a a b b b 1 2 3 4 5 5→ 5→5→ 3→ 1→ 4→ 2→ 2→ 1→ 4→ 2→ 1→ 4→ 2→ 1→ 1→ 4→ 4→ 1→ 1→ 4→ 4→ Trang 221 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) „ Kết quả có 3 DXTN như sau: (1) S A11B25 aB25 aA22B35 aaB35 aaA34B55 aaB33B44B55 aabbb (DXTN: 134342555) (2) S A11B25 aB25 aA24B55 aB23B44B55 aA22B33B44B55 aabbb (DXTN: 134243555) (3) S A14B55 B13B44B55 A11B23B44B55 aB23B44B55 aA22B33B44B55 aabbb (DXTN: 124343555) S→ AB (1) A→ BB | a (2, 3) B→ AB | b (4, 5) w = a a b b b 1 2 3 4 5 1⇒ 3⇒ 4⇒ 3⇒ 4⇒ 2⇒ 5,5,5⇒ 1⇒ 3⇒ 4⇒ 2⇒ 4⇒ 5,5,5,3⇒ 1⇒ 2⇒ 4⇒ 3⇒ 4⇒ 5,5,5,3⇒ Trang 222 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Ví dụ (tt) „ 3 CDXtương ứng: S→ AB (1) A→ BB | a (2, 3) B→ AB | b (4, 5) w = a a b b b 1 2 3 4 5 S A11 B25 a A22 B35 a A34 B55 bB33 B44 bb S A11 B25 a B55A24 bB23 B44 bA22 B33 ba S B55A14 bB44B13 bB23A11 a A22 B33 ba Trang 223 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Bài tập „ Dùng giải thuật CYK PTCP các chuỗi sau w1 = abab, w2 = abaa trên các VP G1, G2 tương ứng. „ G1 G2 S→ AB⏐BB (1, 2) S→ AB (1) A → BA⏐a (3, 4) A→ BB⏐a (2, 3) B→ AA⏐a⏐b (5, 6, 7) B→ BA⏐b (4, 5)
Tài liệu liên quan