ngôn ngữ hình thức và automata
Trang 1LỜI NÓI ĐẦU
Mô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ọcmá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ácnhau… 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 trongcá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ậnvă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ươngtrì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
Trang 2PHẦN 1
GIỚI THIỆU
1 GIỚI THIỆU ĐỀ TÀI
Yê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.” Ngồ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ảngdạ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ácphầ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 ngồi mục đích giúp sinh viên nghành CNTT cĩ mộtcơ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ỆP
Nộ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ữngphần sau.Tuy nhiên, người đọc cĩ thể bỏ qua chương này nếu đã nắm được cáckhá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ẩn
Trong 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ạmPNC bất kỳ về hai dạng chuẩn Chomsky và Greibach, đây là phần lý thuết cơ bảnlà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ổngquá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
Trang 3và 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ảithuật này với các giải thuật ở chương 3.
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 tốn, tính tố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ằngchươ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ả.
MỘT SỐ KHÁI NIỆM CƠ BẢN
Trong 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ÁI
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
Trang 4w=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ỗiu,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
* : 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 : n0} 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
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 L và L là hai ngôn ngữ trên bảng chữ cái :
Trang 5+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ônngữ L1 với một chuỗi bất kỳ của ngôn ngữ thuộc L2
L1L2={w: w=uv, uL1, vL2}+ 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 :
Đị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 :
Chúng ta nói rằng w dẫn xuất ra z ký hiệu w=*>z hay z được dẫn xuất ra từ w Các chuỗi lầnlượt được dẫn xuất bằng cách áp dụng các luật sinh của văn phạm trong một thứ tự tùy ý nếu :
w1=>w2=> =>wn chúng ta nói w1 dẫn xuất ra wn và viết w1=*> w2.
Dấu * chỉ ra rằng một số bước bất kỳ nào đó (kể cả không) có thể được áp dụng để dẫn xuất ra
wn từ w1
Để chỉ ra ít nhất một luật sinh áp dụng chúng ta phải viết : w1=+>wn
Trang 64.2- Ngôn Ngữ Chính Qui
Một ngôn ngữ gọi là chính qui nếu tồn tại một automat hữu hạn chấp nhận nó Vì vậy mỗingôn ngữ chính qui có thể được mô tả bằng một dfa hay một nfa nào đó, như vậy để trình bàymột ngôn ngữ chính qui có thể mô tả nó như là một dfa hay nfa
Ngôn ngữ L là chính qui nếu và chỉ nếu tồn tại một văn phạm chính qui G sao choL=L(G)
4.3- Biểu Thức Chính Qui
Một cách để biểu diễn ngôn ngữ chính qui là thông qua khái niện biểu thức chính qui.Khái niệm về biểu thức chính qui bao gồm sự kết hợp các chuỗi kí hiệu của một bảng chữ các nào đó, các dấu ngoặc ( ) và các phép toán + , và * Ví dụ r=(a|b)*a
Định nghĩa
Cho là một bảng chữ cái Thì:
+ , và a tất cả đều là những biểu thức chính qui Những cái này được gọi là những biểu thức chính qui nguyên thủy.
+ Nếu r 1 và r 2 là những biểu thức chính qui, thì r 1 +r 2, r 1. r 2 , và(r 1 ) cũng vậy.
+ Mộät chuỗi là một biểu thức chính quy nếu và chỉ nếu nó có thể được dẫn xuất từ các biểu thức chính qui nguyên thủy bằng một số lần hữu hạn áp dụng các qui tắc trong (2).
Ngôn ngữ L(r) được biểu thị bỡi biểu thức chính qui bất kỳ và được định nghĩa bởi các qui tắcsau:
+ là một biểu thức chính qui biểu thị tập trống
+ là một biểu thức chính qui biểu thị tập {}
+ Đối với mọi a , a là biểu thức chính qui biểu thị cho ngôn ngữ {a}
Nếu r1 và r2 những biểu thức chính qui thì :
Ví dụ: Nếu trong L={anbn : n0}, chúng ta thay thế dấu ngoặc trái cho a và dấu ngoặc phải cho bthì chuỗi các dấu ngoặc chẳng hạn như (( )) và ((( ))) là thuộc L nhưng (( ) thì không mà trongmột ngôn ngữ lập trình thì thường xuyên gặp những cấu trúc lồng nhau như vậy Do đó ta thấymột vài thuộc tính của ngôn ngữ lập trình yêu cầu một cái gì đó bên ngoài ngôn ngữ chính qui, để
bao trùm nhữ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ảnh
Cá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ớilỏ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
Trang 7 Đị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 >x trong đó AV còn x (VT) *
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ềudạ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 trongmỗ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ất
Mộ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ánnhã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à :
+ 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 AV, và các con của nó được gán nhãn (từ trái sang phải) a 1 , a 2 a n thì P phải chứa một luật sinh có dạng
Trang 8+ 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 Greibach
Việ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ủangô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ẩnGreibach 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ẠM
1) 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.
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 Vn
Bướ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 Vn
Bướ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 m1 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áchthay 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 -> ABaC
A -> BC
Trang 9Bướ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 | 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 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ị.
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 choG
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 Atrong p^
Kết quả G^ sẽ tương đương với G mà P^ không chứa các luật sinh đơn vị
Trang 10Á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ị :
- 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 -> bb
S -> A <==> S -> a | bc
A -> B <==> A -> bb
B -> A <==> S -> a | bcVậy trong P^ :
S -> Aa | bb | a | bc
B -> bb | a | bc
A -> a | bc | bbKhông có luật sinh đơn vị nào
3) 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 | | A
A -> 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 đổithà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áinà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ônngữ và là một sự đơn giản hóa theo bất kỳ định nghĩa nào
S
Trang 11Bước 1 : Loại bỏ luật sinh vô dụng loại 1:
+ Khởi tạo V1={ }
+ Lặp lại các 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 > x1x2 xn với xi T* V1 thi thên A vào V1+ lấy P1 là tất cả các luật trong P mà có các kí hiệu thuộc (V T)*
Bước 2 : Để loại bỏ các luật sinh vô dụng loại 2 ta dựa vào văn phạm G1 (có tập luật sinh P1)
vừa có ở trên và vẽ đồ thị phụ thuộc cho nó, sau đó tìm các biến mà không đạt tới được từ S Loại
bỏ 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ả G^
II- CÁC DẠNG CHUẨN
1) DẠNG CHUẨN CHOMSKY
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 với 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
Bước 2: Đặt các luật sinh A >a vào trong P^
Bước 3: Đối với các luật sinh A >x1x2 xn với n 2, xi (VT) 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 gia A > C1C2 Cn
Bước 4: Ưùng với mỗi biến Ba đặt vào trong P ^ các luật sinh Ba >a
Bước 5: Sau khi thực hiện xong bước 3, ứng với mỗi luật sinh A > C1C2 Cn
mà n=2 thì đặt nó vào trong P^ 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 P các luật sinh sau:
Trang 12- Theo bước 1, ta đặt các luật sinh sau vào trong P^
S a,B b
- Theo bước 2, ta đưa ra các biến mới và thay thế các luật sinh còn lại trở thành như sau:
Đị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 Greibach.
Trang 13Bước 1: Loại bỏ các luật sinh:
Trong đó a T và xi (V T)*, còn Zi là các biến mới khi sử dụng khi loại bỏ đệ qui trái
Bước 4: sau khi thực hiện bước 3 tất cả các luật sinh của An phải có dạng
An -> axn
Thay thế An vào trong các xuất hiện của nó ở vị trí đầu tiên trên các vế phải của luật sinh An-1
bằng các vế phải của nó Dễ dàng thấy luật sinh An-1 có dạng
Bước 6: Thay thế các ký hiệu kết thúc, chẳng hạn a, nằm bên vế phải của các luật sinh mà không
ở vị trí đầu tiên bằng các biến đại diện, chẳng hạn Ba đồng thời thêm vào các luật sinh mới Ba ->a
Ví dụ:
Biến đổi văn phạm sau thành dạng chuẩn Greibach
S SBb |AbA Sb | BaB Sa | b
- Đầu tiên, ta áp dụng bước 1 đánh số thứ tự cho các biến, chẳng hạn theo thứ tự là S, A, B ta cóđược văn phạm sau :
- Xét tiếp các luật sinh của A1, ta thấy luật sinh A1 S0b là chưa thỏa mãn Thực hiện thay thế S0
Trang 14A1 A1bb | A1bZ1b | B2a
A1 B2a | B2aZ2 (3)
Z2 bb | bZ1b | bbZ2 | bZ1bZ2 (4)Đến đây tất cả các luật sinh của A1 đã thỏa mãn bước 2
- Xét tiếp các luật sinh của B2, ta thấy luật sinh B2 S0a là chưa thỏa mãn bước 2, thực hiệntương tự như trên, ta cĩ quá trình thực hiện như sau :
- Aùp dụng bước 4, thay thế S0, A1, B2 vào các luật sinh của Zi ta cĩ :
Z1 B2b | B2bZ1 (thay thế B2 từ (5) )
Z1 bb | bZ3b | bbZ1 | bZ3bZ1 (9)
Đến đây ta cĩ văn phạm “gần” cĩ dạng Greibach tương tương với văn phạm ban đầu như sau :
S0 bab | bZ3ab | baZ2b | bZ3aZ2b | babZ1 | bZ3abZ1 | baZ2bZ1 |
Trang 15S bXY | bZ3XY | bXZ2Y | bZ3XZ2Y | bXYZ1 | bZ3XYZ1 | bXZ2YZ1 |
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ệcphân tích cú pháp cũng như có điều kiện để so sánh ưu nhược điển của từng giải thuật, hơn nữa
nó giúp tìm ra những cách giải quyết thích hợp trong vấn đề phân tích cú pháp Sau đây chúng ta
sẽ đi vào tìm hiểu một số giải thuật và công cụ phân tích cú pháp thông dụng
II- CÁC GIẢI THUẬT
Trong phần này tập trung tìm hiểu các giải thuật phân tích cú pháp sau :
- Giải thuật phân tích cú pháp LL
- Giải thuật phân tích cú pháp LR
- Giải thuật Chart Parsing
1- Giải Thuật Phân Tích Cú Pháp LL
Giải thuật này là tiêu biểu cho phương pháp phân tích cú pháp từ trên xuống, giải thuật chỉ ápdụ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ệuchí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 16Gọ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ể là một luật sinh mà A là vế trái, hoặc trị của phần tử này là error Trong đó A là
ký hiệu không kết thúc, a là ký hiệu kết thúc hay ký hiệu đánh dấu kết thúc chuỗi nhập $
Khi bộ phân tích bắt đầu hoạt động, stack chỉ chứa ký hiệu đánh dấu stack rỗng $ ở đáy stack và
ký hiệu mục tiêu S trên đỉnh
Gọi X là ký hiệu trên đỉnh stack, a là ký hiệu trong chuỗi nhập được đọc hiện tại thi hành vi của
bộ phân tích hoạt động như sau:
Nếu X=a=$, nghĩa là stack rỗng và chuỗi nhập được duyệt hết, thì giải thuật kết thúc vàparser thông báo quá trình phân tích chuỗi nhập thành công
Nếu X=a và a khác $ thì bộ phân tích sẽ đẩy X ra khỏi stack, dịch đầu đọc
đến ký hiệu nhập kế tiếp
Nếu X là một ký hiệu không kết thúc, thì bộ phân tích sẽ xét phần tử M[X,a] trong bảng phântích M Trị của phần tử này có thể là một luật sinh mà X là vế trái hoặc trị của phần tử nàyerror nếu M[X,a] = luật sinh X > thì giải thuật sẽ đẩy X ra khỏi stack và thêm vào stacksao cho ký hiệu đầu tiên của nằm trên đỉnh stack Luật sinh X > được xuất ra như mộtphần của cây dẫn xuất mà bộ phân tích tìm thấy
Trường hợp M[X,a] là error thì bộ phân tích sẽ gọ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 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ảithuậ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ủabả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ănphạ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 , do đó 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
Bảng phân tích LL
Stack
Trang 17Giả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 động của giải thuật :
Hình 2 : Hoạt động của bộ phân tích LR
Bộ đệm nhập chứa chuỗi nhập cần phân tích với $ là ký hiệu đánh dấu kết thúc chuỗi nhập
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 và các trạng thái xuất hiện trong quá trình phân tích, nộidung của nó có dạng : s0X1 s1X2 s2 Xmsm với sm nằm trên đỉnh stack Xi được gọi là ký hiệuvăn phạm, si là trạng thái
Bảng Action-Goto của giải thuật phân tích cú pháp LR, nó có dạng là một ma trận với haiphần riêng biệt action và goto
Phần từ action[sm,a] có thể chứa một trong 4 giá trị sau :
+ Shift s, với s là trạng thái
+ Reduce , với là vế phải của luật sinh A >
Đầu tiên xây dựng bảng action - goto của văn phạm
Khi giải thuật bắt đầu hoạt động, stack chỉ chứa trạng thái s0, bộ đệm nhập chứa chuỗi w $ (với $nằm ở cuối bộ đệm) Gọi s là trạng thái trên đỉnh stack và a là ký hiệu nhập đang xét Hoạt độngcủa giải thuật tùy thuộc vào giá trị của action[s,a] như sau :
Nếu action[s,a] = shift si : Đẩy a vào stack, sau đó là si, chuyển ký hiệu kế tiếp trong chuỗinhập thành ký nhập sẽ xét
Nếu action[s,a] = reduce A , đặt | | là chiều dài của , đẩy 2*| | ký hiệu ra khỏi stack,đẩy A vào stack và sau đó đẩy trạng thái cho bỡi goto[si,A] vào trong stack Luật sinh A được xuất ra như một phần của cây dẫn xuất
Nếu action[s,a] =accept : Kết thúc giải thuật và quá trình phân tích chuỗi nhập đã thành công
Bảng Action - Goto Parser
Chuỗi nhập
Xuất kết quả Stack
Trang 18 Nếu action[s,a] = error : Bộ phân tích sẽ gọi một thủ tục xử lý lỗi thích hợp khi đó chuỗinhậ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ảnhnà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áchthức xây dựng bảng action - goto xin xem thêm trong (Compilers - trang 221)
Về hiệu quả của giải thuật phân tích cú pháp LR : dễ dàng thấy độ phức tạp của giải thuật tuyếntính theo kích thước chuỗi nhập
Thông thường khó xác định giải thuật phân tích cú pháp LL hay LR áp dụng được với lớp vănphạm lớn hơn, nhưng theo (Compilers-V Aho) thì lớp văn phạm có thể phân tích bằng giải thuật
LR chứa lớp văn phạm có thể phân tích bằng giải thuật LL
Ta cũng nhận xét tại một thời điểm trong quá trình phân tích thì giải thuật phân tích cú pháp LLchỉ làm việc với một luật sinh mà thôi, còn giải thuật phân tích cú pháp LR có thể làm việc vớinhiều luật sinh cùng một lúc Chính vì vậy mà giải thuật LR có khả năng phân tích tập văn phạmphức tạp hơn giải thuật LL
3- Giải Thuật Chart Pasing
Char pasing là một giải thuật phân tích cú pháp trên tập văn phạm phi ngữ cảnh tổng quát
Nó có tính chất rất đặc biệt : trung hòa giữa phương pháp phân tích từ trên xuống và phươngpháp từ dưới lên Điều đó có nghĩa là nó vừa có khả phân tích cú pháp từ trên xuống và vừa cókhả năng phân tích cú pháp từ dưới lên sau đây là mô tả hoạt động của giải thuật:
Gọi chiều dài của chuỗi nhập là n, ta xét việc xây dựng cây dẫn xuất cho chuỗi nhập trên một sơ
+ <start-vertex> : Một số tự nhiên chỉ ra đỉnh bắt đầu của cung
+ <end-vertex> : Một số tự nhiên chỉ ra đỉnh kết thúc của cung
+ <edge-vertex> : Đó là một luật có dấu chấm (dotted-rule) Luật có dấu chấm là luật sinhcủa văn phạm có thêm dấu chấm trong luật tại một vị trí nào đó Ví dụ :
A > XYZ
==> A >.XYZ
A >X.YZA >XY.ZA >XYZ
Ví dụ : (1,1, S > AB) là một cung bắt đầu từ đỉnh 1, kết thúc cũng đỉnh 1 và luật sinh có dấu
Trang 19 Quy tắc cơ bản (Fundamental rule)
Nếu sơ đồ chứa hai cung (i,j,A >w1.Bw2) và (j, k, B > w3.) trong đó A,B là các ký hiệukhông kết thúc , w1, w2, w3 là chuỗi các ký hiệu kết thúc và không kết thúc (cũng có thể làrỗng) thì ta thêm cung (i,k, A > w1B.w2) vào trong sơ đồ
Khởi tạo (Initialization)
Khởi tạo là quá trình tạo ra các cung mà luật sinh có dấu chấm dạng :
A > a
Trong đó A là ký hiệu không kết thúc còn a là ký hiệu kết thúc
Với mọi i > 0 , i n thì khi khỡi tạo ta phải tìm một cung có <start-vertex> =i-1,
<end-vertex>=i và luật sinh có dấu chấm là A > a với a là ký hiệu thứ i trong chuỗi nhập,ngược lại chắc chắn chuỗi nhập không phải là một câu hợp lệ của văn phạm đang xét
Qui tắc từ dưới lên cho chart parsing (bottom-up rule)
Nếu thêm cung (i,j,C > w1.) vào sơ đồ thì với mỗi luật sinh B > Cw2 ta phải thêm cung(i,i, B >.Cw2) vào sơ đồ
Qui tắc từ trên xuống cho chart parsing (top-down rule)
- Khi khỡi tạo : với mỗi luật sinh S > thêm cung (0,0,S >.) vào sơ đồ, trong đó S là
ký hiệu mục tiêu của văn phạm
- Nếu thêm cung (i,j, C > w1.Bw2) vào sơ đồ thì với mỗi luật sinh B > w, phải thêmcung (j,j, B > w) vào sơ đồ
Ví dụ: Minh họa cho qui tắc khỡi tạo của giải thuật chart parsing, chúng ta xét văn phạm sau :
Trang 202- Mô Tả Bộ Phân Tích Cú Pháp Yacc
Dưới đây là sơ đồ mô tả quá trình xây dựng bộ phân tích cú pháp từ file đặc tả Yacc :
Tập tin nhập cho Yacc là translate.y là sự đặc tả văn phạm trong ngôn ngữ Yacc Sau khi chúng
ta tạo ra tập tin translate.y, chúng ta sẽ dùng Yacc compiler để chuyển file translate.y sang tập tiny.tab.c (đây là tập tin với mã nguồn là ngôn ngữ C) Đây chính là bộ phân tích cú pháp cùng vớimột số hàm mà người sử dụng định nghĩa trong tập tin đặc tả
Sau khi có tập tin y.tab.c sẽ được biên dịch để tạo ra file thực thi a.out
3- Cấu Trúc File Đặc Tả Yacc
File đặc tả có dạng tổng quát như sau :
Trang 21+ Khai báo dạng C được bọc giữa hai ký hiệu %{ và %} Các khai báo trong phần nàyđược đưa nguyên vào trong paser được sinh ra.
+ Các khai báo của Yacc dùng để khai báo các token được sử dụng trong file văn phạmhoặc khai báo độ ưu tiên, kết hợp trái, phải của các token
Phần các luật sinh : Mỗi luật sinh trong Yacc là một luật sinh kết hợp với các hành động ngữnghĩa Các hành động ngữ nghĩa phải để ở cuối luật, mỗi luật sinh của Yacc có dạng tổng quátnhư sau :
<LHS> : <alt 1> {semantic action 1}
| <alt 2> {semantic action 2}
………
| <alt n> {semantic action n}
Mỗi hành động ngữ nghĩa là các phát biểu C Hành động ngữ nghĩa của luật sẽ được thực thikhi tác vụ reduce được thực hiện trên luật đó Do Yacc xây dựng bộ phân tích cú pháp theovăn phạm LR(1) nên các hành động ngữ nghĩa phải để cuối luật sinh
Phần C-routine codes : Phần này bao gồm các đoạn mã chương trình C mà chúng ta có thểkhai báo các đoạn chương trình con để xây dựng bộ xử lý lỗi, bộ phân tích từ vựng (Yackhông xây dựng bộ phân tích từ vựng) hay các đoạn chương trình mà chúng ta có thể sử dụngtrong các hành động ngữ nghĩa
4- Sử Dụng Yacc Với Các Văn Phạm Không Tường Minh
Đối với văn phạm không tường minh thì bộ phân tích sẽ tạo ra bảng phân tích với các ô cónhiều giá trị (multiple entry) Do đó trong quá trình phân tích sẽ có sư đụng độ Yacc sẽ báo cáocác đụng độ này khi nó sảy ra Ngoài ra, Yacc còn có khả năng giải quyết một số đụng độ bằngcách sử dụng hai qui tắc sau :
+ Đụng độ do một phần tử trong bảng có 2 giá trị là reduce (reduce /reduce) được giảiquyết bằng cách thực hiện tác vụ reduce trên luật sinh được liệt kê trước trong file đặc
tả văn phạm
+ Đụng độ do một phần tử trong bảng có hai giá trị, một là reduce và một là shift đượcgiải quyết bằng cách hực thi tác vụ shift Quy tắc này xử lý tốt trong trường hợp khôngtường minh trong cấu trúc if -then -else / if then :
if_stmt :
IF expr THEN stmt
| IF expr THEN stmt ELSE stmt
Vì các qui tắc trên có thể không phải luôn luôn là điều mà người sử dụng mong muốn,cho nên Yacc cung cấp một cơ chế tổng quát để giải quyết đụng độ shift/reduce bằng cáchcho phép người sử dụng có thể gán độ ưu tiên và kết hợp trái/phải hoặc không có kết hợptrong phần khai báo
4- Khắc Vụ Lỗi Trong Yacc
Khắc phục lỗi trong Yacc có thể được thực hiện bằng cách sử dụng các luật sinh khắcphục lỗi Trước tiên, người sử dụng phải chọn những ký hiệu không kết thúc chính yếu (majornonterminal) nào sẽ có thủ tục khắc phục lỗi kèm theo Sau đó người sử dụng phải thêm vào văn
phạm các luật sinh khắc phục lỗi, các luật sinh này có dạng A error với A là ký hiệu không kết thúc chính yếu, error là một token được hỗ trợ sẵn trong Yacc và là chuỗi các ký hiệu văn
phạm Yacc sẽ sinh ra bộ phân tích cú pháp dưới dạng đặc tả như vậy và xử lý các luật sinh trênnhư các luật sinh thông thường
Trang 22CHƯƠNG 4
GIẢI THUẬT PHÂN TÍCH CÚ PHÁP EARLEY VÀ CYK
I- GIẢI THUẬT PHÂN TÍCH CÚ PHÁP EARLEY
Trang 23ký hiệu nhập, giải thuật này hiệu quả hơn giải thuật CYK và chúng ta cũng không đưa văn phạm
về một dạng chuẩn nào như giải thuật CYK
1.2 Mô Tả Sơ Lượt Giải Thuật Earley
Ý tưởng cơ bản của giải thuật như sau :
Cho G=(N,, P,S) là một văn phạm phi ngữ cảnh
w=a1a2 … an là một chuổi nhập trên *
Một thực thể của văn phạm G là luật sinh của G có dạng :
[A , i] là ở trong Ij (0 i j) nếu và chỉ nếu tồn tại và sao cho chúng ta
có S =*> A và =*> a1…ai và =*> ai+1 … aj Ý nghĩa của thực thể trên là : chúng
ta đã nhìn thấy chuỗi nhập dẫn xuất từ đến vị trí j và đang chờ chuổi tiếp theo đượcdẫn xuất từ
Nếu A thì thực thể của nó là [A ,i]
Sau khi hình thành danh sách I0, I1, … In cho chuổi nhập w, chúng ta kết luận w là một chuỗithuộc ngôn ngữ L(G) nếu và chỉ nếu trong In có chứa ít nhất một thực thể có dạng [S ,0]
1.3 Giải Thuật Phân Tích Cú Pháp Của Earley
Nhập :Văn phạm phi ngữ cảnh G=(N,,P,S) và chuổi nhập w= a1a2 … an thuộc *
Xuất : Danh sách các tập thực thể : I0, I1, … In
Giải Thuật :
Đầu tiên chúng ta xây dựng tập I0 như sau :
(1) Nếu S là một luật sinh trong P thì ta cho [S. , 0] vào trong I0, sau đó thực hiệnbước (2) và (3) cho đến khi nào không thể thêm tập thực thể mới vào trong I0 được nữa
(2) Nếu [B , 0] thuộc I0 (chú ý : có thể là ) thì cho vào I0 [A B , 0] cho tất cảcác thực thể có dạng [A B , 0] có trong I0
(3) Nếu [A B ,0] là một thực thể trong I0 thì ta cho vào I0 tất cả các luật sinh trong P
có dạng B các thực thể [B ,0]
Xây giờ chúng ta xây dựng Ij sau khi đã có I0, I1,… Ij-1
(4) Với mỗi thực thể trong Ij-1 có dạng [B a ,i] (với a=aj) cho tập thực thể [B a
,i] vào trong Ij
Thực hiện bước (5) và (6) sau cho đến khi không còn tập thực thể mới được thêm vào :
(5) Nếu [A , i] là một thực thể trong Ij, kiểm tra xem trong tập Ii các thực thể có dạng[B A , k] với mỗi tập thực thể tìm được như vậy ta cho vào Ij [B A , k]
(6) Nếu [A B, i] là một thực thể trong Ij, tìm trong P tất cả các luật sinh có dạng B tathêm [B , j] vào Ij
Kết thúc giải thuật khi j=n
Trang 24Như vậy : Từ ý tưởng của giải thuật trên để dễ nhớ và dễ trình bày về sau ta có thể đặt tên cho
từng tác vụ trong giải thuậtï như sau :
(4) : Scan.
(5) : Complete.
(6) : Predict.
Và có thể mô tả sơ lượt giải thuật như sau, sau khi đã tạo được tập I 0 :
Giải thuật Earley chỉ dựa vào các thực thể trong tập trạng thái để quyết định tác vụ nào trong ba tác vụ nói trên sẽ thực hiện.
Nếu trạng thái là trạng thái không kết thúc và ký hiệu sau dấu chấm là ký hiệu không kết thúc thì ta thực hiện tác vụ predict trên trạng thái đó bằng cách :
+ Tìm trên tập văn phạm P các luật sinh có ký hiệu vế trái trùng với kí hiệu nằm bên phải dấu chấm của luật có dấu chấm đang xét sau đó thực hiện :
+ Thêm vào các thực thể mới vào cuối trạng thái I i , mỗi trạng thái mới gồm có :
- Luật sinh mà ta mới tìm được với dấu chấm nằm ở vị trí bắt đầu bên phải của luật sinh
- Con trỏ (pointer) được đặt hàng i (trạng thái mới này sẽ không được thêm vào tập trạng thái nếu nó đã có trong tập trạng thái)
Nếu trạng thái là trạng thái không kết thúc, ký hiệu nằm sau dấu chấm là ký hiệu kết thúc trùng với ký hiệu nhập đang xét thì ta thực hiện tác vụ Scan;
+ Scan đưa vào tập trạng thái I i+1 một trạng thái giống với trạng thái cũ nhưng dấu chấm trong luật tương ứng dịch qua phải một ký hiệu
Nếu trạng thái là trạng thái kết thúc và chuỗi ký hiệu nhìn trước trùng với k ký hiệu nhập bắt đầu từ vị trí i trong chuỗi nhập thì ta thực hiện tác vụ Complete:
+ Complete là tìm trong tập trạng thái I f (với f là pointer của thực thể đang xét ) các thực thể có ký hiệu nằm bên phải của dấu chấm trùng với ký hiệu vế trái của thực thể có dấu chấm đang xét, thêm các thực thể mới tìm được vào cuối trạng thái I i với dấu chấm dịch qua phải một ký hiệu.
Ví dụ : Cho một văn phạm G với các luật sinh :
Đầu tiên chúng ta xây dựng tập thực thể I0 : Cho vào I0 các thực thể
Trang 25- Xét (02) áp dụng luật (3) của giải thuật ta cũng có được hai thực thể (03) và (04) nhưng hai thựcthể này đã tồn tại trong I0 rồi nên ta không thêm vào.
- Xéùt (03) áp dụng luật (3) của giải thuật ta thêm vào I0 các thực thể :
[F (E) , 0] (05)
[F a , 0] (06)
- Xét (04) áp dụng luật (3) của giải thuật ta cũng có được hai thực thể (05) và (06) nhưng hai thựcthể này đã tồn tại trong I0 rồi nên ta không thêm vào Và bây giờ không có thực thể nào đượcthêm vào I0 nữa
I0
[E T+E , 0] (01)[E T, 0] (02)[T F*T, 0] (03)
[T F , 0 ] (04)[F (E) , 0] (05)
Bây giờ không còn tập luật sinh nào được thêm vào I2 nữa
Tương tự ta tính các thực thể I3, I4, I7 ta được kết quả :
Trang 26I3 I4 I5
I6 I7
1.4 Xây Dựng Chuỗi Dẫn Xuất Cho Chuỗi Nhập
Sau khi xây dựng được các tập thực thể I0, I1, In và có thể xác định chắc chắn là chuỗinhập có thuộc ngôn ngữ L(G) hay không Tuy nhiên, giải thuật trên không đưa ra được chuỗi dẫnxuất cho chuỗi nhập
Để đưa ra được chuỗi dẫn xuất cho chuỗi nhập ta sử dụng giải thuật sau:
(b) If Xk N Then tìm một thực thể [Xk , r] thuộc Ij mà trong Ir có
thực thể [A X1X2 Xk-1 .Xk Xm , i] thì thực thi R([Xk , r],l ) sau đó k=k-1
Trang 27- Lấy văn phạm ở phần 1.3 và các tập thực thể ở trên, chúng ta hãy đưa ra cây dẫn xuất cho chuổinhập (a+a)*a sử dụng giải thuật trên.
Thực thi R([E T , 0],7) => ={2 } (2 chính là số thứ tự luật sinh E T)
Đặt k=1 và l=7 và thực hiện bước (3b) của giải thuật trên (do T N ) và ta tìm được [T F *
T , 0] trên I7 và [E T] trên I0 và do đó ta thực thi R([T F *T , 0], 7) kết quả là luật sinh thứ
3 được đưa vào trong => ={32}, sau khi gọi R trên ta có k=3 và l=7
Với k=3, ta tìm ra được [T F.] trên I0 và [T F * T] trên I6 và do đó ta gọi R([T
F ,6],7] và cho 4 vào tập ={432} và đặt k=2 và l=6
Tại bước (3a) ta gặp * do đó giản k và l đi 1 k=1 và l=5 Tìm thấy [F(E).,0] trên I5 và[T F *T, 0] trên I0 do đó gọi R([F (E) , 0],5] và thêm 6 vào , khi đó ={6432}
Tiếp tục việc phân tích như trên ta tìm được ={64642156432}
1.5 - Sự liên quan giữa giải thuật Earley và Chart Parsing
Giải thuật Chart Parsing là một dạng tổng quát của giải thuật Earley, sau đây là một số đặc điểmchỉ rõ sự tương quan này :
Mỗi trạng thái trong giải thuật Earley tương ứng với một cung trong Chart Parsing Trạng tháikết thúc tương ứng với cung chết và trạng thái không kết thúc tương ứng với cung sống
Mỗi tập trạng thái tương ứng với một nút trong Chart Parsing
Tác vụ predict trong giải thuật Earley tương ứng với qui tắc từ trên xuống trong giải thuậtChart Parsing
Tác vụ Scan trong Earley tương ứng với quá trình khỡi tạo trong Chart Parsing
Tác vụ Complete trong Earley tương ứng với các qui tắc cơ bản trong Chart Parsing
E
a +
( T F a
a F T E
)
F E
R([E T ,3],4) R([E T+E , 1],4)
R([T F*T , 0],7)
Trang 281.6 - Độ Phức Tạp Thời Gian Và Độ Phức Tạp Không Gian
1.6.1- Độ Phức Tạp Thời Gian Theo Chiều Dài Chuỗi Nhập
(c) Trong trường hợp xấu nhất, tác vụ complete thực thi i bước cho mỗi trạng thái nó xử lýbỡi vì nó phải thêm f trạng thái tới If, tập trạng thái được trỏ trở lại khi thực hiện tác vụcomplete Do đó mất i2 bước trong Ii
(d) Tính tổng I = 0, , n+1 của i2 ta được n3
Vậy độ phức tạp của giải thuậy Earley theo chiều dài chuỗi nhập là O(n3)
Độ phức tạp này không tốt hơn giải thuật CYK nhưng Earley vẫn tốt hơn vì hai lý do :
+ Giải thuật Earley không yêu cầu nhập một văn phạm đặc biệt mà là một văn phạm phingữ cảnh tổng quát, trong khi giải thuật CYK lại yêu cầu giải thuật phải đưa về dạngchuẩn Chomsky
+ Giải thuật của Earley thực sự chạy tốt hơn O(n3) trong hầu hết các lớp văn phạm (giảithuật CYK luôn có độ phức tạp O(n3)
Hơn nữa giải thuật CYK có độ phức tạp thời gian O(n3) trên máy Turing, và nó không thể có kếtquả tốt hơn O(n3) khi chạy trên máy RAM (Random Access Machine)
1.6.2 Độ Phức Tạp Theo Kích Thước Văn Phạm
Số ký hiệu tối đa của vế phải của một luật sinh bất kỳ là m (có nghĩa là chiều dài vế phải
là hữu hạn) Gọi n là số luật sinh của văn phạm, giả sửû chiều dài chuỗi nhập là hữu hạn
Như vậy, số trạng thái tối đa trong một trạng thái là m x n Do m hữu hạn nên số trạng thái trongmột tập trạng thái phải ~ n
Khi thực hiện 3 tác vụ predict, sacn và complete trên một trạng thái bất kỳ thì :
Predict : sẽ sinh ra tối đa n trạng thái, do đó số trạng thái tỉ lệ với n (~n)
Scan : sẽ sinh ra một số trạng thái hữu hạn
Complete : sẽ sinh ra tối đa n trạng thái (~n)
Với một trạng thái bất kỳ thì số trạng thái được sinh ra khi thực hiện một trong 3 tác vụ là ~n Do
đó trên một tập trạng thái thì số trạng thái được sinh ra khi thực hiện cả 3 tác vụ là ~n2
Do chiều dài chuỗi nhập là hữu hạn nên khi phân tích chuỗi nhập thì số trạng sinh ra cũng ~ n2.Vậy : Độ phức tạp của giải thuật Earley theo kích thước văn phạm là O(n2)
1.6.3- Độ Phức Tạp Theo Không Gian (Theo Chiều Dài Chuỗi Nhập)
Số tập trạng thái tối đa trong giải thuật Earley là n, mà mỗi tập trạng thái lại có số trạngthái tỉ lệ với n (n) Do đó trong trường hợp tổng quát, độ phức tạp của giải thuật Earley làO(n2)
Trang 29Giải thuật CKY cũng có độ phức tạp không gian là O(n2), tuy nhiên ưu điểm của giảithuật Earley so với giải thuật CYK là : n2 là cận trên trong giải thuật Earley trong khi giải thuậtCYK lại luôn luôn có độ phức tạp là O(n2).
1.7 - Các Kết Quả Thực Nghiệm (Theo Jay Earley -University California)
Sau đây là các đánh giá của giải thuật Earley với các giải thuật phân tích cú pháp từ trên
xuống (TD) và từ dưới lên (BU) (Đối với giải thuật CYK xin xem phần 5- So sánh độ phức tạp giữa 2 giải thuật Earley và CYK) Các so sánh dưới đây không phải là so sánh về thời gian chạy
thật sự mà dưới dạng các tác vụ cơ bản (primitive operation)
Với TD và BU thì các tác vụ cơ bản là một lần áp dụng luật sinh
Với Earley một tác vụ cơ bản là một hành động tạo ra một trạng thái
Các tác vụ cơ bản trên các giải thuật này điều không phụ thuộc vào kích thước văn phạm và chiềudài chuổi nhập
A a | AbB bc | bB | Bd
+ TD : Top Down
+ STD : Selective Top Down
+ BU : Bottom Up
+ SBU : Selective Bottom Up
Nhận xét : Do SBU có độ phức tạp thời gian tốt hơn TD, STD, BU nên ta chỉ so sánh Earley với
SBU
Các văn phạm G1,G2,G3 : cả hai có độ phức tạp là như nhau
Nhưng đối với văn phạm không tường minh G4, rõ ràng là SBU có độ phức tạp thờigian là O(n3) trong khi độ phức tạp của giải thuật Ealey là O(n)
Trang 30Sau đây là 3 văn phạm chỉ dùng dữ liệu thô (raw data), trong đó giải thuật PA là một giải thuậtphân tích cú pháp từ trên xuống đoán nhận trước có sữa đổi.
PROPOSITIONAL CALCULUS GRAMMARroot : F C | S | P |U
C UUU (F) | ~U | LL L’ | p | q | rL’ p’ | q’ | r’
S U S | U UP U S | U U
Trang 31(ed)7eabb 18 24352 16336 194
GRAMMAR NSEroot :SAB
A a | SCB b | DBC cD d
Với văn phạm GRE, độ phức tạp của cả 3 giải thuật sẽ là O(n) nếu chuỗi nhập là chuỗi các kýhiệu ‘b’ Tuy nhiên, khi chuỗi nhập là một chuỗi các ký hiệu “ed” thì giải thuật PA và SBU sẽ có
độ phức tạp tăng theo qui luật hàm số mũ, trong khi giải thuật Earley có độ phức tạp là O(n2) Vớivăn phạm NSE thì cả 3 giải thuật đều cho độ phức tạp thời gian là O(n) với hệ số như nhau.Vậy : Qua các kết quả thực nghiệm trên ta thấy giải thuật Earley có độ phức tạp thời gian bằnghoặ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ểudiễ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ảithuật Earley có thể mang lại những kết quả to lớn trong các ứng dụng cũng như về lý thuyết (ví
dụ : có thể ứng dụng Earley trong việc nhận dạng ngôn ngữ tự nhiên, )
Độ phức tạp thời gian theo kích thước văn phạm của giải thuật là O(n2), độ phức tạp thờigian theo chiều dài câu nhập là O(n3), trong một số lớp văn phạm nó có độ phức tạp theo chiềudài câu nhập là O(n2) hoặc O(n)
II- GIẢI THUẬT PHÂN TÍCH CÚ PHÁP CYK
2.1- Giới Thiệu
Trang 32Đây là một giải thuật phân tích cú pháp trên văn phạm phi ngữ cảnh tổng quát Giải thuậtmang tên của 3 người tìm ra nó, đó là J Cocke, D H Younger và T Kasami (theo Peter Linz1990).
Giải thuật chỉ làm việc trên văn phạm phi ngữ cảnh ở dạng chuẩn Chomsky và khi thực hiện việcphân tích cú pháp sẽ cho cây dẫn xuất trái nhất Ý tưởng chính của giải thuật như sau :
Giả sử có một văn phạm phi ngữ cảnh ở G=(N,, P,S) dạng chuẩn Chomsky và một chuỗinhập w= a1a2 … an
Giải thuật CYK sẽ đi xây dựng một bảng phân tích cú pháp T (có hình một tam giác) , mỗiphần tử tij 1 i n và 1 j n-i+1 có các giá trị là một tập con của N
Một kí hiệu không kết thúc A tij nếu và chỉ nếu A =*> aiai+1 … ai+j-1
Chuỗi nhập w thuộc ngôn ngữ L(G) nếu S t1n
2.2- Giải Thuật Phân Tích Cú Pháp CYK
Nhập : Văn phạm phi ngữ cảnh G=(N,, P, S) ở dạng chuẩn Chomsky và chuỗi nhập w= a1a2 …
an thuộc *
Xuất : Bảng phân tích cú pháp T cho chuỗi w
Giải thuật :
(1) Tính ti1 = {A | A ai là ở trong P}
(2) Tính tij (phải đảm bảo là tij’ phải được tính trước với i (1 i n), và i (1 j’ < j) Khi
đó tập tij được tính như sau :
tij= { A | A BC thuộc P mà B tik và C ti+k, j-k}
(do k và j-k đều nhỏ hơn j do đó tik và ti+k, j-k đã được tính trước khi tính tij)
(3) Lập lại bước (2) cho đến khi tính tij với (1 i n), và (1 j n- i +1)
Ví dụ 1: Cho văn phạm :
S AA | AS | bA SA | AS | aChuỗi nhập : w = abaab
Bước 1 : Tính t11 ={A} vì A a P và a1=a
Trang 332.3- Xây dựng dẫn xuất 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
+ 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ănphạ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 trong tập T1n có ký hiệu khởi đầu hay không, nếu không có thông báo “chuỗi nhập
không thuộc văn phạm”, ngược lại : Chúng ta thực hiện gọi đệ qui liên tục hàm gen(i,j,A) để tạo
ra tập luật sinh tham gia vào chuỗi dẫn xuất, hàm gen(i,j,A) dược định nghĩa như sau :
(1) Nếu j=1 và A > ai là luật sinh thứ m trong P thì xuất ra luật sinh thứ m
(2) Nếu j>1 và k là một số nguyên trong khoảng 1 k < j và tìm được B trong Tik và C trong
Ti+k, j-k, và A > BC là luật sinh thứ m trong P thì xuất ra luật sinh thứ m v2 khi đó thực thi
gen(i,k,B) sau đó là gen(i+k,j-k,C).
+ Ghi chú : Ở đây có thể có nhiều sự lựa chọn B,C vì 1 k < j, do đó nếu k nào thõa (2) thì ta tạo
ra lưu một dẫn xuất khác của câu nhập
+ Kết quả một câu nhập có thể có một hoặc nhiều dẫn xuất trái nhất
+ gen(1,1,A) cho luật sinh thứ 6
+ Do S T21 và A T33, A > SA là luật sinh thứ 4 trong P => gen(2,4,A) xuất ra luật sinh thứ 4
và thực thi gen(2,1,S) và gen(3,3,A)
+ Tiếp tục thực thi theo giải thuật ở mục 3 ta tập các luật sinh tham gia vào quá trình dẫn xuất là{1,6,4,3,5,6,2,6,3}
2.4- Độ Phức Tạp Thời Gian Của Giải Thuật CYK
Giải thuật CYK ở phần 2.2 có độ phức tạp thời gian là O(n3) khi thực hiện việc tính toáncác phần tử tij cho bảng phân tích T
Thật vậy, để tính toán ti1 ta phải thêm vào tập ti1 {A | A ai là ở trong P} quá trình này thực hiệncho i=1 cho đến i=n cho nên toàn bộ số bước tính toán cơ bản trong bước này ~O(n)
-Kế đến ta phải thực hiện các bước sau để tính tij :
Trang 34Ta nhận thấy thủ tục line(j) thực hiện mất 2n-2 bước tính toán, do đó tổng các phép tính khi thựchiện vòng lặp (1) (2) (3) là :
Thủ tục line(j) được định nghĩa như sau :
(6) Nếu k=j thì thực hiện bước (7), ngược lại thì thực hiện bước (3)
(7) Nếu i=j’ thì kết thúc, ngược lại thực hiện bước (8)
(8) Tăng I lên 1 và thực hiện lại bước (2)
Với thủ tục line(j) trên ta nhận thấy :
Vòng lặp bên trong (3)-(6) thực thi j-1 lần
Vòng lặp bên ngoài (2)-(8) thực thi n-j+1 lần
Do j n nên độ phức tạp của line(j) = O(n2)
Vậy : Độ phức tạp của giải thuật CYK là 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(n3).Tuy nhiên, trongmộ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ợithế của Earley vì hầu như mọi văn phạm định nghĩa trong thực thế điều không ở dạng chuẩn
- Trong khi đó tập văn phạm của giải thuật CYK phải đưa về dạng chuẩn Chomsky và độ phứctạp của CYK theo chiều dài chuỗi nhập với mọi tập văn phạm luôn luôn là O(n3)
Trang 35Muốn thực hiện tốt một phần mềm hỗ trợ việc học và giảng dạy, chúng ta cần tìm hiểu thêmnhững yêu cầu về phần mềm này và các dạng thể của nó.
3.2- PHẦN MỀM GIẢNG DẠY (COURSEWARE)
a) Phần Mềm Dạy Học
Phần mền dạy học là một môi trường giúp đỡ việc dạy và học, bao gồm các cấu hìnhgiảng dạy và những hệ thống quản lý việc học, mức độ giảng dạy được xếp sếp theo thứ tự từ dễđến khó và có thể cho phép người sử dụng lựa chọn mức độ phức tạp để phù hợp với trình độngười học Để thiết kế tốt một phần mền hỗ trợ việc giảng dạy người ta thường dựa vào lý thuyếtgiảng dạy
Lý thuyết giảng dạy : nguyên cứu 3 vấn đề
+ Điều kiện giảng dạy : Mô tả chỗ làm việc, đặc điểm người học như : trình độ, những kiến thứccần phải trang bị trước
+ Kết quả giảng dạy : Kết quả thu được qua quá trình giảng dạy đưa ra mức độ tiếp thu của ngườihọc
+ Phương pháp giảng dạy: Là những phương tiện dùng để tác động lên điều kiện giảng dạy để tạo
ra kết quả mong muốn
Dựa vào lý thuyết giảng dạy, người ta đưa ra các mô hình giảng dạy và những phươngpháp giảng dạy thích hợp với điều kiện đã cho nhằm tạo ra kết quả giảng dạy mong muốn
Để có thể thiết kế và phát triển một phần mềm giảng dạy tốt, mang lại những kết quả khảquan cho người học cần phải có sự tham gia và cố vấn của các chuyên gia liên quan đến môn họccần thiết kế :
+ Chuyên gia thiết kế am hiểu về lĩnh vực phần mềm giảng dạy
+ Chuyên gia trong lĩnh vực giảng dạy
+ Đội ngũ lập trình
Muốn thiết kế một phần mềm giảng dạy cần phải trải qua 3 bước sau:
Phân Tích :
+ Xác định những điều kiện giảng dạy
+ Quyết định sơ bộ phương pháp giảng dạy, việc đưa ra một phương pháp giảng dạy tốt phù hợpvới điều kiện giảng dạy sẽ mang lại kết quả rất khả quang cho người học
Trang 36 Phát Triển Và Tổng Hợp
+ Hoàn tất phương pháp giảng dạy bằng cách đưa ra các tài liệu và trình tự giảng dạy Trong giaiđoạn cần phải thực hiện tốt cách thức trình bày các tài liệu và thứ tự xếp sếp các bài giảng mộtcách hợp lý
Đánh Giá Cuối Cùng
+ Xem xét lại lại phương pháp, điều kiện , kết quả có phù hợp nhau không và sữa
đổi cho phù hợp
b) Các Phần Mềm Giảng Dạy Hiện Tại
Trợ Lý Giảng Dạy (Tutorial)
+ Nó có ích lợi sau khi người học đã nghe qua bài giảng một lần
+ Thích hợp với những người thích tập trung vào một số phần quan trọng trong giáo trình
+ Nó có thể giúp cho người học có thể tự học mà không cần nghe bài giảng
Thực Hành Và Luyện Tập (Drill And Pratice Software)
+ Loại này được dùng ở nghững môn có khối lượng bài tập và công việc luyện
3.3 -COMPOMENT DISPLAY THEORY - LÝ THUYẾT CỦA SỰ TRÌNH BÀY
Khi thiết kế các phương pháp giảng dạy cho một vấn đề nào đó người ta thường áp lý thuyếtCompoment Display Theory(CDT) cho việc trình bày các đối tượng giảng dạy dưới dạng cácluật CDT
CDT giả thiết rằng tất cả những dạng trình bày giảng dạy bao gồm một chuỗi những dạng thểhiện cơ bản Bốn dạng thể hiện cơ bản là :
+ Dạng mô tả tổng quát
+ Dạng mô tả các biệt
+ Dạng kiểm tra tổng quát
+ Dạng kiểm tra cá biệt
Trong đó :
Dạng tổng quát là : Định nghĩa, định lý, nguyên lý, hoặc các bước của một thủ tục
Dạng các biệt là sự minh họa rõ ràng một đối tượng, một ký hiệu một sự kiện, một quá trìnhhoặc một thủ tục
Khi dự định trình bày một vấn đề nào đó nếu người thiết kế trình bày vấn đề dưới nhữngdạng thể hiện cần thiết thì hiệu quả học tập sẽ được nâng lên, ngược lại vệc trình bày không thíchhợp làm cho hiệu quả học tập sẽ giảm xuống
Ngoài những dạng thể cơ bản còn có những dạng thể hiện phụ Đó là những thông tinthêm vào những thể hiện chính để tăng chất lượng của việc học tập Một sự trình bày dạng cácvấn đề sẽ trở nên chất lượng và đầy đủ hơn nếu thêm vào các thể hiện phụ thích hợp
Trang 373.4- GIẢNG DẠY QUA MÔ HÌNH
Việc thiết kế các mô hình phục vụ cho việc học tập thông qua máy tính hiện nay được thếgiới áp dụng rỗng rãi, với các ưu điểm của nó là người học không cần học qua mô hình thật (mắctiền và nguy hiểm) mà thông thông qua mô hình hóa trên máy tính
Một mô hình giảng dạy có thể hiểu như là một đơn vị nhỏ nhằm đáp ứng các yêu cầu giảng dạycủa một chương trình Mô hình giảng dạy là một mô hình được xây dựng nhằm để minh họa hoặcgiải thích rõ thêm một vấn đề lý thuyết của môn học
Một mô hình giảng dạy cần có những yêu cầu sau:
Dữ liệu của mô hình :
Đây chính là kiến thức của môn học được mô hình hóa thành dữ liệu của máy tính Dữ liệu của
mô hình có thể chia thành 3 lớp cơ bản :
+ Dữ liệu nhập : Dữ liệu đầu vào của mô hình
+ Dữ liệu xuất : Dữ liệu xuất ra của mô hình
+ Dữ liệu cục bộ : Dữ liệu liệu trung gian, đáp ứng các nhu cầu hoạt động, lưu trữ của môhình
Người sử dụng chỉ có thể giao tiếp với mô hình thông qua dữ liệu nhập và dữ liệu xuất.Các yêu cầu học tập của người sử dụng được chuyển đổi thành dữ liệu nhập, qua một số bướctính toán, phân tích mô hình sẽ đưa ra các dữ liệu xuất để giải thích hoặc đáp ứng các yêu cầu củangười sử dụng Dữ liệu cục bộ của mô hình có thể được trình bày hoặc che dấu tùy mục đích của
mô hình
Hoạt động của mô hình
Các hoạt động của mô hình có thể chia làm hai loại chính như sau :
+ Hoạt động nhập xuất : Đây là các hoạt động thể hiện sự giao tiếp của mô hình của người sửdụng Các phương thức nhập/xuất đảm nhận việc nhận các dữ liệu nhập của mô hình và thể hiệncác dữ liệu xuất ra các thiết bị ngoại vi (màn hình, máy in,…) để giảng dạy cho người sử dụng.+ Hoạt động xử lý, tính toán dữ liệu : Các hoạt động xử lý các dữ liệu cục bộ của mô hình phục
vụ cho yêu cầu dạy và học Các phương thức này đảm nhận việc chuyển đổi dữ liệu nhập thànhcác dữ liệu cục bộ của mô hình Mô hình sẽ tính toán, xử lý trên dữ liệu cục bộ và chuyển thànhcác dữ liệu xuất
3.5 - VÍ DỤ VỀ MỘT PHẦN MỀM TRỢ GIÚP HỌC TẬP
Ví dụ đưa ra ở đây là phần mềm trợ giúp học tập môn Anh Văn LANGMaster INTERACTIVE
ENGLISH Trong phần mềm chứa đựng được tất cả các đặc tính của một phần mềm giảng dạyhiện đại:
- Những bài học được xếp từ dễ đến khó, tuy nhiên vẫn cho phép người sử dụng lựa chọn nhữngphần mà mình quan tâm mà không cần học những phần trước
- Đưa ra những hình thức thực hành và luyện tập phong phú như : điền vào chỗ trống, chọn từđúng, tập phát âm
- Báo cáo lại mức độ tiếp thu của người học qua từng bài giảng, để người học nhận biết đượctrình độ từ đó cũng cố kiến thức cho những bài học tiếp theo
- Đặc biệt phần mềm LANGMaster INTERACTIVE ENGLISH đã đưa ra một phương pháp giải
dạy hiện đại, đó là phương pháp học từ và thành ngữ RE-WISE:
Trang 38+ Phương pháp RE_WISE được thiết kế với sự tham gia của các chuyên gia về việc học
và về mô hình toán học của việc học /quên trong nhiều năm từ đó đưa ra một thống kê quá trìnhhọc và quên các sự kiện đã được thu nhận
Qua ví dụ trên cho thấy được các tính chất của một phần mềm giảng dạy hiện tại cũngnhư một phương pháp giảng dạy tốt được đưa ra sẽ giúp ích rất nhiều trong việc học
3.6- PHÂN TÍCH ĐIỀU KIỆN DẠY VÀ HỌC HIỆN TẠI và LOẠI PHẦN MỀM GIẢNG DẠY CẦN THIẾT KẾ
Trên cơ sở thiết kế một phần mền giảng dạy cho các đối tượng là những sinh viên theo
học ngành Máy Tính Chuơng trình “Xây dựng bộ công cụ thực hiện một số giải thuật trong Lý thuyết Ngôn ngữ Hình thức & Automata”, cố gắng đưa những nội dung cơ bản của mô học nhằm
góp phần giúp cho sinh viên nắm bắt được các cơ sở lý thuyết
Hiện nay với điều kiện về cơ sở vật chất cũng như các tài liệu thông tin và phương tiện giài dạycòn chưa đầy đủ như ở nước ta tồn tại các hình thức dạy và học sau:
+ Hình thức học tập trung (học trên lớp có thầy cô hướng dẫn)
+ Hình thức học hàm thụ từ xa (học theo sự hướng dẫn của người chuyên môn theo giáo trìnhhay sách vở được định hướng sẳn)
+ Hình thức tự học (Học theo nhu cầu , do điều kiện không cho phép theo học hai hình thức trên)
Do đó việc thiết kế ra các phần mềm trợ giúp việc giảng dạy rất cần thiết rất cần thiết cho nhu cầugiảng dạy hiện tại
Dựa vào những phân tích trên cùng với các mô trường dạy và học vừa nêu, tôi quyết định xây
dựng công cụ “Xây dựng bộ công cụ thực hiện một số giải thuật trong Lý thuyết Ngôn ngữ Hình
thức & Automata” theo phía cạnh mô hình giảng dạy
Trang 39PHẦN 4
PHÂN TÍCH VÀ THIẾT KẾ
Sau đây chúng ta bắt đầu đi vào việc phân tích cụ thể cho bộ công cụ thực hiện một số
giải thuật trong môn học “ Lý Thuyết Ngôn Ngữ Hình Thức & Automata” phần ngôn ngữ phi
ngữ cảnh
I - YÊU CẦU ĐẶT RA CHO CHƯƠNG TRÌNH
1.1 Mục Tiêu Của Chương Trình
Mục tiêu chính của chương trình là : Với bộ công cụ được xây dựng nó sẽ hổ trợ đắt lựccho người giảng dạy, giảm thiểu thời gian trong việc soạn giáo án cho các bài tập áp dụng một sốgiải thuật mà chúng tôi thể hiện trong chuơng trình, giúp cho sinh viên nắm bắt được cách thứcthực hiện một bài tập theo các giải thuật đã nêu ra, giúp người học kiểm tra kiến thức của mình,thực hành một số bài tập từ đó nâng kiến thức khi học các lý thuyết liên quan
1.2- Các Yêu Cầu Phải Viết Trong Chương Trình
Trên cơ sở thiết kế phần mềm dạy và học cho những đối tượng là những những sinh viêntheo học ngành khoa học máy tính Chuơng trình hỗ trợ việc học một số giải thuật của môn học
“Ngôn Ngữ Hình Thức & Automat” cố gắng thực hiện được các vấn đề sau:
+ Đưa ra những nội dung cơ bản liên quan đến môn học nhằm góp phần giúp cho sinh viên hiểu
và nắm bắt nội dung của lý thuyết liên quan, phần này được tích hợp trong hệ thống Help củachương trình
+ Thực hiện một bộ công cụ trợ giúp cho sinh viên học một số giải thuật trong môn học “Ngônngữ hình thức & Automata” như :
(1) Loại bỏ các luật sinh rỗng
(2) Loại bỏ các luật sinh đơn vị
(3) Loại bỏ các luật sibnh vô dụng
(4) Chuyển một văn phạm bất kỳ về dạng chuẩn Chomsky
(5) Chuyển một văn phạm bất kỳ về dạng chuẩn Greibach
(6) Hiện thực giải thuật phân tích cú pháp CYK
Trang 40(7) Hiện thực giải thuật phân tích cú pháp Earley
(8) So sánh độ phức tạp của hai giải thuật PTCP trên.
(9) Áp dụng nhận dạng một câu nhập thuộc ngôn ngữ tự nhiên (Tiếng Anh).
+ Quá trình thực hiện các giải thuật phải thể hiện được các bước dữ liệu trung gian để sinh viên
dễ dàng nắm bắt cách thực hiện giải thuật
II- MÔI TRƯỜNG HOẠT ĐỘNG và CÁC SƠ ĐỒ DFD
2.1 Môi Trường Hoạt Động & Ngôn Ngữ Lập Trình
Đây là một chuơng trình mang tính dành học việc học, nghiên cứu cách thực hiện giảithuật nên chương trình chỉ thiết kế chạy trên máy tính cá nhân, hiện tại vấn đề chạy trên mạngchưa đặt ra ở đây
Chuơng trình phát triển chạy trên môi trường HĐH Microsoft Windows 95, đây là mộtHĐH được sử dụng rỗng rãi nhất hiện nay trên thế giới Chương trình sẽ kế thừa những tiện íchcủa HĐH này nên sẽ không thể chạy trên môi trường DOS hay Windows 3.11
Ngôn ngữ Visual C++ 5.0 được sử dụng để hiện thực hệ thống, đây là một ngôn ngữ lậptrình huớng đối tượng mạnh và hiện nay được sử dụng rộng rãi Đặc biệt chương trình sẽ sử dụngcác class được định nghĩa trong MFC
2.2 Sơ Đồ DFD Tổng Quát
a) Trường hợp biến đổi văn phạm
Văn Phạm phi ngữ cảnh bất kỳ
Bộ công cụ thực hiện
Thông báo quá trình thực hiện giải thuật