Tải bản đầy đủ (.pdf) (11 trang)

lý thuyết ngôn ngữ hình thức chương 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (210.66 KB, 11 trang )

Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 1 Nguyễn Đức Thuần

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.
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 2 Nguyễn Đức Thuần


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 : v
0
= e, v
1

= v, v
2
= vv, v
i
= vv
i-1
, "i>0

Đảo ng-ợc một xâu u = a
1
a
2
a
3
a
n
ký hiệu là u
r
= a
n
a
n-1
a
1


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 ồ
*
đIợ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ữ L
1
trên bộ chữ cái ồ
1
, và ngôn ngữ L
2

trên bộ
chữ cái ồ
2,
ký hiệu ngôn ngữ L
1
L
2
là ngôn ngữ {vw/ v ẻ L
1
, w ẻ L
2
} 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 : L
1
(L
2
L
3
) = (L
1
L
2
)L
3.

b. Không có tính giao hoán : L
1
L
2
# L
2
L
1
.
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:
L
1
ẩ(L
2
L
3
) # L
1
L
2
ẩ L
1
L
3

f. Phép ghép tiếp có tính phân bố đối với phép hợp:
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 3 Nguyễn Đức Thuần


L
1
(L
2
ẩL
3
) = L
1
L
2
ẩ L
1
L
3

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:
L
1
(L
2
ầ L
3
) # (L
1
L
2
) ầ (L
1

L
3
)
L
1
ầ (L
2
L
3
) # (L
1
ầL
2
)(L
1
ầL
3
)

Bao đóng của 1 ngôn ngữ L : Ký hiệu L
*
là ngôn ngữ

L
*
= L
0
ẩL
1
ẩL

2
ẩL
3
ẩ . . . = ẩ L
i
, " i 0
trong đó L
i
đ-ợc định nghĩa đệ qui nh- sau:

1. L
0
= {e}
2. L
i
= LL
i-1
với i 1.

Bao đóng dIơng của 1 ngôn ngữ L : Ký hiệu L
+


L
+
= ẩ L
i
, " 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:
L
1
= { }
L
2

= {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:

L
3
= {a
j
/ j là một số nguyên tố}
L
4
= { a
i
b
j
/ i j 0 }
L
5
= { 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ữ.
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 4 Nguyễn Đức Thuần

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:

c
i
wc
j
, 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:

L
2
= {a,b,c}
*
(I.1)

Và vì e thuộc L, nên L
i
= {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 L
2
.

- Vì x= e đ x thuộc L
2
.
Nếu a là tiền tố của x đ x thuộc L đ x thuộc L
2

(chú ý L

2
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 L
2
. (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 = c
i
ybz với i 0.
và các từ y và z sao cho b không thuộc ALPH(z). Cả 2 : c
i

yb và z lại thuộc L đ x thuộc
L
2
. (đ.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 đ a
i
b
i
ẻ L
ị {a
i
b
i
/ 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
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 5 Nguyễn Đức Thuần

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 xy $(u,v) ẻP,
x
1
, x
2
ẻ ồ* : x = x
1
ux
2,
y=


x
1
vx
2
.

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 $ w
0
, w
1
, , w
n
ẻ ồ*.

x=w
0
w
1
w
n
= y
Chú ý : Quan hệ 2 ngôi là bao đóng truyền ứng của vì thoả :
1. " s ẻồ* : s s
2. " s
1
, s
2
, s
3

ẻồ* : s
1
s
2
, s
2
s
3
ị s
1
s
3

3. " s
1
, s
2
ẻồ* : s
1
s
2
, 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 : L
s
(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à:
L
s
(RW,{X}) ầ {a,b}
*

trong đó: RW = ( {a,b,X},{X đ e, X đ aXb})

Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 6 Nguyễn Đức Thuần

- Ngôn ngữ ở ví dụ 9 đ-ợc biểu diễn bởi hệ viết lại là:
L
d
(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) = {a
n
b
n
/ nẻ N, n1}


- 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) = {a
n
b
n
/ nẻ N, n1}
Cho văn phạm G' = <ồ', D',S',P'>
với ồ' = {a,b}, D' ={S}, P'={S đ aSb, S đab}
L(G') = {a
n
b
n
/ nẻ N, n1}
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 7 Nguyễn Đức Thuần


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') = { a
n
b
n
c
n
/ 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 w
1
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:

Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 8 Nguyễn Đức Thuần

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
(L
0
)
.


Ví dụ 16 : Văn phạm G = <ồ, D,S,P> với:
ồ = {computer, information, the, swallowed}
D = { S, N
p
, V
p
, N, V, A}
P = {S đ N
p
V
p
, N
p
đ AN, V
p
đ VN
p
, 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 N
p
V
p
ANV
p
ANVN
p
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
(L
1
)
.

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) = { a
n
b
n
c
n

/ n 1}.

1.7.3 Định nghiã : Văn phạm Phi ngữ cảnh (Context free grammar)
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
(L
2
)
.

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à
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 9 Nguyễn Đức Thuần

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.

1.7.4 Định nghiã : Văn phạm chính qui (Regular grammar)
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
(L
3
)
.


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) = { 1
2n
/ 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:


L
3
L
2
L
1
L
0 .


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, ngIời ta cũng xếp vào văn phạm của loại tIơ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ẵ.
Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 10 Nguyễn Đức Thuần

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 L
1
, L
2
là hai ngôn ngữ phi ngữ cảnh (hoặc chính qui) thì
L

1
ẩL
2
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
, D
1
, S
1
, P
1
>
- Nếu L
2
là ngôn ngữ trên văn phạm phi ngữ cảnh G
2
=<ồ
2
, D
2
, S
2
, P
2

>

Không mất tính tổng quát có thể giả sử : D
1


(ồ
2

D
2
) = D
2


((ồ
1

D
1
)=


Xây dựng văn phạm : G = <(ồ
1


2
, D
1


D
2

{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 L
1
, L
2
là hai ngôn ngữ chính qui thì L
1
L
2
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
, D
1
,, S
1
, P
1
>
- Nếu L
2
là ngôn ngữ trên văn phạm chính qui G
2
=<ồ
2
, D
2
, S
2
, P
2
>

Không mất tính tổng quát có thể giả sử : D
1



(ồ
2

D
2
) = D
2


((ồ
1

D
1
)=



- 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
, D
1

D
2
, 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

D
1

1
, 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
.

Ng Duc Thuan
Lý Thuyết Ngôn ngữ Hình thức & Ôtômat 11 Nguyễn Đức Thuần

- Tr-ờng hợp L
1
hoặc L
2
chứa
e
. Ta xây dựng văn phạm G nh- sau:
Giả sử L
1
chứa e , đặt L
3
= L
1

- {e}, L
3
là ngôn ngữ chính qui. Khi đó ta còn có:

L
1
L
2
= (L
3
ẩ {e}).L
2
= L
3
L
1
ẩ L
2
là các ngôn ngữ chính qui.

- Tr-ờng hợp L
1
và L
2
chứa
e
. Ta xây dựng văn phạm G nh- sau:
Đặt L
3
= L

1
- {e}, L
4
= L
2
- {e}, L
3
, L
4
là các ngôn ngữ chính qui. Khi đó ta còn
có:

L
1
L
2
= (L
3
ẩ {e}).(L
4
ẩ {e}) = L
3
L
4
ẩ L
3
ẩ L
4
ẩ {e}
là ngôn ngữ chính qui (do mỗi thành phần là chính qui).


Ví dụ 20 : L
1
= { 0
n
/ n 1 } và L
2
= {1
m
/ m 1}

Các ngôn ngữ này lần l-ợt sinh ra bởi các văn phạm sau:

G
1
= <{0}, {S
1
}, S
1
, { S
1
đ 0S
1
, S
1
đ0}>
G
2
= <{0}, {S
2

}, S
2
, { S
2
đ 1S
2
, S
2
đ1}>

Ngôn ngữ L = L
1
L
2
= { 0
n
1
m
/ n 1, m 1} đ-ợc sinh ra bởi văn phạm sau:

G = <{0,1}, {S
1
,S
2
}, S
1
, { S
1
đ 0S
1

, S
1
đ0S
2
, S
2
đ 1S
2
, S
2
đ1}>.

1.8.3 Định lý : Nếu L ngôn ngữ chính qui thì L
*
cũng là ngôn ngữ chính qui.

Nếu văn phạm sinh ra L là G=<

,
D
,, S, P'>
Ta xây dựng văn phạm G=<ồ, D,, S, P>với :
P = P' \ { S
đe
} ẩ {Ađ aS / Ađa

P'}
có thể chứng minh L(G) = L*\ {
e
}.


Ví dụ 21 : Tìm văn phạm sinh ra ngôn ngữ sau :

L = { (010)
n
/ n 1}
Ta thấy rằng L là lặp của L
1
= {010} trừ đi e. Hay nói cách khác L = L
*
-
{e}. Do L
1
có thể sinh ra bởi văn phạm :

G' = <{0,1},{S,A,B},S, {Sđ 0A, Ađ1B, B đ0}>
nên L đ-ợc sinh ra bởi:
G = <{0,1},{S,A,B},S, {Sđ 0A, Ađ1B, B đ0, B đ0S}>

1.8.4 Định lý : Mọi ngôn ngữ hữu hạn là ngôn ngữ chính qui.

Chứng minh: mọi ngôn ngữ 1 từ đều là chính qui. Nếu L là một ngôn ngữ hữu
hạn thì có thể phân tích bằng hợp hữu hạn các ngôn ngữ 1 từ, do dó L chính qui.







×