Xây dựng bộ công cụ thực hiện một số giải thuật trong môn học ngôn ngữ hình thức và Automata
Luận Tốt Nghiệp KS2-K7 LỜI NĨI ĐẦU Mơn học ngơn ngữ hình thức automata có nhiều ứng dụng lĩnh vực khoa học máy tính xây dựng trình biên dịch, nhận dạng chuyển đổi ngơn ngữ khác nhau… Do mà mơn học môn học bắt buộc cho sinh viên ngành CNTT trường đại học Để giúp cho sinh viên có điều kiện học tốt thực hành tập môn học này, luận văn sâu vào việc mô lại hoạt động giải thuật phần ngôn ngữ phi ngữ cảnh đặc biệt giải thuật phân tích cú pháp Earley CYK Sinh viên khai thác sở lý thuyết môn học thông qua hệ thống Help chương trình Xin cám ơn thầy Hồ Văn Quân tận tình hướng dẫn giúp đỡ tơi hồn thành luận văn tốt nghiệp yêu cầu đề Sinh Viên Thực Hiện Thái Thuần Thạch Trang Luận Tốt Nghiệp KS2-K7 PHẦN GIỚI THIỆU GIỚI THIỆU ĐỀ TÀI Yêu cầu đề tài : “Xây dựng công cụ thực số giải thuật môn học ngôn ngữ hình thức Automata.” Ngồi giải thuật biến đổi văn phạm, tập trung vào nghiên cứu thực hai giải thuật phân tích cú pháp CYK Earley, Đánh giá số bước phân tích giải thuật Aùp dụng nhận dạng câu nhập thuộc ngôn ngữ tự nhiên (Tiếng Anh) MỤC ĐÍCH & Ý NGHĨA Hiện nay, nước ta việc áp dụng giảng dạy mơn học thơng qua mơ hình giảng dạy thiết kế máy tính cịn gặp nhiều khó khăn, nguyên nhân thiếu phần mềm hỗ trợ việc học giảng dạy Luận văn đời khơng nằm ngồi mục đích giúp sinh viên nghành CNTT có cơng cụ để hỗ trợ thêm cho việc học mơn học “Ngơn Ngữ Hình Thức & Automata” Bộ công cụ cho phép sinh thấy rõ cách thức hoạt động số giải thuật phần ngôn ngữ phi ngữ cảnh, thấy ứng dụng giải thuật phân tích cú pháp NỘI DUNG CHÍNH CỦA LUẬN VĂN TỐT NGHIỆP Nội dung luận văn chia làm phần, cụ thể sau: Phần : Là phần giới thiệu đề tài, ý nghĩa tầm quan trọng Phần : Đây phần tìm hiểu sở lý thuyết có liên quan, phần chia làm chương với chủ đề tìm hiểu khác cụ thể : Chương : Một số khái niệm mơn học Mục đích chương giúp cho người đọc làm quen với số khái niệm Ngơn ngữ Hình thức & Automat chuỗi, ngơn ngữ văn phạm qui, ngơn ngữ văn phạm PNC, dẫn xuất… để dễ dàng đọc tiếp phần sau.Tuy nhiên, người đọc bỏ qua chương nắm khái niệm Chương :Các giải thuật biến đổi văn phạm PNC & dạng chuẩn Trong chương tập trung tìm hiểu giải thuật biến đổi văn phạm PNC : Loại bỏ luật sinh rỗng, đơn vị, vô dụng chuyển đổi văn phạm PNC hai dạng chuẩn Chomsky Greibach, phần lý thuết làm tảng cho việc thực giải thuật phân tích cú pháp CYK sau Chương : Trình bày Một số giải thuật cơng cụ phân tích cú pháp thông dụng bao gồm phương pháp từ xuống (top -down) từ lên (bootom -up) mục đích giúp cho người đọc có sơ sở để so sánh với hai giải thuật phân tích cú pháp tổng quát CYK Earley Chuơng : Giải thuật phân tích cú pháp Earley CYK, phần luận văn, chương trọng đến việc tìm hiểu giải thuật để phân tích cú pháp Trang Luận Tốt Nghiệp KS2-K7 tạo chuỗi dẫn xuất cho câu nhập, so sánh độ phức tạp hai giải thuật với giải thuật chương Phần : Tìm hiểu lý thuyết phần mềm hỗ trợ học tập giảng dạy, cách kế lựa chọn mơ hình giảng dạy tốt thức để thiết Phần : Tập trung phân tích thiết kế cho mơ hình vừa chọn, phần dựa lý thuyết tìm hiểu phần mơ hình giảng dạy để đưa Lựa chọn ngơn ngữ lập trình Cấu trúc liệu cho giải thuật sử dụng chương trình Cách thức nhập liệu, cấu trúc file lưu trữ Cách trình bày liệu xuất Các lưu đồ thuật tốn, tính tốn độ phức tạp… … Phần : So sánh độ phức tạp hai giải thuật phân tích cú pháp CYK Earley, phần đưa giả thiết để thực tính độ phức tạp cho hai giải thuật chương trình đưa minh họa ví dụ thực tế (với đồ thị minh họa) Phần : Aùp dụng nhận dạng ngơn ngữ tự nhiên, phần trình bày vấn đề liên quan đến việc nhận dạng câu nhập (Tiếng Anh) cách thức xây dựng từ điển token Phần : Thiết kế Help : phần quan trọng chương trình trợ giúp học tập, phần trọng tìm hiểu thiết kế hệ thống Help Đặc biệt thiết kế hệ thống Help cho chương trình thông qua công cụ Windows Help Designer Pro (down load từ http://www.devgr.com) Phần : Giới thiệu chuơng trình kết Phần : Phụ lục - Mã chương trình Phần 10 : Giới thiệu tài liệu tham khảo PHẦN : CƠ SỞ LÝ THUYẾT LIÊN QUAN CHƯƠNG MỘT SỐ KHÁI NIỆM CƠ BẢN Trong chương tìm hiểu số khái niệm định nghĩa liên quan đến môn học : bảng chữ cái, chuỗi, ngôn ngữ, văn phạm, dẫn xuất…, nhiên sinh viên bỏ qua chương nắm bắt khái niệm BẢNG CHỮ CÁI Là tập hữu hạn không trống ký hiệu (symbol) tập thường ký hiệu Trang Luận Tốt Nghiệp KS2-K7 Ví dụ : {A,B,C, ,Z} : Bảng chữ chữ La Tinh {0,1,2, 9} : Bảng chữ số thập phân CHUỖI Cho bảng chữ (alphabet), từ w chuỗi hữu hạn chữ Ví dụ: w=aabba, v=aaabbb từ bảng chữ ={a,b} Chuỗi rỗng từ bảng chữ ký hiệu Kết nối chuỗi (concatenation) : Cho hai chuỗi u,v bảng chữ , kết nối hai chuỗi u,v ký hiệu uv từ bảng chữ bao gồm ký hiệu thuộc u theo sau ký hiệu thuộc v Ví dụ: ={a,b,1,2} u=aabb v=1122 uv=aabb1122 Đảo chuỗi : chuỗi nhận cách viết ký hiệu theo thứ tự ngược lại Ví dụ : v=1122 vR=2211 Tiếp đầu ngữ (prefix) tiếp vĩ ngữ (suffix) chuỗi : Nêu w=uv u gọi tiếp đầu ngữ v gọi tiếp vĩ ngữ w Chiều dài chuỗi : Chiều dài chuỗi w ký hiệu |w| l(w) số ký hiệu có chuỗi Với chuỗi u,v ta có: |uv|=|u|+|v| |uv|=|vu| Lũy thừa chuỗi: nêu w chuỗi w n chuỗi có cách kết nối chuỗi w với n lần, trường hợp đặc biệt w0= * : Nếu bảng chữ tập tất chuỗi kể chuởi trống gọi * +: Nếu bảng chữ tập tất chuỗi khơng kể chuởi trống gọi + NGÔN NGỮ Bất kỳ tập L bảng chữ , hay tập L * gọi ngơn ngữ Ví dụ : Cho ={a,b} *={,a,b,aa,ab,ba,aaa,aab, } Tập {a,aa,aab} ngôn ngữ Tập L={anbn : n0} ngôn ngữ tập Vì ngơn ngữ tập hợp chuỗi nên hội (union), giao (intersection) hiệu (diference) hai ngôn ngữ dễ dàng xác định Bù ngôn ngữ : Bù ngôn ngữ L bảng chữ ký hiệu L =*-L Cho L1 L2 hai ngôn ngữ bảng chữ : Trang Luận Tốt Nghiệp KS2-K7 + L1L2 : Là ngôn ngữ chứa chuỗi có cách nối chuỗi ngôn ngữ L1 với chuỗi ngôn ngữ thuộc L2 L1L2={w: w=uv, uL1, vL2} + Ln : Lũy thừa ngơn ngữ bao gồm L nối với n lần với trường hợp đặc biệt : L0={} Ln=Ln-1L với n0 Bao đóng -sao ngơn ngữ L ký hiệu L* với : L*=L0L1L2 Bao đóng -dương ngơn ngữ L ký hiệu L+ với : L+=L1L2 4.VĂN PHẠM CHÍNH QUI VÀ NGƠN NGỮ CHÍNH QUI 4.1- Văn phạm Chính Qui Để nguyên cứu ngôn ngữ, cần chế để mơ tả Ngơn ngữ hàng ngày thường khơng xác (vì hiểu theo nhiều nghĩa tùy vào hoàn cảnh người bối cảnh sảy ra), cú pháp nhập nhằng khơng rõ ràng (câu khơng xác định ý nghĩa xác), tìm hiểu vài chế định nghĩa ngôn ngữ hiệu trường hợp khác định nghĩa ngôn ngữ thông qua văn phạm Định Nghĩa Một văn phạm G xác định bốn : G=(V,T,S,P) Trong đó: + V tập hữu hạn đối tượng gọi biến (variable) + T tập hữu hạn đối tượng gọi ký hiệu kết thúc (terminal symbol) + S V ký hiệu đặt biệt gọi biến khởi đầu + P tập hữu hạn luật sinh (Production) Văn phạm tuyến tính Phải Trái + Một văn phạm G=(V,T,S,P) gọi tuyến tính - phải tất luật sinh có dạng : X xB, X x Trong : A,B V, x T* + Mộtvăn phạm gọi tuyến tính trái tất luật sinh có dạng : X Bx, X x + Một văn phạm gọi qui văn phạm mà tuyến tính trái tuyến tính phải Các luật sinh trái tim văn phạm, chúng làm văn phạm biến đổi chuỗi thành chuỗi khác, thông qua cách chúng (các luật sinh) định nghĩa ngôn ngữ liên kết với văn phạm Chúng ta nói w dẫn xuất z ký hiệu w=*>z hay z dẫn xuất từ w Các chuỗi dẫn xuất cách áp dụng luật sinh văn phạm thứ tự tùy ý : w1=>w2=> =>wn nói w1 dẫn xuất wn viết w1=*> w2 Dấu * số bước (kể khơng) áp dụng để dẫn xuất wn từ w1 Để luật sinh áp dụng phải viết : w1=+>wn Trang Luận Tốt Nghiệp KS2-K7 4.2- Ngôn Ngữ Chính Qui Một ngơn ngữ gọi qui tồn automat hữu hạn chấp nhận Vì ngơn ngữ qui mơ tả dfa hay nfa đó, để trình bày ngơn ngữ qui mơ tả dfa hay nfa Ngơn ngữ L qui tồn văn phạm qui G cho L=L(G) 4.3- Biểu Thức Chính Qui Một cách để biểu diễn ngơn ngữ qui thơng qua khái niện biểu thức qui Khái niệm biểu thức qui bao gồm kết hợp chuỗi kí hiệu bảng chữ đó, dấu ngoặc ( ) phép toán + , * Ví dụ r=(a|b)*a Định nghĩa Cho bảng chữ Thì: + , a tất biểu thức qui Những gọi biểu thức qui nguyên thủy + Nếu r1 r2 biểu thức qui, r1+r2, r1.r2, và(r1) + Mộät chuỗi biểu thức quy dẫn xuất từ biểu thức qui nguyên thủy số lần hữu hạn áp dụng qui tắc (2) Ngôn ngữ L(r) biểu thị bỡi biểu thức qui định nghĩa qui tắc sau: + biểu thức qui biểu thị tập trống + biểu thức qui biểu thị tập {} + Đối với a , a biểu thức qui biểu thị cho ngôn ngữ {a} Nếu r1 r2 biểu thức qui : + L(r1+r2) = L(r1) L(r2) + L(r1.r2) = L(r1).L(r2) + L((r1)) = L(r1) + L(r1*) = (L(r1))* NGÔN NGỮ PHI NGỮ CẢNH Trong thực tế hàng ngày tất ngôn ngữ điều qui Trong ngơn ngữ qui hiệu việc mô tả vài mẫu đơn giản người ta khơng cần ý q nhiều đến ngơn ngữ qui có nhiều hạn chế ngơn ngữ lập trình Ví dụ: Nếu L={anbn : n0}, thay dấu ngoặc trái cho a dấu ngoặc phải cho b chuỗi dấu ngoặc chẳng hạn (( )) ((( ))) thuộc L (( ) khơng mà ngơn ngữ lập trình thường xuyên gặp cấu trúc lồng Do ta thấy vài thuộc tính ngơn ngữ lập trình u cầu bên ngồi ngơn ngữ qui, để bao trùm vấn đề ta phải mở rộng ngôn ngữ dẫn đến việc nguyên cứu ngôn ngữ văn phạm phi ngữ cảnh 5.1- Văn Phạm Phi Ngữ Cảnh Các luật sinh văn phạm qui bị giới hạn theo cách : Vế phải biến đơn, vế phải có dạng đặc biệt Để tạo văn phạm mạnh hơn, phải nới lỏng vài giới hạn vậy, cách trì giới hạn vế trái cho phép vế phải nhận văn phạm phi ngữ cảnh Trang Luận Tốt Nghiệp KS2-K7 Định Nghĩa Một văn phạm G =(V,T,S,P) gọi phi ngữ cảnh luật sinh P có dạng : A >x AV cịn x (VT)* Một ngơn ngữ gọi phi ngữ cảnh có văn phạm phi ngữ cảnh G cho L= L(G) 5.2- Dẫn Xuất Trái Nhất Và Phải Nhất Trong văn phạm phi ngữ cảnh mà không tuyến tính, dẫn xuất bao gồm nhiều dạng câu với nhiều biến, trường hợp chúng có có chọn lựa thứ tự biến thay Một dẫn xuất gọi trái bước biến bên trái thay bước biến bên phải thay gọi dẫn xuất trái 5.3 - Cây Dẫn Xuất Một cách thứ hai để trình bày dẫn xuất, độc lập với thứ tự luật sinh áp dụng dẫn xuất Một dẫn xuất có thứ tự nốt gán nhãn với vế trái luật sinh nốt biểu diễn vế phải tương ứng Ví dụ : A > abABc dẫn xuất : A Định Nghĩa a b A cảnh MộtBcây có thứ c tự dẫn xuất cho G Cho G=(V,T,S,P) văn phạm phi ngữ có tính chất sau: + Gốc gán nhãn S + Mỗi có nhãn lấy từ tập (T{})) + Mỗi nốt bên khơng phải có nhãn lấy từ V + Nếu nỗi nốt có nhãn AV, gán nhãn (từ trái sang phải) a 1, a2 an P phải chứa luật sinh có dạng A > a1, a2 an + Một gán nhãn khơng có anh chị e, tức nốt với gán nhãn khơng có khác Ngồi cịn có số khái niệm khác chưa nêu đây, bạn tìm hiểu thêm “An Introduction To Formal Languages And Automata” Peter Linz Trang Luận Tốt Nghiệp KS2-K7 CHUƠNG MỘT SỐ GIẢI THUẬT BIẾN ĐỔI VĂN PHẠM PNC VÀ CÁC DẠNG CHUẨN Trong phần này, sâu vào việc tìm hiểu số giải thuật biến đổi văn phạm phi ngữ cảnh : + Loại bỏ luật sinh rỗng + Loại bỏ luật sinh vô dụng + Loại bỏ luật sinh đơn vị + Chuyển văn phạm dạng chuẩn Chomsky + Chuyển văn phạm dạng chuẩn Greibach Việc loại bỏ luật sinh quang trọng làm tiền đề để biến đổi tập văn phạm ngôn ngữ phi ngữ cảnh dạng chuẩn quan trọng dạng chuẩn Chomsky, dạng chuẩn Greibach Từ giúp cho việc thực giải thuật phân tích cú pháp CYK I- CÁC GIẢI THUẬT BIẾN ĐỔI VĂN PHẠM 1) LOẠI BỎ CÁC LUẬT SINH RỖNG () Bất kỳ luật sinh văn phạm phi ngữ cảnh có dạng A > gọi luật sinh , biến A mà dẫn xuất A *> A gọi khả trống Nhập : - Một văn phạm phi ngữ cảnh G =(V,T,S,P) với : + V : Các kí hiệu khơng kết thúc + T : Các kí hiệu kết thúc + S : Biến khởi đầu + P : Tập luật sinh Xuất : - Một văn phạm G^=( V,T,S,P^) với tập luật sinh P^ khơng có tập luật sinh rỗng Giải Thuật Bước 1: Duyệt qua tất luật sinh P, có luật sinh có dạng A-> cho A vào tập Vn Bước : Lặp lại bước sau không thêm biến vào Vn : + Nếu P có tồn : B -> A1 A2 A3 An với A1 A2 A3 An Vn cho B vào Vn Bước 3: Sau có tập Vn, xét luật sinh P có dạng : A -> x1 x2 xm với m1 xi (V T) Đối với luật sinh P, đặt vào P^ luật sinh luật sinh cách thay biến khả trống ( Vn) tổ hợp có, ngoại trừ tất xi (i=1,2 ) khả trống khơng đặt luật sinh A-> vào P^ Ví dụ: Cho văn phạm G =({S,A,B,C,D},{a, b,d,},{S},P) luật sinh P sau : S -> ABaC A -> BC Trang Luận Tốt Nghiệp KS2-K7 B -> b | C -> D | D -> d Áp dụng giải thuật ta có : - Đầu tiên Vn={} Bước 1: Các luật sinh trực tiếp sinh B ->, C -> Vn={B,C} Bước 2: Các luật sinh gián tiếp dẫn xuất rỗng A ->BC thêm A vào tập Vn => Vn={B,C,A} Bước : Xây dựng tổ hợp cho luật sinh cách thay cho biến vế phải thuộc Vn, ta luật P^: S -> ABaC | BaC | AaC | ABa | aC | Ba | Aa | a B -> b C -> D A -> BC | C | B 2) LOẠI BỎ CÁC LUẬT SINH ĐƠN VỊ Bất kỳ luật sinh văn phạm phi ngữ cảnh có dạng A -> B A,B thuộc V gọi luật sinh đơn vị Nhập : - Một văn phạm phi ngữ cảnh G =(V,T,S,P) với : + V : Các kí hiệu khơng kết thúc + T : Các kí hiệu kết thúc + S : Biến khởi đầu + P : Tập luật sinh Xuất : - Một văn phạm G^=( V,T,S,P^) với tập luật sinh P^ khơng có tập luật sinh đơn vị Giải Thuật Bước : Đặt vào P^ luật sinh không đơn vị P Bước : Đối với luật sinh P có dạng A -> B (A B), biến A tìm tất biến B cho A *> B Điều thực cách vẽ đồ thị phụ thuộc cho G Bước : Xét tất biến A B thỏa mãn bước , thêm vào P^ luật sinh sau : A -> y1 | y2 | y3| |yn Trong B -> y1 | y2 | y3| |yn luật sinh không đơn vị B Hay nói cách khác đặt vế phải luật sinh không đơn vị B P vào làm vế phải luật sinh A p^ Kết G^ tương đương với G mà P^ không chứa luật sinh đơn vị Ghi : Nếu muốn P^ khơng chứa luật sinh rỗng trước tiên ta phải loại bỏ luật sinh trước Ví dụ: Cho văn phạm G =({S,A,B},{a,b,c},{S},P) luật sinh P sau : S -> Aa | B B -> A | bb A -> a | bc | B Trang Luận Tốt Nghiệp KS2-K7 Áp dụng giải thuật ta có : - Bước 1: Đặt vào P^ luật sinh không đơn vị : S -> Aa B -> bb A -> a | bc - Bước 2: Từ tập luật sinh đơn vị tìm tập luật sinh dẫn xuất A *>B sau : S -> B S -> A A -> B B -> A + Đồ thị phụ thuộc: S A B - Bước : Xét tất luật sinh thõa mãn bước ta thêm vào luật sinh sau vào P^ S -> B S -> bb S -> A S -> a | bc A -> B A -> bb B -> A S -> a | bc Vậy P^ : S -> Aa | bb | a | bc B -> bb | a | bc A -> a | bc | bb Khơng có luật sinh đơn vị 3) LOẠI BỎ CÁC LUẬT SINH VÔ DỤNG Một mong muốn cố định loại bỏ khỏi văn phạm luật sinh mà không đóng góp dẫn xuất Chẳng hạn văn phạm sau toàn tập luật sinh : S -> aSb | | A A -> aA Luật sinh S -> A rõ ràng khơng đóng vai trị nào, A khơng thể biến đổi thành ký hiệu kết thúc Trong A xuất chuỗi dẫn xuất từ S, khơng dẫn đến câu Việc loại bỏ luật sinh không làm ảnh hưởng đến ngôn ngữ đơn giản hóa theo định nghĩa Nhập : - Một văn phạm phi ngữ cảnh G =(V,T,S,P) với : + V : Các kí hiệu khơng kết thúc + T : Các kí hiệu kết thúc + S : Biến khởi đầu + P : Tập luật sinh Xuất : - Một văn phạm G^=(V^,T^,S,P^) với tập luật sinh P^ khơng có tập luật sinh vơ dụng Giải Thuật Trang 10 ... TÀI Yêu cầu đề tài : ? ?Xây dựng công cụ thực số giải thuật mơn học ngơn ngữ hình thức Automata. ” Ngoài giải thuật biến đổi văn phạm, tập trung vào nghiên cứu thực hai giải thuật phân tích cú pháp... điển giải thuật, giúp tìm cách giải thích hợp vấn đề phân tích cú pháp Sau vào tìm hiểu số giải thuật cơng cụ phân tích cú pháp thơng dụng II- CÁC GIẢI THUẬT Trong phần tập trung tìm hiểu giải thuật. .. tìm hiểu khác cụ thể : Chương : Một số khái niệm môn học Mục đích chương giúp cho người đọc làm quen với số khái niệm Ngôn ngữ Hình thức & Automat chuỗi, ngơn ngữ văn phạm qui, ngơn ngữ văn phạm