Luận văn toán rời rạc

147 592 3
Tài liệu đã được kiểm tra trùng lặp
Luận văn toán rời rạc

Đ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

Luận văn toán rời rạc

Luận Tốt Nghiệp KS2-K7LỜI NÓI ĐẦUMôn học ngôn ngữ hình thức và automata có rất nhiều ứng dụng trong lĩnh vực khoa học máy tính như xây dựng các trình biên dịch, nhận dạng và chuyển đổi giữa các ngôn ngữ khác nhau… Do đó mà môn học này là một môn học bắt buộc cho các sinh viên ngành CNTT trong các trường đại học.Để giúp cho các sinh viên có điều kiện học tốt và thực hành các bài tập của môn học này, luận văn này đi sâu vào việc mô phỏng lại hoạt động của các giải thuật trong phần ngôn ngữ phi ngữ cảnh đặc biệt là các giải thuật phân tích cú pháp Earley và CYK.Sinh viên có thể khai thác cơ sở lý thuyết của môn học thông qua hệ thống Help của chương trình.Xin cám ơn thầy Hồ Văn Quân đã tận tình hướng dẫn và giúp đỡ tôi hoàn thành bản luận văn tốt nghiệp như yêu cầu của đề bài.Sinh Viên Thực Hiện Thái Thuần Thạch PHẦN 1Trang 1 Luận Tốt Nghiệp KS2-K7GIỚI THIỆU1. GIỚI THIỆU ĐỀ TÀIYêu cầu của đề tài là :“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.” Ngoài các giải thuật biến đổi văn phạm, tập trung vào nghiên cứu và hiện thực hai giải thuật phân tích cú pháp CYK và Earley, Đánh giá số bước phân tích của mỗi giải thuật.Aùp dụng nhận dạng một câu nhập thuộc ngôn ngữ tự nhiên (Tiếng Anh)2. MỤC ĐÍCH & Ý NGHĨA Hiện nay, ở nước ta việc áp dụng giảng dạy các môn học thông qua các mô hình giảng dạy thiết kế trên máy tính còn gặp nhiều khó khăn, một trong những nguyên nhân là thiếu các phần mềm hỗ trợ việc học và giảng dạy.Luận văn này ra đời không nằm ngoài mục đích giúp sinh viên nghành CNTT có một 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ụ này cho phép sinh thấy rõ cách thức hoạt động của một số giải thuật của phần ngôn ngữ phi ngữ cảnh, cũng như thấy được ứng dụng của các giải thuật phân tích cú pháp.3. NỘI DUNG CHÍNH CỦA LUẬN VĂN TỐT NGHIỆPNội dung của luận văn được chia làm 8 phần, cụ thể như sau:♦ Phần 1 : Là phần giới thiệu về đề tài, cùng ý nghĩa và tầm quan trọng của nó.♦ Phần 2 : Đây là phần tìm hiểu về cơ sở lý thuyết có liên quan, trong phần 2 này được chia làm 4 chương với các chủ đề tìm hiểu khác nhau cụ thể là :Chương 1 : Một số khái niệm cơ bản của môn học Mục đích của chương này là giúp cho người đọc làm quen với một số khái niệm về Ngôn ngữ Hình thức & Automat như chuỗi, ngôn ngữ và văn phạm chính qui, ngôn ngữ và văn phạm PNC, cây dẫn xuất… để có thể dễ dàng đọc tiếp những phần sau.Tuy nhiên, người đọc có thể bỏ qua chương này nếu đã nắm được các khái niệm trên.Chương 2 :Các giải thuật biến đổi văn phạm PNC & các dạng chuẩnTrong chương này tập trung tìm hiểu các giải thuật biến đổi văn phạm PNC như : Loại bỏ các luật sinh rỗng, đơn vị, vô dụng cũng như chuyển đổi một văn phạm PNC bất kỳ về hai dạng chuẩn Chomsky và Greibach, đây là phần lý thuết cơ bản làm nền tảng cho việc thực hiện giải thuật phân tích cú pháp CYK sau này.Chương 3 : Trình bày Một số giải thuật và công cụ phân tích cú pháp thông dụng bao gồm phương pháp từ trên xuống (top -down) và từ dưới lên (bootom -up) mục đích là 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 và Earley Chuơng 4 : Giải thuật phân tích cú pháp Earley và CYK, đây là phần chính của luận văn, trong chương này chú trọng đến việc tìm hiểu về giải thuật để phân tích cú pháp và tạo chuỗi dẫn xuất cho câu nhập, cũng như so sánh độ phức tạp của hai giải thuật này với các giải thuật ở chương 3.Trang 2 Luận Tốt Nghiệp KS2-K7♦ Phần 3 : Tìm hiểu lý thuyết về phần mềm hỗ trợ học tập và giảng dạy, cách thức để thiết kế và lựa chọn mô hình giảng dạy tốt.♦ Phần 4 : Tập trung phân tích và thiết kế cho mô hình vừa chọn, phần này dựa trên các lý thuyết đã tìm hiểu ở phần 2 và mô hình giảng dạy để đưa ra• Lựa chọn ngôn ngữ lập trình• Cấu trúc dữ liệu cho các giải thuật sử dụng trong 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 dữ liệu xuất• Các lưu đồ thuật toán, tính toán độ phức tạp…• …♦ Phần 5 : So sánh độ phức tạp giữa hai giải thuật phân tích cú pháp CYK và Earley, trong phần này đưa ra các giả thiết để thực hiện tính độ phức tạp cho hai giải thuật trên bằng chương trình cũng như đưa ra những minh họa bằng ví dụ thực tế (với các đồ thị minh họa) ♦ Phần 6 : Aùp dụng nhận dạng ngôn ngữ tự nhiên, trong phần này sẽ trình bày các vấn đề liên quan đến việc nhận dạng một câu nhập (Tiếng Anh) và cách thức xây dựng bộ từ điển token.♦ Phần 7 : Thiết kế Help : đây cũng là một phần quan trọng của một chương trình trợ giúp học tập, trong phần này chú trọng tìm hiểu thiết kế một hệ thống Help. Đặc biệt là 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 8 : Giới thiệu chuơng trình kết quả.♦ Phần 9 : Phụ lục - Mã chương trình♦ Phần 10 : Giới thiệu các tài liệu tham khảoPHẦN 2 : CƠ SỞ LÝ THUYẾT LIÊN QUANCHƯƠNG 1MỘT SỐ KHÁI NIỆM CƠ BẢNTrong chương này chúng ta sẽ tìm hiểu một số khái niệm và định nghĩa cơ bản liên quan đến môn học như : bảng chữ cái, chuỗi, ngôn ngữ, văn phạm, cây dẫn xuất…, tuy nhiên sinh viên có thể bỏ qua chương này nếu đã nắm bắt được các khái niệm trên.1. BẢNG CHỮ CÁITrang 3 Luận Tốt Nghiệp KS2-K7♦ Là một tập hữu hạn không trống các ký hiệu (symbol) tập này thường được ký hiệu bằng Σ ♦ Ví dụ :{A,B,C, .,Z} : Bảng chữ cái chữ La Tinh{0,1,2, 9} : Bảng chữ số thập phân2. CHUỖI ♦ Cho Σ là bảng chữ cái (alphabet), một từ w trên Σ là một chuỗi hữu hạn các chữ cái.Ví dụ:w=aabba, v=aaabbb là các từ trên bảng chữ cái Σ={a,b}♦ Chuỗi rỗng cũng là một từ trên bảng chữ cái Σ ký hiệu là λ♦ Kết nối chuỗi (concatenation) : Cho hai chuỗi u,v trên bảng chữ cái Σ, kết nối giữa hai chuỗi u,v ký hiệu là uv là một từ trên bảng chữ cái Σ bao gồm các ký hiệu thuộc u theo sau là các ký hiệu thuộc v.Ví dụ:Σ ={a,b,1,2}u=aabbv=1122uv=aabb1122♦ Đảo một chuỗi : là chuỗi nhận được bằng cách viết các ký hiệu theo thứ tự ngược lại.Ví dụ : v=1122 thì vR=2211♦ Tiếp đầu ngữ (prefix) và tiếp vĩ ngữ (suffix) của một chuỗi : Nêu w=uv thì u được gọi là tiếp đầu ngữ và v được gọi là tiếp vĩ ngữ của w♦ Chiều dài của một chuỗi : Chiều dài của một chuỗi w được ký hiệu là |w| hay là l(w) là số ký hiệu có trong chuỗi.♦ Với mọi chuỗi u,v trên Σ ta có:|uv|=|u|+|v||uv|=|vu|♦ Lũy thừa của một chuỗi: nêu w là một chuỗi thì wn là một chuỗi có được bằng cách kết nối chuỗi w với chính nó n lần, trường hợp đặc biệt w0=λ♦ Σ* : Nếu Σ là một bảng chữ cái thì tập tất cả các chuỗi trên Σ kể cả chuởi trống được gọi là Σ*♦ Σ+: Nếu Σ là một bảng chữ cái thì tập tất cả các chuỗi trên Σ không kể chuởi trống được gọi là Σ+3. NGÔN NGỮ ♦ Bất kỳ một tập L nào trên bảng chữ cái Σ, hay tập con L của Σ* được gọi là một ngôn ngữ.Ví dụ :Cho Σ={a,b} thì Σ*={λ,a,b,aa,ab,ba,aaa,aab, .}Tập {a,aa,aab} là một ngôn ngữ trên ∑Tập L={anbn : n≥0} cũng là một ngôn ngữ trên tập ∑♦ Vì ngôn ngữ là một tập hợp các chuỗi nên hội (union), giao (intersection) và hiệu (diference) của hai ngôn ngữ dễ dàng xác định ngay lập tức.Trang 4 Luận Tốt Nghiệp KS2-K7♦ Bù của một ngôn ngữ : Bù của một ngôn ngữ L trên bảng chữ cái ∑ được ký hiệu là L =∑*-L♦ Cho L1 và L2 là hai ngôn ngữ trên bảng chữ cái ∑:+ L1L2 : Là một ngôn ngữ trên ∑ chứa các chuỗi có được bằng cách nối bất kỳ một chuỗi của ngôn ngữ L1 với một chuỗi bất kỳ của ngôn ngữ thuộc L2L1L2={w: w=uv, u∈L1, v∈L2}+ Ln : Lũy thừa của một ngôn ngữ bao gồm L nối với chính n lần với trường hợp đặc biệt :L0={λ}Ln=Ln-1L với n≥0♦ Bao đóng -sao của một ngôn ngữ L được ký hiệu là L* với :L*=L0∪L1∪L2 .♦ Bao đóng -dương của một ngôn ngữ L được ký hiệu là L+ với :L+=L1∪L2 .4.VĂN PHẠM CHÍNH QUI VÀ NGÔN NGỮ CHÍNH QUI4.1- Văn phạm Chính QuiĐể nguyên cứu một ngôn ngữ, chúng ta cần một cơ chế để mô tả nó. Ngôn ngữ hàng ngày thường không chính xác (vì có thể hiểu theo nhiều nghĩa tùy vào hoàn cảnh của từng người và bối cảnh sảy ra), cú pháp thì nhập nhằng không rõ ràng (câu có thể không xác định được ý nghĩa chính xác), vì vậy chúng ta sẽ tìm hiểu một vài cơ chế định nghĩa ngôn ngữ rất hiệu quả trong các trường hợp khác nhau đó là định nghĩa ngôn ngữ thông qua văn phạm.♦ Định Nghĩa Một văn phạm G được xác định như là một bộ bốn :G=(V,T,S,P)Trong đó:+ V là một tập hữu hạn các đối tượng được gọi là các biến (variable)+ T là một tập hữu hạn các đối tượng được gọi là các ký hiệu kết thúc (terminal symbol)+ S∈ V là một ký hiệu đặt biệt được gọi là biến khởi đầu.+ P là tập hữu hạn các luật sinh (Production)♦ Văn phạm tuyến tính Phải và Trái+ Một văn phạm G=(V,T,S,P) được gọi là tuyến tính - phải nếu tất cả các luật sinh có dạng :X  xB,X xTrong đó : A,B ∈ V, x ∈ T* .+ Mộtvăn phạm được gọi là tuyến tính trái nếu tất cả các luật sinh có dạng :X Bx,X x+ Một văn phạm gọi là chính qui là văn phạm mà hoặc là tuyến tính trái hoặc tuyến tính phải.Các luật sinh là trái tim của văn phạm, chúng chỉ ra làm thế nào văn phạm biến đổi một chuỗi thành một chuỗi khác, và thông qua cách này chúng (các luật sinh) định nghĩa một ngôn ngữ liên kết với văn phạm.Trang 5 Lun Tt Nghip KS2-K7 Chỳng ta núi rng w dn xut ra z ký hiu w=*>z hay z c dn xut ra t w. Cỏc chui ln lt c dn xut bng cỏch ỏp dng cỏc lut sinh ca vn phm trong mt th t tựy ý nu : w1=>w2=> .=>wn chỳng ta núi w1 dn xut ra wn v vit w1=*> w2. Du * ch ra rng mt s bc bt k no ú (k c khụng) cú th c ỏp dng dn xut ra wn t w1 ch ra ớt nht mt lut sinh ỏp dng chỳng ta phi vit : w1=+>wn4.2- Ngụn Ng Chớnh Qui Mt ngụn ng gi l chớnh qui nu tn ti mt automat hu hn chp nhn nú. Vỡ vy mi ngụn ng chớnh qui cú th c mụ t bng mt dfa hay mt nfa no ú, nh vy trỡnh by mt ngụn ng chớnh qui cú th mụ t nú nh l mt dfa hay nfa.Ngụn ng L l chớnh qui nu v ch nu tn ti mt vn phm chớnh qui G sao cho L=L(G).4.3- Biu Thc Chớnh QuiMt cỏch biu din ngụn ng chớnh qui l thụng qua khỏi nin biu thc chớnh qui. Khỏi nim v biu thc chớnh qui bao gm s kt hp cỏc chui kớ hiu ca mt bng ch cỏc no ú, cỏc du ngoc ( ) v cỏc phộp toỏn + , . v *. Vớ d r=(a|b)*a nh ngha Cho l mt bng ch cỏi. Thỡ:+ , v a tt c u l nhng biu thc chớnh qui. Nhng cỏi ny c gi l nhng biu thc chớnh qui nguyờn thy.+ Nu r1 v r2 l nhng biu thc chớnh qui, thỡ r1+r2, r1.r2, v(r1) cng vy.+ Mọt chui l mt biu thc chớnh quy nu v ch nu nú cú th c dn xut t cỏc biu thc chớnh qui nguyờn thy bng mt s ln hu hn ỏp dng cỏc qui tc trong (2). Ngụn ng L(r) c biu th bi biu thc chớnh qui bt k v c nh ngha bi cỏc qui tc sau:+ l mt biu thc chớnh qui biu th tp trng.+ l mt biu thc chớnh qui biu th tp {}+ i vi mi a , a l biu thc chớnh qui biu th cho ngụn ng {a}.Nu r1 v r2 nhng biu thc chớnh qui thỡ :+ L(r1+r2) = L(r1) L(r2)+ L(r1.r2) = L(r1).L(r2)+ L((r1)) = L(r1)+ L(r1*) = (L(r1))*5. NGễN NG PHI NG CNHTrong thc t hng ngy khụng phi tt c cỏc ngụn ng iu l chớnh qui. Trong khi ngụn ng chớnh qui hiu qu trong vic mụ t mt vi mu n gin do ú ngi ta khụng cn chỳ ý quỏ nhiu n cỏc ngụn ng chớnh qui vỡ cú nhiu s hn ch ca nú i vi ngụn ng lp trỡnh.Vớ d: Nu trong L={anbn : n0}, chỳng ta thay th du ngoc trỏi cho a v du ngoc phi cho b thỡ chui cỏc du ngoc chng hn nh (( )) v ((( ))) l thuc L nhng (( ) thỡ khụng m trong mt ngụn ng lp trỡnh thỡ thng xuyờn gp nhng cu trỳc lng nhau nh vy. Do ú ta thy mt vi thuc tớnh ca ngụn ng lp trỡnh yờu cu mt cỏi gỡ ú bờn ngoi ngụn ng chớnh qui, bao trựm Trang 6 Luận Tốt Nghiệp KS2-K7những vấn đề này ta phải mở rộng ngôn ngữ dẫn đến việc nguyên cứu ngôn ngữ và văn phạm phi ngữ cảnh. 5.1- Văn Phạm Phi Ngữ CảnhCác luật sinh trong văn phạm chính qui thì bị giới hạn theo 2 cách : Vế phải là một biến đơn, trong khi đó vế phải có một dạng đặc biệt. Để tạo ra văn phạm mạnh hơn, chúng ta phải nới lỏng một vài giới hạn như vậy, bằng cách duy trì giới hạn trên vế trái nhưng cho phép bất kỳ cái gì trên vế phải khi đó chúng ta nhận được một văn phạm phi ngữ cảnh.♦ Định Nghĩa Một văn phạm G =(V,T,S,P) được gọi là phi ngữ cảnh nếu mọi luật sinh trong P có dạng :A-->xtrong đó A∈V còn x∈ (V∪T)*.Một ngôn ngữ được gọi là phi ngữ cảnh nếu và chỉ nếu có một văn phạm phi ngữ cảnh G sao 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, một dẫn xuất có thể bao gồm nhiều dạng câu với nhiều hơn một biến, trong trường hợp như vậy chúng có có một sự chọn lựa về thứ tự biến nào được thay thế.Một dẫn xuất được gọi là trái nhất nếu trong mỗi bước biến bên trái nhất được thay thế. nếu trong mỗi bước biến bên phải nhất được thay thế thì gọi dẫn xuất trái nhất.5.3 - Cây Dẫn XuấtMột cách thứ hai để trình bày các dẫn xuất, độc lập với thứ tự trong đó các luật sinh được áp dụng là bằng cây dẫn xuất. Một cây dẫn xuất là một cây có thứ tự trong đó các nốt được gán nhãn với vế trái của luật sinh còn các con của các nốt biểu diễn bằng vế phải tương ứng của nó Ví dụ : A--> abABc thì cây dẫn xuất là :Định Nghĩa Cho G=(V,T,S,P) là một văn phạm phi ngữ cảnh. Một cây có thứ tự là một cây dẫn xuất cho G nếu và chỉ nếu có các tính chất sau:+ Gốc được gán nhãn là S+ Mỗi lá có một nhãn lấy từ tập (T∪{λ})+ Mỗi nốt bên trong không phải là lá có một nhãn lấy từ V.+ Nếu nỗi nốt có nhãn A∈V, và các con của nó được gán nhãn (từ trái sang phải) a1, a2 an thì P phải chứa một luật sinh có dạngA--> a1, a2 anTrang 7ABA cba Luận Tốt Nghiệp KS2-K7+ Một lá được gán nhãn λ không có anh chị e, tức là một nốt với một con được gán nhãn λ có thể không có con nào khác.Ngoài ra còn có một số khái niệm khác chưa được nêu ra ở đây, các bạn có thể tìm hiểu thêm trong “An Introduction To Formal Languages And Automata” của Peter LinzCHUƠNG 2MỘT SỐ GIẢI THUẬT BIẾN ĐỔI VĂN PHẠM PNC VÀ CÁC DẠNG CHUẨNTrong phần này, chúng ta đi sâu vào việc tìm hiểu một số giải thuật biến đổi văn phạm phi ngữ cảnh như : + Loại bỏ các luật sinh rỗng + Loại bỏ các luật sinh vô dụng + Loại bỏ các luật sinh đơn vị + Chuyển văn phạm bất kỳ về dạng chuẩn Chomsky+ Chuyển văn phạm bất kỳ về dạng chuẩn GreibachViệc loại bỏ các luật sinh trên rất quang trọng làm tiền đề để có thể biến đổi tập văn phạm của ngôn ngữ phi ngữ cảnh về các dạng chuẩn quan trọng như dạng chuẩn Chomsky, dạng chuẩn Greibach. Từ đó giúp cho việc thực hiện một giải thuật phân tích cú pháp như CYK.I- CÁC GIẢI THUẬT BIẾN ĐỔI VĂN PHẠM1) LOẠI BỎ CÁC LUẬT SINH RỖNG (λ)Bất kỳ luật sinh nào của văn phạm phi ngữ cảnh có dạng A --> λ được gọi là luật sinh λ, và bất kỳ biến A nào mà đối với nó dẫn xuất A--*> λ là có thể thì A gọi là 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 các 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 cả các luật sinh trong P, nếu có luật sinh nào có dạng A->λ thì cho A vào tập VnBước 2 : Lặp lại bước sau cho đến khi nào không thêm được biến vào Vn được nữa :+ Nếu trong P có tồn tại : B---> A1 A2 A3 . An với A1 A2 A3 . An ∈ Vn thì cho B vào VnTrang 8 Luận Tốt Nghiệp KS2-K7Bước 3: Sau khi đã có tập Vn, xét mọi luật sinh trong P có dạng :A---> x1 x2 . xm với m≥1 và xi ∈ (V∪ T)Đối với mỗi luật sinh như vậy của P, đặt vào P^ luật sinh đó cũng như những luật sinh bằng cách thay thế các biến khả trống (∈ Vn) bằng λ trong mọi tổ hợp có thể có, ngoại trừ tất cả xi (i=1,2 .) là khả trống thì không đặt luật sinh A->λ vào trong P^Ví dụ:Cho văn phạm G =({S,A,B,C,D},{a, b,d,λ},{S},P) và các luật sinh trong P như sau :S ---> ABaCA ---> BCB ---> b | λC ---> D | λD ---> dÁp dụng giải thuật trên ta có :- Đầu tiên Vn={}Bước 1: Các luật sinh trực tiếp sinh B--->λ, C--->λ do đó Vn={B,C}Bước 2: Các luật sinh gián tiếp dẫn xuất ra rỗng là A--->BC do đó thêm A vào tập Vn => Vn={B,C,A}Bước 3 : Xây dựng các tổ hợp cho mỗi luật sinh bằng cách thay thế λ cho những biến ở vế phải thuộc Vn, ta được luật P^:S ---> ABaC | BaC | AaC | ABa | aC | Ba | Aa | aB ---> bC ---> DA ---> BC | C | B2) LOẠI BỎ CÁC LUẬT SINH ĐƠN VỊBất kỳ luật sinh của văn phạm phi ngữ cảnh có dạng A ---> B trong đó A,B thuộc V thì được gọi là 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 các 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 1 : Đặt vào P^ các luật sinh không đơn vị của P Bước 2 : Đối với mỗi luật sinh trong P có dạng A---> B (A ≠ B), thì đối với mỗi biến A tìm tất cả các biến B sao cho A--*> B Điều này có thể thực hiện được bằng cách vẽ đồ thị phụ thuộc cho G.Bước 3 : Xét tất cả các biến A và B thỏa mãn ở bước 2 , chúng ta sẽ thêm vào P^ các luật sinh sau :A ---> y1 | y2 | y3| .|yn Trong đó B ---> y1 | y2 | y3| .|yn là các luật sinh không đơn vị của B. Hay nói cách khác đặt các vế phải của các luật sinh không đơn vị của B ở trong P vào làm các vế phải của các luật sinh của A trong p^Trang 9 Luận Tốt Nghiệp KS2-K7Kết quả G^ sẽ tương đương với G mà P^ không chứa các luật sinh đơn vịGhi chú :Nếu muốn trong P^ không chứa luật sinh rỗng λ thì 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) và các luật sinh trong P như sau :S ---> Aa | BB ---> A | bbA ---> a | bc | BÁp dụng giải thuật trên ta có :- Bước 1: Đặt vào P^ các luật sinh không đơn vị :S ---> AaB ---> bbA ---> a | bc- Bước 2: Từ các tập luật sinh đơn vị trên tìm ra được các tập luật sinh dẫn xuất A--*>B như sau :S ---> BS ---> AA ---> BB ---> A+ Đồ thị phụ thuộc:- Bước 3 : Xét tất cả các luật sinh thõa mãn bước 2 ta thêm vào các luật sinh sau vào P^S ---> B <==> S ---> bbS ---> A <==> S ---> a | bcA ---> B <==> A ---> bbB ---> A <==> S ---> a | bcVậy trong P^ :S ---> Aa | bb | a | bc B ---> bb | a | bcA ---> a | bc | bbKhông có luật sinh đơn vị nào3) LOẠI BỎ CÁC LUẬT SINH VÔ DỤNG Một mong muốn cố định là loại bỏ ra khỏi văn phạm những luật sinh mà không bao giờ đóng góp gì trong bất kỳ dẫn xuất nào. Chẳng hạn trong văn phạm sau toàn bộ tập luật sinh của nó là :S ---> aSb | λ | AA ---> aALuật sinh S ---> A rõ ràng không đóng một vai trò nào, vì A không thể được biến đổi thành các ký hiệu kết thúc. Trong khi A có thể xuất hiện trong một chuỗi được dẫn xuất từ S, cái này có thể không bao giờ dẫn đến câu. Việc loại bỏ luật sinh này không làm ảnh hưởng đến ngôn ngữ và là một sự đơn giản hóa theo bất kỳ định nghĩa nào. • Nhập : - Một văn phạm phi ngữ cảnh G =(V,T,S,P) với :Trang 10 B A S [...]... hợp lệ của văn phạm Trang 16 Luận Tốt Nghiệp KS2-K7 Đối với văn phạm phi ngữ cảnh bất kỳ thì một phần tử của bảng phân tích có thể là đa trị Giải thuật parsing LL chỉ có thể áp dụng được với những văn phạm phi ngữ cảnh nào mà phần tử của bảng phân tích tương ứng là đơn trị đó chính là văn phạm LL đã đề cập ở trên Dễ dàng một văn phạm vi phạm điều kiện 1 và điều kiện 2 thì không phải là văn phạm LL... thời gian bằng hoặc nhỏ hơn 1.8 Kết Luận Giải thuật Earley là một giải thuật phân tích cú pháp từ trên xuống cho văn phạm phi ngữ cảnh tổng quát Nó không đòi hỏi văn phạm đưa ra không cần ở dạng chuẩn nào do đó khi biểu diễn văn phạm nên biểu diễn nó ở dạng tự nhiên, dễ hiểu nhất (đây là một điều rất quang trọng để viết một văn phạm đúng và dễ kiểm tra) Do cách biểu văn phạm khá thoáng như trên nên giải... một thủ tục xử lý lỗi thích hợp khi đó chuỗi nhập không phải là câu hợp lệ của văn phạm Đối với một văn phạm phi ngữ cảnh tổng quát thì một phần tử của bảng action có thể là đa trị Giải thuật phân tích LR chỉ có thể áp dụng được với những tập văn phạm phi ngữ cảnh nào mà một phần tử của bảng action-goto là đơn trị Đó là văn phạm LR đã đề cập ở trên Cách thức xây dựng bảng action - goto xin xem thêm... ra câu nhập từ bảng T + Nhập : - Văn phạm ở dạng chuẩn Chomsky G=(N,∑, P,S) và các luật sinh trong P được đánh số từ 1 -> p - Chuỗi nhập w=a1a2 an - Bảng phân tích T theo giải thuật trên Trang 33 Luận Tốt Nghiệp KS2-K7 + Xuất : - Tập (theo thứ tự) các luật tham gia vào dẫn xuất trái nhất cho câu nhập (nếu câu nhập thuộc văn phạm G) hoặc câu thông báo “chuỗi không thuộc văn phạm” • Giải thuật + Kiễm tra... O(n3) III- KẾT LUẬN Qua tìm hiểu hai giải thuật Earley và CYK chúng ta nhận thấy: - Cả hai giải thuật điều có độ phức tạp thời gian theo chiều dài câu nhập là O(n 3).Tuy nhiên, trong một số lớp văn phạm Earley có độ phức tạp theo chiều dài câu nhập là O(n2) hoặc O(n) - Tập văn phạm của giải thuật Earley không đòi hỏi phải ở một dạng chuẩn nào, đây là một lợi thế của Earley vì hầu như mọi văn phạm định... Hiện nay, đã có nhiều công cụ và giải thuật phân tích cú pháp, các giải thuật này có thể theo phương pháp từ trên xuống hay từ dưới lên và có thể xử lý được lớp văn phạm phi ngữ cảnh tổng quát hay là lớp con của nó (một tập văn phạm nhỏ của tập văn phạm phi ngữ cảnh tổng quát) Việc tìm hiểu các giải thuật và công cụ hiện có giúp chúng ta có một cái nhìn tổng thể về việc phân tích cú pháp cũng như có điều... giải thuật chỉ áp dụng cho một tập các văn phạm hạn chế có tính chất đặt biệt gọi là LL sau đây là cấu trúc dữ liệu chính và hoạt động của giải thuật : • Cấu trúc dữ liệu gồm : + Bộ đệm nhập chứa chuỗi nhập cần phân tích + Parser : Điều khiển các hành vi của bộ phân tích + Stack : Chứa các ký hiệu văn phạm trong quá trình phân tích + Bảng phân tích LL Trang 15 Luận Tốt Nghiệp KS2-K7 Chuỗi nhập Stack... phân tích LL Hình 1 : Hoạt động của bộ phân tích cú pháp LL Nhập : - Văn phạm G - Chuỗi nhập w Xuất : - Nếu G là văn phạm LL và w thuộc L(G) thì tạo ra dẫn xuất trái của w, ngược lại sẽ báo lỗi Giải Thuật : Gọi S là ký hiệu mục tiêu của G, $ là ký hiệu kết thúc chuỗi nhập và đánh dấu stack rỗng Đầu tiên xây dựng bảng phân tích M cho văn phạm G, nó có dạng là một ma trận M Trị của phần tử M[A,a] có thể... A,B,C ∈ V, còn a∈ T Định lý : Bất kỳ VPPNC nào G=(V,T,S,P) với λ ∉ L(G) điều có một văn phạm tương đương G^=(V^,T,S,P^) trong dạng chuẩn Chom sky • 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 các luật sinh • Xuất : - Một văn phạm G^=( V^,T^,S^,P^) với tập luật sinh P^ thuộc dạng chuẩn Chomsky • Giải Thuật... đó giài thuật parsing LL không thể áp dụng cho loại văn phạm trên Cách thức xây dựng bảng phân tích M có thể tham khảo thêm trong (Compilers - trang 190) 2- Giải Thuật Phân Tích Cú Pháp LR Giải thuật này là tiêu biểu cho họ giải tthuật phân tích cú pháp từ dưới lên Giải thuật áp dụng được trên các tập văn phạm hạn chế có tính chất đặc biệt gọi là văn phạm LR Sau đây là cấu trúc dữ liệu chính và hoạt . của các giải thuật phân tích cú pháp.3. NỘI DUNG CHÍNH CỦA LUẬN VĂN TỐT NGHIỆPNội dung của luận văn được chia làm 8 phần, cụ thể như sau:♦ Phần 1 : Là phần. thống Help của chương trình.Xin cám ơn thầy Hồ Văn Quân đã tận tình hướng dẫn và giúp đỡ tôi hoàn thành bản luận văn tốt nghiệp như yêu cầu của đề bài.Sinh

Ngày đăng: 26/10/2012, 16:21

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

Tài liệu liên quan