Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn §øc ThuÇn Ch-ơng I Nhập môn văn phạm & Ngôn ngữ hình thức 1.khái niệm chung ngôn ngữ Ngôn ngữ ph-ơng tiện giao tiếp Sự giao tiếp giao tiếp ng-ời với ng-ời, ng-ời máy, máy máy Ngôn ngữ giao tiếp ng-ời với ng-ời gọi ngôn ngữ tự nhiên, chẳng hạn nh- tiếng Anh, tiếng Pháp Ngôn ngữ giao tiếp ng-ời máy nh- ngôn ngữ lập trình Pascal,C Dù ngôn ngữ nào, xem ngôn ngữ tập hợp câu có cấu trúc qui định Cấu trúc ngôn ngữ tự nhiên phong phú, đa dạng phức tạp Tuy nhiên, yêu cầu nghiêm ngặt mặt ngữ nghĩa ngôn ngữ tự nhiên ch-a cao, chẳng hạn từ, câu ta hiểu chúng theo nghĩa khác tùy theo ngữ cảnh Để có giao tiếp ng-ời máy, máy máy cần phải có ngôn ngữ mà qui tắc, cú pháp chặt chẽ hơn, nói khác từ, câu ngữ nghĩa chúng phải Những ngôn ngữ nh- gọi ngôn ngữ hình thức n a u Để xây dựng ngôn ngữ hình thức cần có tập hữu hạn khác rỗng ký hiệu gọi bảng chữ DÃy hữu hạn phần tử bảng chữ gọi từ hay xâu bảng chữ Một tập hợp từ bảng chữ đ-ợc gọi ngôn ngữ h T c 1.1 bảng chữ Cho tập hữu hạn khác rỗng phần tử mà ta gọi bảng chữ Mỗi phần tử đ-ợc gọi ký tù VÝ dơ 1: 1.2 X©u ký tù u D a Bộ chữ tiếng Anh gồm 26 ký tự, cụ thể: = {a,b,c, ,y,z} b Bộ chữ để sinh xâu nhị phân là: = {0,1} g N Một xâu ký tự hay từ bảng chữ dÃy hữu hạn ký tự bảng mà chúng đ-ợc viết liền Ví dụ 2: internet xâu bảng chữ = {a,b,c, ,y,z} Độ dài xâu w số ký tự có mặt xâu, ký hiệu ẵwẵ l(w) Ví dụ 3: ( l(w)=8) w = 01001011 xâu bảng chữ = {0,1} có độ dài Ng-òi ta qui -ớc xâu rỗng xâu có độ dài Xâu rỗng đ-ợc ký hiệu e Xâu v đ-ợc gọi xâu xâu w, xâu v đ-ợc tạo dÃy ký hiệu kề w Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức Thuần VÝ dô : ter xâu xâu Internet Tiền tố xâu xâu nằm đầu xâu Hậu tố xâu xâu nằm cuối xâu Ví dụ : Xâu abc cã : c¸c tiỊn tè a, ab, abc, e c¸c hËu tè e, c, bc, abc PhÐp ghÐp: cña xâu v w, ký hiệu vw xâu tạo cách viết v đến viết w sau ( khoảng cách) Ví dụ : v = ab, w = ehg th× vw = abehg (Phép ghép phép toán xâu, đơn vị phép ghép xâu rỗng : we = ew = w, "w) Ng-êi ta ký hiÖu : v0 = e, v1= v, v2= vv, vi = vvi-1, "i>0 Đảo ng-ợc xâu u = a1a2a3 an ký hiệu ur = anan-1 a1 1.3 ngôn ng÷ hiƯu å h T c n a u Cho bảng chữ ồ, tất từ bảng chữ kể xâu rỗng ký * Tập tất từ bảng chữ mà từ có độ dài khác 0, đuợc ký hiệu ồ+ Từ : ồ+ = ồ* \ {e} u D Mỗi tập ồ* gọi ngôn ngữ hình thức ồ, nói gọn ngôn ngữ Các tập { } tập {e} đ-ợc xem ngôn ngữ bảng chữ g N Từ ngôn ngữ cho tr-ớc, ta thu đ-ợc ngôn ngữ nhờ áp dụng phép toán lên ngôn ngữ ngôn ngữ tập hợp nên phép toán tập hợp : giao, hợp, hiệu áp dụng lên ngôn ngữ - Một số phép toán khác lên ngôn ngữ: Phép ghép tiếp : Cho ngôn ngữ L1 chữ ồ1, ngôn ngữ L2 chữ ồ2, ký hiệu ngôn ngữ L1L2 ngôn ngữ {vw/ v ẻ L1, w ẻ L2} chữ å1Èå2 Mét sè tÝnh chÊt cña phÐp ghÐp tiÕp: a Tính kết hợp : L1(L2L3) = (L1L2)L3 b Không có tÝnh giao ho¸n : L1L2 # L2L1 c Lf = fL = f d L{e} = {e}L = L e Phép hợp tính phân bố với phép ghép tiÕp: L1È(L2L3) # L1L2 È L1L3 f PhÐp ghÐp tiÕp có tính phân bố phép hợp: Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức Thuần L1(L2 ÈL3) = L1L2 È L1L3 g PhÐp ghÐp tiếp tính phân bố phép giao, nh- phép giao tính phân bố phép ghép tiếp: L1(L2 ầ L3) # (L1L2) ầ (L1L3) L1ầ (L2L3) # (L1ầL2)(L1ầL3) Bao đóng ngôn ngữ L : Ký hiệu L* ngôn ng÷ L* = L0ÈL1ÈL2ÈL3È = È Li , " i Li đ-ợc định nghÜa ®Ư qui nh- sau: L0 = {e} Li = LLi-1 với i Bao đóng dương ngôn ngữ L : Ký hiệu L+ L+ = È L i , " i ³ Chó ý : L+ = LL* = L*L L* = L+ È {e} h T c 1.4 vÊn ®Ị biĨu diƠn ngôn ngữ hệ viết lại : n a u Đối với ngôn ngữ L bảng chữ ị L ồ*, ng-ời ta th-ờng quan tâm vấn đề sau: u D -Đối với ngôn ngữ L , rõ xâu thuộc L Đây vấn đề biểu diễn ngôn ngữ Với xâu hữu hạn, để biểu diễn chúng cần liệt kê xâu g N Ví dụ 6: L1 = { } L2 = {a, ba, aaba, bbbb} Tuy nhiên, ngôn ngữ vô hạn, ta liệt kê hết xâu chúng đ-ợc Vì phải tìm cách biểu diễn hữu hạn cho ngôn ngữ vô hạn Một số tr-ờng hợp, xác định xâu ngôn ngữ cách rõ đặc điểm cốt yếu xâu Đặc điểm xâu đ-ợc mô tả câu tiếng Việt hay nói chung tân từ Chẳng hạn: L3 = {aj / j số nguyên tố} L4 = { aibj / i ³ j ³ } L5 = { w Ỵ {a,b}* / sè a w = sè b w } Giáo trình khảo sát cách biểu diễn khác ch-ơng Phần lớn tr-ờng hợp, ng-ời ta th-ờng biểu diễn ngôn ngữ nhờ văn phạm hay nhờ Ôtômat Văn phạm chế cho phép sản sinh xâu ngôn ngữ Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức Thuần Còn Ôtômat (automata) chế cho phép đoán nhận xâu có thuộc ngôn ngữ hay không Tuy nhiên, mặt hình thức văn phạm ôtômat biểu khác quan niệm gọi hệ viết lại ( Rewriting System) Một vài ví dụ ngôn ngữ: Ví dụ 7: Xét ngôn ngữ L chữ {a,b,c} gồm từ có dạng: ciwcj , i 0, j Trong đó, w từ rỗng, có tiền tố chữ a, có hậu tố chữ b (chẳng hạn e, c3, cacbac2, ca bc thuộc L, không từ số từ ba, c3bca3c, c2bc7a thuộc L) Mặc dù L thiếu nhiều từ chữ {a,b,c} ta khẳng định rằng: L2 = {a,b,c}* (I.1) n a u Và e thuộc L, nên Li = {a,b,c}*, "i ³ §Ĩ chøng minh (I.1) ta chứng minh "x từ chữ {a,b,c} thuộc L2 - Vì x= e đ x thc L NÕu a lµ tiỊn tè cđa x ® x thuéc L ® x thuéc L2 (chó ý L2 chøa L) h T c - Gäi ALPH(L) chữ nhỏ cho L ngôn ngữ Nếu b tiền tố cđa x, ta cã thĨ viÕt x d-íi d¹ng x = bz x = bybz với từ y, z cho b không thuộc ALPH(z) Rõ ràng từ b, byb z thuộc L Do đó, x thuộc L2 (Trong phần ta biểu diễn ALPH(z) cho ALPH({z}; Đúng ta cần xét x phải có dạng x = biz x = biybjz, nh-ng bi, bj thuộc L nên cần xét dạng trên) g N u D Cuối cùng, giả sử c tiền tố x Nếu b không thuộc ALPH(x) rõ ràng x thuộc L Nếu không, ta có thĨ viÕt x d-íi d¹ng: x = ciybz víi i từ y z cho b không thuộc ALPH(z) Cả : ciyb z lại thuộc L đ x thuộc L2 (đ.p.c.m) Ví dụ 8: Cho L ngôn ngữ toàn chữ {a,b}, định nghĩa : e ẻ L Nếu X ẻ L đ aXb ẻ L Không xâu khác thuộc L (1) ị X = e ẻ L (2) ị aeb ẻ L đ ab ẻ L (2) ị aabb ẻ L đ aibi Î L Þ {aibi / i = 0,1,2, }= L (!) Ví dụ 9: Ngôn ngữ L đ-ợc định nghĩa tập tất xâu thu đ-ợc vỊ x©u rỉng e b»ng mét phÐp thay thÕ ab e Định nghĩa lại cho cách đoán nhận Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức Thuần xâu có thuộc ngôn ngữ hay không Cách đoán nhận lại qui tắc viết lại xâu Ví dụ: Từ xâu : aabbab abab ab e ị aabbab ẻ L Nếu xem a dấu (, b dấu ) L gồm xâu ngoặc đơn lồng mà không gối lên ( nghĩa ngoặc đơn thu đ-ợc từ nhiều biểu thức toán học đắn bỏ toán hạng, toán tử): Ví dụ từ biểu thøc : (7 + ( x-y)) /(y-1) Þ ( ( ) ) ( ) ằ aabbab Định nghĩa Hệ viết lại : n a u a Định nghĩa : Cho bảng chữ ồ, P gọi qui tắc viết lại hay tập sản xuất nÕu P Ì åxå NÕu (u,v) Ỵ P , ký hiệu u đ v đ-ợc gọi sản xuất h T c b Định nghĩa : Cho bảng chữ ồ, P gọi qui tắc viết lại hay tập sản xuất , x,y ẻ ồ* x đ-ợc gọi sản sinh trùc tiÕp y ký hiƯu x├─y Û $(u,v) ỴP, x1, x2 Ỵ å* : x = x1ux2, y= x1vx2 c Định nghĩa : Cho bảng chữ ồ, P gọi qui tắc viết lại hay tập sản xuất , x,y ẻ ồ* x đ-ợc gọi suy dẫn y ký hiệu x y Û $ w0, w1, , wnỴ å* u D x=w0 ├─ w1 ├─ ├─ wn = y Chó ý : Quan hệ bao đóng truyền ứng thoả : " s ẻồ* : s ╞═ s " s1, s2, s3 Ỵå* : s 1╞═ s2, s2 ├─ s3 Þ s1 ╞═ s3 " s1, s2 Ỵå* : s 1╞═ s2, thoả 1, d g N Định nghĩa : Một hệ viết lại RW xác định bảng chữ ồ, cặp (ồ,P), với P è ồxồ e Định nghĩa : Một ngôn ngữ đ-ợc sản sinh hệ viết lại RW tập tiên đề A ( Aèồ*) tập : Ls (RW, A) = {w Ỵå*, x ╞═ w, x Ỵ A} RW lúc đ-ợc gọi hệ viết lại sản sinh f Định nghĩa : Một ngôn ngữ đ-ợc sản sinh hệ viết lại RW tập tiên đề A ( Aèồ*) tập : Lđ (RW, A) = {v Ỵå*, v ╞═ x, x Ỵ A} RW lúc đ-ợc gọi hệ viết lại đoán nhận Ví dụ 10: - Ngôn ngữ ví dụ đ-ợc biểu diễn hệ viết lại là: Ls(RW,{X}) ầ {a,b}* đó: RW = ( {a,b,X},{X đ e, X đ aXb}) Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức Thuần - Ngôn ngữ ví dụ đ-ợc biểu diễn hệ viết lại là: Ld(RW,{e}) : RW = ( {a,b}, {ab đ e}) 1.6 văn phạm Với mục đích sản sinh hay đoán nhận ngôn ngữ, hệ viết lại th-ờng đ-ợc dùng d-ới dạng đặc biệt, gọi Văn phạm Trong lý thuyết văn phạm ng-ời ta đà chứng minh đ-ợc khảo sát ngôn ngữ, sử dụng văn phạm (hệ viết lại) sản sinh văn phạm (hệ viết lại) đoán nhận đối ngẫu t-ơng đ-ơng Vì giáo trình này, đề cập đến văn phạm sinh 1.6.1 Định nghĩa Văn phạm sinh: Văn phạm sinh bốn : G = Trong đó: : bảng chữ , gọi bảng chữ kết thúc D : bảng chữ , gọi bảng chữ không kết thúc thỏa ồầD = ặ S ẻD đ-ợc gọi ký hiệu đầu P tập cặp cã thø tù (a,b) , víi a,b Ỵ (åÈD)* (a,b) đ-ợc gọi sản xuất (hay qui tắc viết lại) th-ờng đ-ợc ký hiệu ađb P gọi tập qui tắc thay h T c n a u Nh- vậy, văn phạm sinh G tạo thành hệ viết lại RW = (V,P) với tiên đề S (ký hiệu V= (ồẩD)), đ-ợc thiết lập quan hệ , (suy dẫn trực tiếp, suy dẫn - Xem định nghĩa hệ viÕt l¹i) VÝ dơ 11: Cho G = , víi å = {a,b}, D={S}, P ={S® aSb,S ®ab} Khi G văn phạm Một số định nghĩa bổ sung: g N u D - Cho văn phạm G = , aẻ ồ* Ta nói văn ph¹m G sinh tõ a nÕu S╞═ a VÝ dụ 12 : Với văn phạm xét ví dụ 11, S ╞═ aabb, nªn G sinh aabb - Cho văn phạm G = , ngôn ngữ sản sinh G là: L(G) = {w / w ẻ å * ,vµ S ╞═ w} VÝ dơ 13: Víi văn phạm xét ví dụ 11, ta thấy L(G) = {anbn / nẻ N, n1} - Hai văn phạm G G' đ-ợc gọi t-ơng đ-ơng với nÕu L(G) = L(G') VÝ dô 14 : a Cho văn phạm G = với = {a,b}, D ={S}, P={S ® aSb, S ®e} L(G) = {anbn / nẻ N, n1} Cho văn phạm G' = víi å' = {a,b}, D' ={S}, P'={S ® aSb, S đab} L(G') = {anbn / nẻ N, n1} Lý Thuyết Ngôn ngữ Hình thức & Ôtômat Nguyễn Đức ThuÇn Vậy G G' hai văn phạm t-ơng đ-ơng sai khác từ e Ta có : b Xét văn phạm G = với: = {a,b,c} D = { S,A,B,C} P = { S ® abc, S ® aAbc, Ab ® bA, Ac ® Bbcc, bB ®Bb, aB ® aaA, aB ® aa} XÐt văn phạm G' = t-ơng đ-ơng với G S' không xuất vế phải qui tắc nào, G' loại Bây thêm vào P' qui tắc S' đe, để đ-ợc G'' loại và: L(G'') = L(G') È {e} = L È {e} * XÐt L - {e} - NÕu eÏ L th× L - {e}= L Do L loại với L - {e} - Nếu e ẻ L giả sử L đ-ợc sinh văn phạm G = ,t-ơng tự chứng minh trên, theo bổ đề 1.6.2 ta xây dựng đ-ợc G' = Ta xây dựng văn phạm G=víi : P = P' \ { S ®e} ẩ {Ađ aS / Ađa ẻ P'} chứng minh L(G) = L*\ {e} u D VÝ dô 21 : Tìm văn phạm sinh ngôn ngữ sau : g N L = { (010)n / n ³ 1} Ta thấy L lặp L1 = {010} trừ e Hay nói cách khác L = L*{e} Do L1 sinh văn phạm : G' = nên L ®-ỵc sinh bëi: G = 1.8.4 Định lý : Mọi ngôn ngữ hữu hạn ngôn ngữ qui Chứng minh: ngôn ngữ từ qui Nếu L ngôn ngữ hữu hạn phân tích hợp hữu hạn ngôn ngữ tõ, dã L chÝnh qui š ... T c 1. 8 .1 Định lý : Nếu L1, L2 hai ngôn ngữ phi ngữ cảnh (hoặc qui) L1ẩL2 ngôn ngữ phi ngữ cảnh (hoặc qui) - Nếu L1 ngôn ngữ văn phạm phi ngữ cảnh G1 =