Ngôn ngữ giao tiếp giữa ng-ời với ng-ời gọi là ngôn ngữ tự nhiên, chẳng hạn nh- tiếng Anh, tiếng Pháp ... Tuy nhiên, những yêu cầu nghiêm ngặt về mặt ngữ nghĩa trong các ngôn ngữ tự nhiê
Trang 1Ng Duc Thuan
Ch-ơng I
Nhập môn về văn phạm & Ngôn ngữ hình thức
1.khái niệm chung về ngôn ngữ
Ngôn ngữ là ph-ơng tiện giao tiếp Sự giao tiếp ở đây có thể là giao tiếp giữa
ng-ời với ng-ời, hoặc giữa ng-ời và máy, hoặc giữa máy và máy Ngôn ngữ giao tiếp
giữa ng-ời với ng-ời gọi là ngôn ngữ tự nhiên, chẳng hạn nh- tiếng Anh, tiếng Pháp
Ngôn ngữ giao tiếp giữa ng-ời và máy nh- các ngôn ngữ lập trình Pascal,C Dù là
ngôn ngữ nào, cũng có thể xem ngôn ngữ là tập hợp các câu có 1 cấu trúc qui định nào
đó Cấu trúc của ngôn ngữ tự nhiên rất phong phú, đa dạng và phức tạp Tuy nhiên,
những yêu cầu nghiêm ngặt về mặt ngữ nghĩa trong các ngôn ngữ tự nhiên ch-a cao,
chẳng hạn cùng một từ, hoặc cùng một câu ta có thể hiểu chúng theo những nghĩa khác
nhau tùy theo ngữ cảnh Để có sự giao tiếp giữa ng-ời và máy, hoặc giữa máy và máy
cần phải có 1 ngôn ngữ mà các qui tắc, cú pháp chặt chẽ hơn, nói khác hơn là 1 từ, 1 câu
thì ngữ nghĩa của chúng phải là duy nhất Những ngôn ngữ nh- thế gọi là ngôn ngữ
hình thức
Để xây dựng 1 ngôn ngữ hình thức cần có 1 tập hữu hạn khác rỗng các ký
hiệu nào đó gọi là bảng chữ cái Dãy hữu hạn các phần tử của 1 bảng chữ cái gọi là
1 từ hay xâu trên bảng chữ cái Một tập hợp các từ trên bảng chữ cái đ-ợc gọi là ngôn
ngữ
1.1 bảng chữ cái
Cho ồ là 1 tập hữu hạn khác rỗng các phần tử nào đó mà ta gọi là 1 bảng chữ
cái Mỗi phần tử trong ồ đ-ợc gọi là 1 ký tự
Ví dụ 1: a Bộ chữ cái tiếng Anh gồm 26 ký tự, cụ thể:
ồ = {a,b,c, ,y,z}
b Bộ chữ cái để sinh các xâu nhị phân là:
ồ = {0,1}
1.2 Xâu ký tự
Một xâu ký tự hay 1 từ trên bảng chữ cái ồ là một dãy hữu hạn các ký tự trên
bảng ồ mà chúng đ-ợc viết liền nhau
Ví dụ 2:
internet là một xâu trên bảng chữ cái ồ = {a,b,c, ,y,z}
Độ dài của 1 xâu w là số ký tự có mặt trong xâu, ký hiệu ẵ w ẵ hoặc l(w)
Ví dụ 3:
w = 01001011 là một xâu trên bảng chữ cái ồ = {0,1} có độ dài
là 8 ( l(w)=8)
Ng-òi ta qui -ớc xâu rỗng là xâu có độ dài 0 Xâu rỗng đ-ợc ký hiệu là e
Xâu v đ-ợc gọi là xâu con của xâu w, nếu xâu v đ-ợc tạo bởi 1 dãy các ký hiệu
kề nhau trong w
Trang 2Ng Duc Thuan
Ví dụ 4 : ter là một xâu con của xâu Internet
Tiền tố của 1 xâu là một xâu con nằm ở đầu xâu đó
Hậu tố của 1 xâu là một xâu con nằm cuối xâu đó
Ví dụ 5 : 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 2 xâu v và w, ký hiệu vw là 1 xâu tạo bằng cách viết v rồi đến
viết w tiếp theo sau ( không có khoảng cách)
Ví dụ : v = ab, w = ehg thì vw = abehg
(Phép ghép là một phép toán 2 ngôi trên các xâu, đơn vị của phép ghép là xâu
rỗng vì : we = ew = w, "w)
Ng-ời ta ký hiệu : v0 = e, v1= v, v2= vv, vi = vvi-1, "i>0
Đảo ng-ợc một xâu u = a1a2a3 an ký hiệu là ur = anan-1 a1
1.3 ngôn ngữ
Cho bảng chữ cái ồ, khi đó tất cả các từ trên bảng chữ cái ồ kể cả xâu rỗng ký
hiệu ồ*
Tập tất cả các từ trên bảng chữ cái ồ mà mọi từ trong nó đều có độ dài khác 0,
đuợc ký hiệu ồ+ Từ đó : ồ+ = ồ* \ {e}
Mỗi tập con của ồ * được gọi là 1 ngôn ngữ hình thức trên ồ, nói gọn là một
ngôn ngữ trên ồ
Các tập { } và tập {e} đ-ợc xem là các ngôn ngữ trên bảng chữ cái bất kỳ
Từ các ngôn ngữ cho tr-ớc, ta có thể thu đ-ợc các ngôn ngữ mới nhờ áp dụng các
phép toán lên ngôn ngữ vì các ngôn ngữ là tập hợp nên các phép toán tập hợp : giao,
hợp, hiệu đều có thể áp dụng lên các 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 trên bộ chữ cái ồ1, và ngôn ngữ L2 trên bộ
chữ cái ồ2, ký hiệu ngôn ngữ L1L2 là ngôn ngữ {vw/ v ẻ L1, w ẻ L2} trên bộ 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 không có 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ố đối với phép hợp:
Trang 3Ng Duc Thuan
L1(L2ẩL3) = L1L2ẩ L1L3
g Phép ghép tiếp không có tính phân bố đối với phép giao, và cũng nh- vậy phép
giao không có tính phân bố đối với phép ghép tiếp:
L1(L2 ầ L3) # (L1L2) ầ (L1L3)
L1ầ (L2L3) # (L1ầL2)(L1ầL3)
Bao đóng của 1 ngôn ngữ L : Ký hiệu L* là ngôn ngữ
L* = L0ẩL1ẩL2ẩL3ẩ = ẩ Li , " i ³ 0 trong đó Li đ-ợc định nghĩa đệ qui nh- sau:
1 L0 = {e}
2 Li = LLi-1 với i ³1
Bao đóng dương của 1 ngôn ngữ L : Ký hiệu L+ là
L+ = ẩ Li , " i ³ 1
Chú ý : L+ = LL* = L*L
L* = L+ẩ {e} 1.4 vấn đề biểu diễn ngôn ngữ và hệ viết lại :
Đối với một ngôn ngữ L trên bảng chữ cái ồị L Í ồ*, ng-ời ta th-ờng quan
tâm các vấn đề sau:
-Đối với các ngôn ngữ L , làm sao chỉ rõ các xâu thuộc L Đây là vấn đề biểu
diễn ngôn ngữ
Với các xâu hữu hạn, thì để biểu diễn chúng chỉ cần liệt kê các xâu
Ví dụ 6:
L1 = { }
L2 = {a, ba, aaba, bbbb}
Tuy nhiên, đối với các ngôn ngữ vô hạn, thì ta không thể liệt kê hết các xâu của
chúng đ-ợc Vì vậy phải tìm một cách biểu diễn hữu hạn cho một ngôn ngữ vô hạn
Một số tr-ờng hợp, có thể xác định các xâu của ngôn ngữ bằng cách chỉ rõ 1 đặc
điểm cốt yếu của mọi xâu Đặc điểm của 1 xâu có thể đ-ợc mô tả bằng 1 câu tiếng Việt
hay nói chung là một tân từ Chẳng hạn:
L3 = {aj / j là một số nguyên tố}
L4 = { aibj / i ³ j ³ 0 }
L5 = { w ẻ {a,b}* / số a trong w = số b trong w } Giáo trình này sẽ khảo sát các cách biểu diễn khác ở ch-ơng 2
Phần lớn các tr-ờng hợp, ng-ời ta th-ờng biểu diễn ngôn ngữ nhờ 1 văn phạm
hay nhờ 1 Ôtômat Văn phạm là một cơ chế cho phép sản sinh ra mọi xâu của ngôn ngữ
Trang 4Ng Duc Thuan
Còn Ôtômat (automata) là một cơ chế cho phép đoán nhận 1 xâu bất kỳ có thuộc về
ngôn ngữ hay không Tuy nhiên, về mặt hình thức thì cả văn phạm và ôtômat đều là các
biểu hiện khác nhau của cùng 1 quan niệm gọi là hệ viết lại ( Rewriting System)
Một vài ví dụ về ngôn ngữ:
Ví dụ 7: Xét ngôn ngữ L trên bộ chữ cái {a,b,c} gồm các từ có dạng:
ciwcj , i ³ 0, j ³ 0 Trong đó, w hoặc là từ rỗng, hoặc có tiền tố là chữ a, hoặc có hậu tố là chữ b (chẳng hạn e , c 3 , cacbac 2 , ca và bc đều thuộc L, trong khi đó không 1 từ nào trong
số các từ ba, c 3 bca 3 c, c 2 bc 7 a thuộc L) Mặc dù L thiếu nhiều từ trên bộ chữ cái {a,b,c} ta
khẳng định rằng:
L2 = {a,b,c}* (I.1)
Và vì e thuộc L, nên Li = {a,b,c}*, "i ³ 2
Để chứng minh (I.1) ta chứng minh rằng "x là từ trên bộ chữ cái {a,b,c} đều
thuộc L2
- Vì x= eđ x thuộc L2
Nếu a là tiền tố của x đ x thuộc L đ x thuộc L2
(chú ý L2 chứa L)
- Gọi ALPH(L) là bộ chữ cái nhỏ nhất ồ sao cho L là ngôn ngữ trên ồ
Nếu b là tiền tố của x, ta có thể viết x d-ới dạng x = bz hoặc x = bybz với các từ
y, và z sao cho b không thuộc ALPH(z) Rõ ràng các từ b, byb và z thuộc L Do đó, x
thuộc L2 (Trong phần này ta biểu diễn ALPH(z) cho ALPH({z}; Đúng ra ta cần xét x
phải có dạng x = b i z hoặc x = b i yb j z, nh-ng do b i , b j thuộc L nên chỉ cần xét các dạng
trên)
Cuối cùng, giả sử c là tiền tố của x Nếu b không thuộc ALPH(x) thì 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 ³ 0
và các từ y và z sao cho b không thuộc ALPH(z) Cả 2 : ciyb và z lại thuộc L đ x thuộc
L2 (đ.p.c.m)
Ví dụ 8: Cho L là một ngôn ngữ trên toàn bộ chữ cái {a,b}, định nghĩa :
1 eẻ L
2 Nếu X ẻ L đ aXb ẻ L
3 Không còn xâu nào 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 là tập tất cả các xâu có thể thu đ-ợc về xâu
rổng e bằng một phép thay thế ab bởi e Định nghĩa này lại cho một cách đoán nhận 1
Trang 5Ng Duc Thuan
xâu có thuộc ngôn ngữ hay không Cách đoán nhận lại cũng là 1 qui tắc viết lại xâu Ví
dụ:
Từ xâu : aabbab
abab
ab e
ị aabbab ẻ L Nếu xem a là dấu (, b là dấu ) thì L gồm các xâu ngoặc đơn lồng
nhau mà không gối lên nhau ( nghĩa là các ngoặc đơn có thể thu đ-ợc từ nhiều biểu thức
toán học đúng đắn khi bỏ các 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 :
a Định nghĩa : Cho 1 bảng chữ cái ồ, P gọi là 1 qui tắc viết lại hay các tập sản xuất
trên ồ nếu P èồxồ Nếu (u,v) ẻ P , ký hiệu u đ v đ-ợc gọi là 1 sản xuất
b Định nghĩa : Cho 1 bảng chữ cái ồ, P gọi là 1 qui tắc viết lại hay các tập sản xuất
trên ồ , x,y ẻồ* x đ-ợc gọi là 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 1 bảng chữ cái ồ, P gọi là 1 qui tắc viết lại hay các tập sản xuất
trên ồ , x,y ẻồ* x đ-ợc gọi là suy dẫn y ký hiệu x╞═ y Û$ w0, w1, , wnẻồ*
x=w0 ├─ w1 ├─ ├─ wn = y Chú ý : Quan hệ 2 ngôi ╞═ là bao đóng truyền ứng của ├─ vì thoả :
1 " s ẻồ* : s ╞═ s
2 " s1, s2, s3ẻồ* : s 1╞═ s2, s2 ├─ s3ị s1 ╞═ s3
3 " s1, s2ẻồ* : s 1╞═ s2, nếu chỉ thoả 1, 2
d Định nghĩa : Một hệ viết lại RW xác định trên bảng chữ cái ồ, là 1 cặp (ồ,P), với
P èồxồ
e Định nghĩa : Một ngôn ngữ đ-ợc sản sinh bởi 1 hệ viết lại RW và 1 tập tiên đề A
( Aèồ*) là tập : Ls (RW, A) = {w ẻồ*, x ╞═ w, x ẻ A}
RW lúc này đ-ợc gọi là hệ viết lại sản sinh
f Định nghĩa : Một ngôn ngữ đ-ợc sản sinh bởi 1 hệ viết lại RW và 1 tập tiên đề A
( Aèồ*) là tập : Lđ (RW, A) = {v ẻồ*, v ╞═ x, x ẻ A}
RW lúc này đ-ợc gọi là hệ viết lại đoán nhận
Ví dụ 10: - Ngôn ngữ ở ví dụ 8 đ-ợc biểu diễn bởi hệ viết lại là:
Ls(RW,{X}) ầ {a,b}*
trong đó: RW = ( {a,b,X},{X đe, X đ aXb})
Trang 6Ng Duc Thuan
- Ngôn ngữ ở ví dụ 9 đ-ợc biểu diễn bởi hệ viết lại là:
Ld(RW,{e}) trong đó : 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ữ, các hệ viết lại th-ờng đ-ợc
dùng d-ới một dạng đặc biệt, gọi là Văn phạm Trong lý thuyết văn phạm ng-ời ta đã
chứng minh đ-ợc rằng khi khảo sát một ngôn ngữ, sử dụng văn phạm (hệ viết lại) sản
sinh và văn phạm (hệ viết lại) đoán nhận là đối ngẫu và t-ơng đ-ơng Vì vậy trong giáo
trình này, chỉ đề cập đến văn phạm sinh
1.6.1 Định nghĩa Văn phạm sinh:
Văn phạm sinh là bộ bốn : G = <ồ, D,S,P> Trong đó:
ồ : là một bảng chữ , gọi là bảng chữ kết thúc
D : là một bảng chữ , gọi là bảng chữ không kết thúc thỏa ồầD = ặ
S ẻD đ-ợc gọi là ký hiệu đầu
P là tập các cặp có thứ tự (a,b) , với a,b ẻ (ồẩD)* (a,b) đ-ợc gọi là một sản
xuất (hay một qui tắc viết lại) th-ờng đ-ợc ký hiệu là ađb P gọi là tập các qui tắc thay
thế
Nh- vậy, mỗi văn phạm sinh G tạo thành một hệ viết lại RW = (V,P) với tiên đề
S (ký hiệu V= (ồẩD)), trong đó đ-ợc thiết lập các quan hệ ├─, và ╞═ (suy dẫn trực tiếp,
suy dẫn - Xem định nghĩa hệ viết lại)
Ví dụ 11: Cho G = <ồ, D,S,P>,
với ồ = {a,b}, D={S}, P ={Sđ aSb,S đab} Khi đó G là một văn phạm
Một số định nghĩa bổ sung:
- Cho văn phạm G = < ồ , D ,S,P>, aẻ ồ * Ta nói rằng văn phạm G sinh ra 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 ra aabb
- Cho văn phạm G = < ồ , D ,S,P>, ngôn ngữ sản sinh bởi 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, n³1}
- Hai văn phạm G và G' đ-ợc gọi là t-ơng đ-ơng với nhau nếu L(G) = L(G')
Ví dụ 14 : a Cho văn phạm G = <ồ, D,S,P>
với ồ = {a,b}, D ={S}, P={S đ aSb, S đe} L(G) = {anbn / nẻ N, n³1}
Cho văn phạm G' = <ồ', D',S',P'>
với ồ' = {a,b}, D' ={S}, P'={S đ aSb, S đab}
L(G') = {anbn / nẻ N, n³1}
Trang 7Ng Duc Thuan
Vậy G và G' là hai văn phạm t-ơng đ-ơng nhau sai khác từ e
b Xét văn phạm G = <ồ, D,S,P> 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' = <ồ', D',S,P'> với:
ồ' = {a,b,c}
D' = { S,A,B,C}
P' = { S đ aSAB, S đ abB,BA đ AB, bA đ bb, bB đbc,
cB đ cc}
Ta có :
L(G) = L(G') = { anbncn / n ³ 1}
Vậy G và G' là hai văn phạm t-ơng đ-ơng
1.6.2 Bổ đề : Cho văn phạm G = < ồ , D ,S,P> và giả thiết rằng trong P tồn tại
qui tắc chứa S (ký hiệu đầu) ở vế phải, lúc đó tồn tại văn phạm G' t-ơng đ-ơng với văn
phạm G mà các qui tắc của nó không chứa ký hiệu đầu ở vế phải
Chứng minh : Đ-a vào ký hiệu mới S' ẽồẩD, xây dựng G' nh- sau :
G'= <ồ, Dẩ{S'},S',P'>, ở đây P' chứa tất cả các qui tắc của P, ngoài ra chứa các
qui tắc S' đa, nếu có S đaẻ P
Rõ ràng trong P' không chứa qui tắc nào có S' ở vế phải Ta cần chứng minh L(G)
= L(G')
Lấy w ẻL(G) lúc đó S ╞═ w giả sử quá trình này suy dẫn là :
S ├─ a ├─ w1├─ ├─w Vì S đaẻ P nên S' đaẻ P' và mọi qui tắc của P là qui tắc của P', nên ta có:
S' đa ╞═ w Vậy S' ╞═ w hay w ẻ L(G')
Ng-ợc lại, giả sử w ẻ L(G'), lúc đó S' ╞═ w, ta có thể phân tích suy dẫn này nh-
sau : S' đa ╞═ w Vì S' đaẻ P' nên tồn tại S đaẻ P; mặt khác trong a không chứa
S' nên các suy dẫn trực tiếp trong a ╞═ w chỉ sử dụng các qui tắc của P Vậy ta có:
S ╞═ w hay w ẻ L(G)
Tóm lại L(G) = L(G')
Ví dụ 15:
G = <{a,b},{S},S,{SđaSbẵab}
G' =<{a,b},{S,S'},S',{SđaSb, S'đaSb,S'đab,Sđab}>
1.7 phân loại văn phạm của chomsky
Chomsky phân loại văn phạm thành 4 nhóm trên cơ sở định nghĩa văn phạm nói
chung:
Trang 8Ng Duc Thuan
Văn phạm loại 0 : Văn phạm Tổng quát Văn phạm loại 1 : Văn phạm Cảm ngữ cảnh Văn phạm loại 2 : Văn phạm Phi ngữ cảnh Văn phạm loại 3 : Văn phạm Chính qui
1.7.1 Định nghiã : Văn phạm Tổng quát (General grammar)
Văn phạm G = <ồ , D ,S,P>đ-ợc gọi là văn phạm tổng quát (còn gọi là văn phạm
ngữ cấu), nếu mọi qui tắc r ẻ P đều có dạng r = a đ b , trong đó a , b ẻ ( ồẩ D )* Qui
tắc của văn phạm tổng quát gọi là qui tắc tổng quát Ngôn ngữ do văn phạm tổng quát
sinh ra đ-ợc gọi là ngôn ngữ tổng quát ( L0)
Ví dụ 16 : Văn phạm G = <ồ, D,S,P> với:
ồ = {computer, information, the, swallowed}
D = { S, Np, Vp, N, V, A}
P = {S đ NpVp, Npđ AN, Vpđ VNp, N đ computer, N đ information,
A đ the, V đ swallowed }
G văn phạm loại 0 Ta có đ-ợc một dẫn xuất :
S ╞═ NpVp ╞═ ANVp ╞═ ANVNp ╞═ANVAN ╞═
với kết quả : the computer swallowed the information
1.7.2 Định nghiã : Văn phạm Cảm ngữ cảnh (Context sensitive grammar)
Văn phạm G = <ồ , D ,S,P>đ-ợc gọi là văn phạm cảm ngữ cảnh, nếu mọi qui tắc
r ẻ P đều có dạng r = a đ b , trong đó a ẻ ( ồẩ D ) * , b ẻ ( ồẩ D ) + và ẵaẵÊẵbẵ Qui
tắc của văn phạm cảm ngữ cảnh gọi là qui tắc cảm ngữ cảnh Ngôn ngữ do văn phạm
cảm ngữ cảnh sinh ra đ-ợc gọi là ngôn ngữ cảm ngữ cảnh ( L1)
Ví dụ 17 : Xét văn phạm G = <ồ, D,S,P> 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}
ta có thể kiểm chứng đ-ợc G là văn phạm cảm ngữ cảnh và
L(G) = { anbncn / n ³ 1}
Văn phạm G = <ồ , D ,S,P>đ-ợc gọi là văn phạm phi ngữ cảnh, nếu mọi qui tắc r
ẻ P đều có dạng r = A đ w, trong đó A ẻD , w ẻ ( ồẩ D ) + Qui tắc của văn phạm phi
ngữ cảnh gọi là qui tắc phi ngữ cảnh Ngôn ngữ do văn phạm phi ngữ cảnh sinh ra đ-ợc
gọi là ngôn ngữ phi ngữ cảnh ( L2)
Ví dụ 18 : a Xét văn phạm G = <ồ, D,S,P> với:
ồ = {0,1}
D = { S}
P = { S đ SS, S đ 0S1, S đ 10, S đ 01}
ta có thể kiểm chứng đ-ợc G là văn phạm phi ngữ cảnh và
Trang 9Ng Duc Thuan
L(G) = { aẻ {0,1}* / ẵaẵ³ 2, trong a chữ số 0 bằng chữ số 1}
b Xét văn phạm G = <ồ, D,S,P> với:
ồ = {if , then , else , for , do , a, b, c } {S,A}
D = {S,A}
P = { S đ a, S đ if b then A, S đ if b then A else S,A đ a,
A đ for c do S}
cũng là một văn phạm phi ngữ cảnh
Văn phạm G = <ồ , D ,S,P>đ-ợc gọi là văn phạm chính qui, nếu tập qui tắc P
gồm các qui tắc có dạng A đ aB, A đ a (hoặc A đ Ba, A đ a) trong đó A,B ẻD , a ẻ ồ *
Qui tắc của văn phạm chính qui gọi là qui tắc chính qui Ngôn ngữ do văn phạm chính
qui sinh ra đ-ợc gọi là ngôn ngữ chính qui ( L3)
Ví dụ 19 : Xét văn phạm G = <ồ, D,S,P> với:
ồ = {1}
D = { S,A,B}
P = { S đ 1A, A đ 1B, B đ 1A, A đ 1, S đe}
G là văn phạm chính qui, L(G) = { 12n / n ³ 0 }
Nhận xét : Từ định nghĩa của các loại văn phạm, ta có thể suy ra:
L3Í L2 Í L1 Í L0
Về mặt cấu trúc ngữ pháp của các qui tắc sinh văn phạm phi ngữ cảnh, và văn phạm chính qui là đơn giản , có nhiều ứng dụng trong việc thiết kế ngôn ngữ lập
trình và trong nghiên cứu ch-ơng trình dịch
Chú ý: Những văn phạm theo định nghĩa trên, nếu trong tập qui tắc có
thêm qui tắc S đ e, với S là ký hiệu đầu không có mặt ở vế phải của bất cứ qui tắc
nào, người ta cũng xếp vào văn phạm của loại tương ứng
Ta có thể chứng minh
1.7.5 Bổ đề
Nếu L là ngôn ngữ loại i ( i = 0,1,2,3) thì L ẩ { e }, L - { e } cũng là ngôn ngữ loại
i
Chứng minh:
Ta chứng minh với L là ngôn ngữ loại 1 (với các ngôn ngữ loại 2,3 chứng minh
t-ơng tự)
* Xét L ẩ {e}
- Nếu eẻL thì L ẩ {e}= L Do đó L cùng loại với L ẩ {e}
- Nếu eẽL và giả sử L đ-ợc sinh ra bởi văn phạm G = <ồ, D,S,P> trong đó các
qui tắc của P có dạng r = a đ b , trong đó aẻ (ồẩD)* ,b ẻ (ồẩD)+ và ẵaẵÊẵbẵ
Trang 10Ng Duc Thuan
Theo bổ đề 1.6.2 ta xây dựng G' = <ồ, D',S',P'> t-ơng đ-ơng với G trong đó S' không
xuất hiện ở vế phải của bất kỳ qui tắc nào, hơn nữa G' cũng loại 1 Bây giờ thêm vào P'
qui tắc S' đe, để đ-ợc G'' cũng loại 1 và: L(G'') = L(G') ẩ {e} = L ẩ {e}
* Xét L - {e}
- Nếu eẽL thì L - {e}= L Do đó L cùng loại với L - {e}
- Nếu e ẻ L và giả sử L đ-ợc sinh ra bởi văn phạm G = <ồ, D,S,P>,t-ơng tự
chứng minh trên, theo bổ đề 1.6.2 ta xây dựng đ-ợc G' = <ồ, D',S',P'> t-ơng đ-ơng với
G trong đó S' không xuất hiện ở vế phải của bất kỳ qui tắc nào, hơn nữa G' cũng loại 1
Xây dựng G'' từ G' bằng cách bỏ ra khỏi P' qui tắc S'đe Rõ ràng, L(G'') = L(G') ẩ {e}
= L ẩ {e} và cũng là loại 1
Hệ quả : Do kết quả của bổ đề trên, một đôi khi ta đặc tả các ngôn ngữ loại 1,2
với tập qui tắc có thêm S đe, gọi là ngôn ngữ loại 1,2 mở rộng Sau này mặc định công
nhận mà không nhắc lại điều đó, nghĩa là khi nào trong ngôn ngữ có từ rỗng thì ta sẽ sử
dụng văn phạm mở rộng
1.8 một số tính chất của ngôn ngữ
D-ới đây là một số tính chất của ngôn ngữ đ-ợc nêu d-ới dạng định lý, và các ví
dụ ứng dụng Việc chứng minh các định là khá phúc tạp, trong phạm vi giáo trình này
chỉ nêu ý t-ởng chứng minh nhằm khảo sát các ứng dụng
1.8.1 Định lý : Nếu L1, L2 là hai ngôn ngữ phi ngữ cảnh (hoặc chính qui) thì
L1ẩL2 cũng là ngôn ngữ phi ngữ cảnh (hoặc chính qui)
- Nếu L 1 là ngôn ngữ trên văn phạm phi ngữ cảnh G 1 =<ồ1, D1, S1 , P 1 >
- Nếu L 2 là ngôn ngữ trên văn phạm phi ngữ cảnh G 2 =<ồ2, D2, S 2 , P 2 >
Không mất tính tổng quát có thể giả sử : D1ầ (ồ2 ẩD2 ) = D2 ầ ((ồ1 ẩD1 )= ặ
Xây dựng văn phạm : G = <(ồ1 ẩồ2 , D1 ẩD2 ẩ {S}, S, P>
Trong đó : P bao gồm các qui tắc của P 1 và P 2 trừ các qui tắc S 1 đ e , S 2 đ e , nếu
có thêm vào P các qui tắc S đ a , nếu có S 1 đ a ẻ P 1 ,hoặc S 2 đ a ẻ P 2 thì G là phi ngữ
cảnh và L(G) = L 1 ẩ L 2
1.8.2 Định lý : Nếu L1, L2 là hai ngôn ngữ chính qui thì L1L2 cũng là ngôn ngữ
chính qui
- Nếu L 1 là ngôn ngữ trên văn phạm chính qui G 1 =<ồ1, D1,, S1 , P 1 >
- Nếu L 2 là ngôn ngữ trên văn phạm chính qui G 2 =<ồ2, D2, S 2 , P 2 >
Không mất tính tổng quát có thể giả sử : D1ầ (ồ2 ẩD2 ) = D2 ầ ((ồ1 ẩD1 )= ặ
- Tr-ờng hợp L 1 và L 2 không chứa e Ta xây dựng văn phạm G nh- sau:
Xây dựng văn phạm : G = <(ồ1 ẩồ2 , D1 ẩD2 , S 1 , P>
Trong đó : P bao gồm các qui tắc của P 1 và P 2 trừ các qui tắc dạng A đ a,
(A ẻD11 , a ẻồ1 ) Đồng thời thêm vào qui tắc A đ aS 2 , nếu có A đ a ẻ P 1 ,
G là văn phạm chính qui và L(G) = L 1 L 2