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

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

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 (209.7 KB, 18 trang )

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


Ch-ơng III

văn phạm phi ngữ cảnh

Trong ch-ơng này chúng ta sẽ khảo sát NN Phi ngữ cảnh, là ngôn ngữ khá gần với
ngôn ngữ tự nhiên và có vai trò quan trọng nhất trong việc ứng dụng xây dựng các ngôn
ngữ lập trình và ch-ơng trình dịch.

3.1 Xuất xứ và Cây suy dẫn của Văn phạm Phi ngữ cảnh:

3.1.1 Xuất xứ:

Xuất xứ của ngôn ngữ phi ngữ cảnh là việc mô tả ngôn ngữ tự nhiên. Cấu trúc câu
của ngôn ngữ tự nhiên đ-ợc định nghĩa bằng các qui tắc ngữ pháp. Ví dụ, câu của ngôn
ngữ tự nhiên (tiếng việt) ở trên bây giờ có thể đ-ợc định nghĩa bởi các qui tắc văn phạm
sau:

1. <Câu > đ <Chủ ngữ> <Vị ngữ>
2. <Chủ ngữ > đ <Danh từ> <Tính từ>
3. <Danh từ > đ gà
4. <Tính từ > đ trống
5. <Vị ngữ > đ <Động từ> <Bổ ngữ>
6. <Động từ> đ ăn
7. <Bổ ngữ > đ <Danh từ>
8. <Danh từ> đ thóc
Một câu đúng ngữ nghĩa đ-ợc suy dẫn từ văn phạm trên :
gà trống ăn thóc


Tuy nhiên, với những qui tắc ngữ pháp của ngôn ngữ phi ngữ cảnh nh- trên, sẽ dẫn
đến những sai sót về mặt ngữ nghĩa của ngôn ngữ tự nhiên, ví dụ: "thóc trống ăn gà".
Nh-ng với nhu cầu biểu diễn các ngôn ngữ lập trình, ng-ời ta nhận thấy văn phạm phi ngữ
cảnh có một khuôn khổ thích hợp. Những nhà Tin học đã sử dụng dạng chuẩn Backus-
Naus (BNF) để diễn tả cú pháp của các ngôn ngữ lập trình cấp cao (nh- Algol, Pascal, )
chính là một biến t-ớng của văn phạm phi ngữ cảnh; với dấu ::= đ-ợc dùng thay cho đ.
Chẳng hạn, để định nghĩa một biểu thức số học ng-ời ta viết:

<biểu thức> ::= <biểu thức> + <biểu thức>
<biểu thức> ::= <biểu thức> * <biểu thức>
<biểu thức> ::= (<biểu thức>)
<biểu thức> ::= db

Với các qui tắc đó, ta sinh đ-ợc mọi biểu thức số học có chứa các toán tử +,* cùng
các toán hạng, biểu diễn bởi ký hiệu db, ngăn cách bởi các cặp vòng đơn ( và ). Chẳng hạn
biểu thức (db+db) *db đ-ợc sinh ra theo một quá trình diễn tả bởi cây sau đây:




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


<biểu thức>


<biểu thúc> * <biểu thức>



( <biểu thức> ) db


<biểu thức> + <biểu thức>


db db


3.1 Hình sản sinh một xâu

Việc nghiên cứu các văn phạm phi ngữ cảnh tạo ra một cơ sở lý luận để
biểu diễn ngôn ngữ lập trình, việc tìm kiếm các giải thuật phân tích cú pháp vận dụng
trong các ch-ơng trình dịch và cho nhiều ứng dụng khác cho việc xử lý xâu.

3.1.2 Cây suy dẫn trong văn phạm phi ngữ cảnh:

3.1.2.1 Định nghĩa : Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>. Cây suy dẫn
trong văn phạm phi ngữ cảnh là một cây đ-ợc thành lập từ một suy dẫn nào đó trong G.
Mỗi xâu x ẻồ* mà S
G
x sẽ t-ơng ứng với một cây suy dẫn nào đó. Xâu x đ-ợc gọi là
kết quả của cây suy dẫn.
Cây suy dẫn trong văn phạm phi ngữ cảnh G = <ồ,D,S,P> là một cây thỏa mãn 5
yêu cầu sau:

1. ở mỗi đỉnh đ-ợc gán 1 nhãn. Nhãn gán ở đỉnh là các ký hiệu trong tập
ồẩDẩ{e}. Gốc của cây đ-ợc gán nhãn là S.
2. Mỗi đỉnh trong đ-ợc gán nhãn là một ký hiệu nào đó trong D.
3. Mỗi đỉnh ngoài (lá của cây) đ-ợc gán nhãn là một ký hiệu trong tập ồẩ{e}.

4. Nếu đỉnh m đ-ợc gán nhãn là A ẻD, còn các đỉnh n
1
, n
2
, , n
k
là các con của
đỉnh m theo thứ tự từ trái sang phải, và đ-ợc gán nhãn X
1
, X
2
, , X
k
t-ơng ứng thì A đ
X
1
X
2
X
k
là một qui tắc trong P của văn phạm G.
5. Nếu nút n mang nhãn là e, thì n phải là một lá, và là nút con duy nhất của nút
mẹ nó.
Nếu đọc tất cả nhãn ở các lá (lá đ-ợc gán nhãn trong tập ồẩ{e} theo thứ tự từ trái
qua phải ta sẽ nhận đ-ợc một xâu nào đó. Xâu đó là một phần tử trong L(G)

Ví dụ 1: Cho văn phạm

G = < {+,-,*,0,1,2,3,4,5,6,7,8,9,z},{A,B,C,D,E,F,G}, S,P>



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


P : S đ Bẵ BzD
B đ CE
C đ +ẵ-ẵe
D đ CF
E đ F*ẵF*Fẵ*F
F đ GẵFG
G đ 0 ẵ1ẵ2ẵ3ẵ ẵ9

Ta có thể nhận đ-ọc cây dẫn xuất:

S


B z D

C E C F

e F * F - F G

F G F G G 3

G 4 G 5 1

3 2


Ví dụ 2: Xét Văn phạm phi ngữ cảnh sau:
G = <{if, then, else, for, do, a,b,c}, {S,A},S, {Sđ if b then A, Sđ if b
then A else S, Sđa, Ađ for c do S, Ađa}>

Trong văn phạm này có 2 cây cho kết qủa cùng một câu :
!"#"$%&'"!()"*"+(" !"#"$%&'","& &",
















s

b if

then
a

for


c do

S
if

b S then A

else

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





















Chú ý :
- Nh- vậy có thể có nhiều kết quả, ứng với các cây suy dẫn khác nhau cho cùng
một văn phạm phi ngữ cảnh.
- ứng một kết quả thì có thể có nhiều cây suy dẫn khác nhau.
- Ta gọi cây con của một cây suy dẫn là một nút nào đó, cùng với các nút "con,
cháu " của nó, các nhánh nối chúng và các nhãn kèm theo. Cây con cũng giống cây suy
dẫn, chỉ khác là nhãn của gốc không nhất thiết là ký hiệu đầu S. Nếu nhãn của gốc cây
con là A, thì gọi đó là một A-cây.

3.1.3 Mối liên quan giữa suy dẫn và cây suy dẫn:

3.1.3.1 Định lý: Cho G = <ồ,D,S,P> là một văn phạm phi ngữ cảnh, thì S a khi
và chỉ khi có 1 cây suy dẫn trong G mà kết quả là a.

Chứng minh: Ta sẽ chứng minh một mệnh đề rộng hơn:
"AẻD, A a khi và chỉ khi có 1 A-cây trong G mà kết quả là a.
,.(Điều kiện đủ): Giả sử a là kết quả của 1 A-cây. Ta chứng minh bằng qui nạp
theo số nút trong của cây là A a:
- Nếu chỉ có một nút trong, thì A-cây có dạng nh- hình:
A


X
1
X
2

. . . X
n


Hình 3.2 A- cây với chỉ 1 nút trong

Bấy giờ, a= X
1
X
2
X
n
và Ađ a là một sản xuất trong P bởi định nghĩa của cây
suy dẫn. Vậy A a:
S
a
s

b if

then
else

A

a
for

c do


S
if

b then A

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


- Giả thiết rằng kết luận là đúng đối với mọi cây có số nút trong không quá k-1,
với k>1. Cho a là kết quả của một A-cây với k nút trong. Xét các con của gốc A. Chúng
không thể đều là lá cả. Giả sử các nhãn của chúng kể từ trái qua phải là X
1
, X
2
, ,X
n
, với
n1. Vậy thì Ađ X
1
X
2
X
n
là một sản xuất trong P.
Nếu nút mang nhãn X
i
không phải là lá, nó sẽ là gốc của một cây con với một kết
quả là a
i

nào đó. Nếu nút mang nhãn X
i
là lá, thì cho a
i
= X
i
. Dễ thấy, nếu i< j, nút j và
mọi nút "con, cháu" của nó là ở bên trái nút i. Vậy thì a = a
1
a
2
a
n
. Vì một cây con thực
sự của cây phải có ít nút hơn trong cây, vậy giả thiết qui nạp là đúng với mọi X
i
-cây với
các nút i không là lá, tức là có X
i
a
i
. Còn các nút là lá thì a
i
= X
i
, vậy cũng có X
i

a
i.

Ghép các dãy suy dẫn bộ phận lại với nhau ta có:
A X
1
X
2
X
n
a
i
X
2
X
3
X
n
a
i
a
2
X
3
X
n
a
i
a
2
a
3
a

n
= a

Vậy A a. ( Chú ý suy dẫn này chỉ là 1 trong nhiều suy dẫn có thể đ-ợc thành
lập từ cây suy dẫn đã cho).

#. (Điều kiện cần) Bây giờ giả sử A a. Ta cần chứng minh rằng có A-cây với
kết quả là a.
- Nếu A a chỉ với một b-ớc suy dẫn, thì A a là một sản xuất trong P và ta
có A cây nh- hình 3.2 với kết quả là a.
- Giả sử với mọi biến A, nếu có A a là một suy dẫn ít hơn k b-ớc, thì có 1 A-
cây với kết quả là a. Xét suy dẫn A a là k b-ớc. Giả sử trong b-ớc thứ nhất sản xuất
đ-ợc dùng là A đ X
1
X
2
X
n
tức là A X
1
X
2
X
n
a. Thế thì mọi ký hiệu trong a
phải hoặc là trùng với một X
i
nào đó, hoặc là đ-ợc suy dẫn từ một X
i
. hơn nữa, do các sản

xuất đều có dạng Bđa chỉ cho phép thay thế từng biến 1, cho nên nếu i<j, thì toàn bộ các
ký hiệu sinh ra bởi X
j
đều ở bên trái toàn bộ các ký hiệu sinh ra bởi X
j
. Bởi vậya phải có
dạng a
1
a
2
a
n
, trong đó X
i
a
i
, i =1,2, ,n, và đọ dài các suy dẫn này là không, nếu X
i

ký hiệu cuối, nếu không độ dài suy dẫn đó >0, nh-ng không quá k-1. Nh- vậy bởi giả
thiết qui nạp, khi X
i
là một biến thì có X
i
- cây với kết quả là a
i
. Gọi cây đó là T
i
.
Bây giờ thì ta có thể thành lập A-cây với kết quả là a nh- sau:

Tr-ớc hết dựng một A-cây với n lá có nhãn X
1
, X
2
, ,X
n
; tiếp đó, mỗi nút có nhãn X
i
với
X
i
là biến, sẽ đ-ợc thay bởi cây T
i
t-ơng ứng; còn khi X
i
là ký hiệu cuối, thì không cần
thay gì nữa. kết quả này kết thúc chứng minh.










Hình 3.3 A- cây




A

X
1
X
3
X
2
X
n
X
n-1

cuối

cuối

T
2

T
3

T
n

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



3.1.4 Suy dẫn bên trái nhất, suy dẫn bên phải nhất; Sự nhập nhằng:

3.1.4.1 Định nghĩa : Suy dẫn bên trái nhất (nói gọn là suy dẫn trái), nếu ở mỗi
b-ớc suy dẫn, biến đ-ợc thay thế là biến nằm ở bên trái nhất trong dạng câu. T-ơng tự,
suy dẫn bên phải nhất (nói gọn là suy dẫn phải), nếu ở mỗi b-ớc suy dẫn, biến đ-ợc thay
thế là biến nằm ở bên phải nhất trong dạng câu.

Mỗi cây suy dẫn với kết quả a, t-ơng ứng với nhiều suy dẫn S a. Chúng có thể
chỉ khác nhau bởi thứ tự áp dụng các sản xuất.
L-u ý, với cùng một xâu aẻ L(G), có thể có nhiều cây suy dẫn khác nhau, có
cùng kết quả là a. Nói khác hơn xâu a có thể phân tích cú pháp theo nhiều cách khác
nhau.

3.4.1.2 Sự nhập nhằng trong ngôn ngữ phi ngữ cảnh:

Định nghĩa: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, ta nói văn phạm G là
nhập nhằng nếu tồn tại một xâu w là kết quả của 2 cây suy dẫn khác nhau trong G.
Ngôn ngữ do văn phạm G sinh ra là ngôn ngữ nhập nhằng nếu G là văn phạm
nhập nhằng.
Ví dụ 3: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>,
ồ = {+,a,*}, D={S}, P = {SđS+S, SđS*S, Sđ a}
ở đây ký hiệu + là phép cộng, * là phép nhân.
Xâu a+a*a là kết quả của cây suy dẫn (thực hiện phép * tr-ớc)
Suy dẫn bên trái nhất ứng với cây suy dẫn là :
S S*S S+S*S a+S*S a+a*S a+a*a










Xâu a+a*a là kết quả của cây suy dẫn (thực hiện phép + tr-ớc)
Suy dẫn bên phải nhất ứng với cây đó là:

S S*S S*a S+S*a S+a*a a+a*a









S

S

S

S

S

a


a

a

+

*

S

S

S

S

S

a

+

*

a

a

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



Nh- vậy xâu a+a*a là kết quả của 2 cây suy dẫn khác nhau. Vì vậy văn phạm
trong ví dụ này là văn phạm nhập nhằng.

Để khắc phục sự nhập nhằng của G đó, ta có thể :
- Hoặc là qui định rằng các phép cộng và nhân luôn luôn đ-ợc thực hiện theo thứ
tự từ trái qua phải (trừ khi gặp vòng đơn). Qui định đó đ-ợc thể hiện trong G
1
d-ới đây,
t-ơng đ-ơng với G

nh-ng không còn nhập nhằng nữa:

S đ S+TẵS*TẵT
T đ (S)ẵa

- Hoặc là qui định rằng, khi không có vòng đơn ngăn cách, thì phép nhân * đ-ợc
-u tiên tr-ớc phép cọng +. Qui định đó đ-ợc thể hiện trong văn phạm G
2
d-ới đây, cũng
t-ơng đ-ơng với G mà không còn nhập nhằng nữa.

S đ S + T ẵT
T đ T*F ẵF
F đ (S)ẵa.

3.2 Giản l-ợc các văn phạm phi ngữ cảnh:

Trong văn phạm phi ngữ cảnh có thể có nhiều yếu tố thừa, ví dụ có những ký hiệu

không hề tham gia vào quá trình sinh các ngôn ngữ, hoặc có những qui tắc dạng A đ B
chỉ làm mất thời gian trong quá trình hình thành các xâu của ngôn ngữ. Vì lẽ đó cần loại
bỏ những yếu tố của d- thừa không có ích trong việc sinh ngôn ngữ, sao cho việc loại bỏ
đó không làm ảnh h-ởng tới quá trình sinh ngôn ngữ. Điều đó có nghĩa là chỉ giữ lại các
ký hiệu và các qui tắc có ích trong văn phạm G mà chúng thực sự là cần thiết trong quá
trình sinh ngôn ngữ mà thôi.

3.2.1 Ký hiệu có ích và ký hiệu thừa:

Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, X đ-ợc gọi là ký hiệu có ích, nếu tồn
tại suy dẫn S Xò w, ở đây ,ò ẻ(ồẩD)*, X ẻồẩD và wẻồ*.

Nếu ký hiệu X không thỏa mãn điều kiện trên thì X gọi là ký hiệu thừa. Nh- vậy
X là ký hiệu thừa nếu từ X không thể dẫn ra một xâu w ẻồ*. Ký hiệu X có tính chất nh-
vậy còn đ-ợc gọi là ký hiệu vô sinh. Nếu từ ký hiệu ban đầu S không dẫn đ-ợc một xâu
nào có chứa ký hiệu X thì ta nói X là ký hiệu không đến đ-ợc. Nh- vậy một ký hiệu thừa
nếu nó là ký hiệu vô sinh hoặc là không đến đ-ợc.

3.2.2 Bổ đề 1 (loại ký hiệu vô sinh)
Cho một VPPNC G = <ồ,D,S,P>, với L(G) ạặ. Ta có thể xây dựng đ-ợc văn
phạm PNC G' = <ồ,D',S,P'>, t-ơng đ-ơng với G, sao cho mỗi A ẻD' có một xâu w ẻồ*
để A
G
w.

Chứng minh: Duyệt tập sản xuất P của G và kết nạp dần các biến vào D' nh- sau:
- Nếu A đ w là một sản xuất, với AẻD,wẻồ* thì kết nạp A vào D'
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 36 Nguyễn Đức Thuần



- Nếu A đ X
1
X
2
X
n
là qui tắc trong P, mà X
i
ẻồ hoặc X
i
là biến đã đ-ợc kết nạp
vào D' thì đ-a A vào D'.
Quá trình xây dựng D' theo giải thuật sau:

/&0 '
1) D cũ := ặ;
2) D mới := {AẵAđ w, với wẻồ*};
3) 1% -& D cũ ạ D mới +(
#&0 '
4) D cũ := D mới;
5) D mới := D cũ ẩ {AẵA đ a với aẻ(ồẩDcũ)* }
&'+2"
6) D' := D mới;
&'+3
Ta thấy thuật toán là dừng vì P là hữu hạn. Thiết lập P' gồm các sản xuất của P mà
các ký hiệu trong đó thuộc về D' ẩồ.
Ngoài ra: nếu A đ-ợc đ-a vào D mới ở các dòng 2) hay 5) thì A suy dẫn ra một
xâu các ký hiệu kết thúc.
Ng-ợc lại ta chứng minh rằng nếu A suy dẫn ra một xâu các ký hiệu kết thúc, thì

A tr-ớc sau sẽ đ-ợc đ-a vào D mới. Chứng minh điều đó bằng qui nạp theo độ dài của suy
dẫn A w.

Cơ sở qui nạp:
- Nếu độ dài suy dẫn là 1, thì A đw là một sản xuất, và A đ-ợc kết nạp vào D mới
ở b-ớc 2).
- Giả sử A X
1
X
2
X
n
w bởi suy dẫn k b-ớc. Vậy có thể viết w = w
1
w
2
w
n
,
trong đó X
i
w
i
, với 1 Ê i Ê n, bởi suy dẫn không đến k b-ớc.Theo giả thiết qui nạp, các
X
i
là các b-ớc tr-ớc sau đ-ợc kết nạp vào D mới. Ngay sau khi X
i
đ-ợc kết nạp vào D mới
ở b-ớc 5), trở lại dòng 3) ta có Dcũ ạ D mới vì X

i
cuối cùng đó ch-a đ-ợc đ-a vào D cũ.
Do đó vòng lặp While đ-ợc thực hiện thêm 1 lần nữa, và A sẽ đ-ợc kết nạp vào D mới ở
dòng 5).
Bây giờ chứng minh L(G') = L(G):
- Hiển nhiên L(G') L(G).
- Ng-ợc lại giả sử có w trong L(G) nh-ng không ở trong L(G'). Vậy mỗi suy dẫn
của w trong G đều phải có dùng một biến trong D-D' hoặc có dùng một sản xuất trong P-P'
. Nh- vậy tồn tại 1 biến D-D' cho phép suy dẫn ra một xâu các ký hiệu cuối. Đó là mâu
thuẫn. Vậy L(G) L(G').(đ.p.c.m)

3.2.3 Bổ đề 2 (loại ký hiệu không đến đ-ợc)
Cho một VPPNC G = <ồ,D,S,P>, ta có thể xây dựng đ-ợc văn phạm phi ngữ cảnh
G' t-ơng đ-ơng với G, ở đây G' = <ồ',D',S,P'>, sao cho mỗi X ẻồ'ẩD' đều tồn tại
a,bẻ(ồ'ẩD')* để S aXb .

Chứng minh: ,3 Xây dựng tập ồ' và D' nh- sau:
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 37 Nguyễn Đức Thuần


Đ-a ký hiệu S vào D'. Nếu một biến A đã đ-ợc kết nạp vào D' và A đa, ở đây
aẻồ'ẩD' thì ta kết nạp các ký hiệu ch-a kết thúc trong a vào D', còn các ký hiệu kết thúc
trong a thì kết nạp vào ồ'.

Thủ tục kết nạp trên sẽ ngừng khi không còn bổ sung thêm đ-ợc bất kỳ ký hiệu
nào nữa vào các tập ồ' và D'.

#3 Tập các qui tắc P' đ-ợc xây dựng nh- sau:
P' bao gồm mọi qui tắc trong P mà các ký hiệu thuộc tập ồ'ẩD'. Với cách xây

dựng đó ta có L(G) = L(G'), trong đó G' gồm các ký hiệu đến đ-ợc.

Từ 2 bổ đề trên, ta có định lý:

3.2.4 Định lý : Mọi ngôn ngữ PNC không rỗng đều có thể đ-ợc sinh ra từ một văn
phạm phi ngữ cảnh không có ký hiệu thừa.

Ví dụ 4: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, ở đây ồ={a}, D= {S,A,B},
P= {SđAB, Sđa, Ađa} văn phạm sinh ra ngôn ngữ L(G) = {a} ( tập gồm một xâu a).

Văn phạm phi ngữ cảnh G' nhận đ-ợc từ G bằng cách áp dụng các kết quả trên là
văn phạm không có ký hiệu thừa có dạng nh- sau:

G' = <ồ',D',S,P'>, với ồ'= {a}, D'={S}, P' = {S đ a}.
Rõ ràng L(G') = L(G)= {a}.

4%5"6"7"8 9*":;"+<'0"*:*"="#>"?@""$)A'"?B"CDE"+F'0"GGHG4"$I"JK$"8HHG4"
L%M'0"*N"L6"% 9O"$%I,P"'QO":;"+<'0"$%&("$%R"$F"#>"?@"="P")S "?Q'"#>"?@"TP"$%U"L%M'0"
'%V$"$% Q$"-(W "#X"?YZ*"%Q$"*:*"L6"% 9O"$%I,.

Ví dụ 5: Xét văn phạm :
S đ ABẵa
A đ a
áp dụng bổ đề 1, B bị loại cùng với sản xuất S đ AB.
áp dụng bổ đề 2 cho văn phạm
S đ a
A đ a
ta thấy chỉ S và a là đến đ-ợc. Vậy văn phạm t-ơng đ-ơng không chứa ký hiệu
thừa là <{a}, {S}, S ,{Sđa} >.


Nếu tiến hành theo thứ tự ng-ợc lại, áp dụng bổ đề 2 tr-ớc ta không loại đ-ợc ký
hiệu nào, sau đó áp dụng bổ đề 1, ta loại B cùng S đ AB, Vậy văn phạm còn:
<{a},{S,A}, S , {Sđa, Ađa}> và vẫn chứa các ký hiệu vô ích A.

[3=3\ Các
e
- sản xuất: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>. Nếu trong P
có sản xuất A đe, AẻD thì ta nói trong G có e-sản xuất. Nếu e ẻL(G), ta không thể loại
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 38 Nguyễn Đức Thuần


hết mọi e-sản xuất đ-ợc. Ng-ợc lại eẽL(G), ta có thể loại bỏ toàn bộ e-sản xuất khỏi
L(G).

3.2.5.1. Định lý: Giả sử G = <ồ,D,S,P> là văn phạm phi ngữ cảnh và L(G) là ngôn
ngữ của văn phạm G. Khi đó L\{e} là ngôn ngữ phi ngữ cảnh L(G') với văn phạm PNC G'
= <ồ',D',S,P'> không chứa các ký hiệu vô ích và không chứa các e-sản xuất.

Chứng minh: Do định lý 3.2.4 không mất tính tổng quát, có thể xem L(G) không
chứa các ký hiệu vô ích. Ta chỉ xét đến các e-sản xuất.
Ký hiệu A ẻD đ-ợc gọi là ký hiệu triệt tiêu nếu tồn tại dẫn xuất A e. Ta có thể
xác định các ký hiệu triệt tiêu bằng ph-ơng pháp sau:
a. Nếu Ađe là một sản xuất trong P thì A là ký hiệu triệt tiêu.
b. Nếu B đa là một sản xuất trong P, mà a mọi ký hiệu trong a đều đã biết là
triệt tiêu đ-ợc, thì B cũng triệt tiêu đ-ợc; lặp lại quá trình đó cho đến khi không tìm thêm
đ-ợc ký hiệu triệt tiêu nào nữa.
Tập P' đ-ợc xác định nh- sau:
Nếu A đ X
1

X
2
X
n
là một sản xuất trong P thì ta đ-a vào P' các sản xuất có dạng
A đa
1
a
2
a
3
a
n
, trong đó:
1. Nếu X
i
là ký hiệu không triệt tiêu thì đặt a
i
= X
i
.
2. Nếu ký hiệu X
i
là ký hiệu triệt tiêu thì a
i
= e hoặc a
i
= X
i
.

3. Nếu mọi ký hiệu X
i
, là ký hiệu triệt tiêu thì thay a
i
= e với mọi i = 1,2, ,n (loại)
D = {Aẻ D, A có tham gia vào các sản xuất của PƯ
Khi đó ta có thể kiểm chứng L(G') = L(G)- {e}. (Việc kiểm tra xem nh- bài tập)

Ví dụ 6: Xét văn phạm phi ngữ cảnh G có các sản xuất sau:
S đ AB
A đ aAẵe
B đ bBẵe
áp dụng cách thành lập P trong định lý:
- từ sản xuất S đ AB, ta có S đ ABẵAẵB
- từ sản xuất A đ aA, ta có A đ aAẵa
- từ sản xuất B đ bB, ta có B đ bBẵb
L-u ý rằng văn phạm mới G' không sản sinh e, trong khi G lại sản sinh e. vậy
muốn có một văn phạm t-ơng đ-ơng G, thì phải bổ sung S đe vào G'.

3.2.6 Các sản xuất đơn: (Unit Production) Cho văn phạm phi ngữ cảnh G =
<ồ,D,S,P>. Nếu sản xuất trong P có dạng có dạng A đ B, ở đây A,B ẻD thì ta nói A đ B
là sản xuất đơn. Sản xuất đơn có tác dụng làm kéo dài quá trình sinh ra ngôn ngữ, vì vậy
ta sẽ tìm cách loại sản xuất đơn mà không làm ảnh h-ởng tới quá trình sinh ra ngôn ngữ
của văn phạm đã cho.

Chú ý : Sản xuất Ađ a với A ẻD và aẻồ không là sản xuất đơn.

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



3.2.6.1 Định lý : Mọi ngôn ngữ phi ngữ cảnh không chứa xâu e đều có thể sinh ra
từ một văn phạm phi ngữ cảnh không có ký hiệu thừa , các e-sản xuất, và các sản xuất
đơn.

Chứng minh : Giả sử G = <ồ,D,S,P> là văn phạm phi ngữ cảnh và L(G) là ngôn
ngữ của văn phạm G. Không mất tính tổng quát ta có thể giả sử G không có ký hiệu thừa,
không có các e-sản xuất . Ta xây dựng văn phạm phi ngữ cảnh G* = <ồ,D*,S,P*> sinh ra
ngôn ngữ L\{e}=L(G*) trong đó G* không có ký hiệu thừa, không có các e-sản xuất, và
các sản xuất đơn.

Đặt D* = D. Xây dựng P* nh- sau:

Đ-a tất cả các sản xuất không đơn của P vào P*.

Nếu trong P có Ađ B, với A,B ẻD' khi đó sẽ tồn tại dẫn xuất
S aAbaBb awb, ở đây abẻ(ồẩD)*,wẻồ* (do D gồm các ký
hiệu không thừa).

Vậy thay cho A đ B ta đ-a vào P* sản xuất S đ aAb và Ađ w đều là các sản
xuất không đơn nh-ng chức năng sinh ngôn ngữ t-ơng đ-ơng với sản xuất A đ B.

Có thể kiểm chứng L(G*) = L-{e} (Kiểm tra nh- bài tập)

Ví dụ 7 : a. Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, trong đó:
ồ= {+,*,a}, D={S,A,B},P= {SđS+A, SđA, AđA*B, AđB, Bđa}

Hãy loại các qui tắc đơn trong văn phạm trên.
Ta xây dựng G* = <ồ,D,S,P*>,
với P* = { SđS+A, AđA*B, Bđa, SđA*B, Ađ a, Sđa} không còn qui tắc đơn và

G ằ G*.

4%5"6"7 Nên dùng đồ thị định h-ớng chứa đỉnh là các ký tự ch-a kết thúc tham gia
các sản xuất đơn để xây dựng các sản xuất thay thế.

b. Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, trong đó:
ồ= {a, b, c}, D={S,A,B},P= {SđAaẵB, BđAẵbb, AđaẵbcẵB }
Hãy loại các qui tắc đơn trong văn phạm trên
Ta xây dựng G* = <ồ,D,S,P*>,
với P* = { Sđ Aa, B đ bb, Ađ aẵbc, S đ bbẵaẵbc, Ađ bb, B đ aẵbc } không còn
qui tắc đơn và G ằ G*.






A

B

C

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


3.3 Dạng chuẩn của Chomsky:

3.3.1 Định nghĩa : Văn phạm phi ngữ cảnh G = <ồ,D,S,P>, đ-ợc gọi là văn phạm

chuẩn Chomsky nếu mọi sản xuất trong P đều có dạng : A đ BC hoặc A đ a, với A,B,C
ẻD, a là một ký hiệu kết thúc (aẻồ).

3.3.2 Định lý : (+W'0"*%O]'"4%(J.LE): Mọi Văn phạm PNC G = <ồ,D,S,P>,
(L(G) không chứa
e
) bao giờ cũng tồn tại 1 văn phạm dạng chuẩn G
1
= <ồ,D
1
,S,P
1
>, t-ơng
đ-ơng với nó, tức là L(G)=L(G
1
).

Chứng minh : Giả sử G = <ồ,D,S,P>, là văn phạm phi ngữ cảnh nào đó. Theo
định lý 3.2.6.1 thì có thể giả thiết trong P không chứa e-sản xuất, và các sản xuất đơn
AđB với A,BẻD.

Ta có thể giả thiết trong P chỉ gồm các sản xuất có dạng Ađa, hoặc AđB
1
B
2
B
n

đây aẻồ, còn A, B
1

,B
2
, , B
n
ẻD).

Nếu G không thỏa các điều kiện trên thì trong G còn sản xuất AđX, với X là một
xâu gồm cả ký hiệu kết thúc và ký hiệu không kết thúc. Trong tr-ờng hợp này, ta xây
dựng G' theo G sao cho L(G) = L(G') và G' thỏa điều kiện P' = {Ađa, AđB
1
B
2
B
n
} nh-
sau:

1. Với mỗi aẻồ ta đặt t-ơng đ-ơng với ký hiệu
a
. Sau đó đặt D' = Dẩ{
a
/aẻồ}
2. Trong tất cả các sản xuất của P mà trong đó vế phải của sản xuất có chứa ký
hiệu a ẻồ thì trong qui tắc đó ta thay a bởi
a
ta đ-ợc .

Đặt P' = ẩ {
a
đa/ aẻồ}.


Khi đó ta nhận đ-ợc văn phạm G' = <ồ',D',S,P'> t-ơng đ-ơng với với G nh-ng P'
chỉ gồm sản xuất dạng Ađa, AẻD', aẻồ, AđB
1
B
2
B
n
, với A,B
i
ẻD', i=1,2, n.

Vậy ta có thể giả thiết văn phạm G= <ồ,D,S,P> chỉ chứa các sản xuất dạng :
Ađa, hoặc AđB
1
B
2
B
n
, với A, B
1
B
2
B
n
ẻD, aẻồ.
Có 2 tr-ờng hợp sau xảy ra đối với G:

Tr-ờng hợp 1: Nếu các tập P gồm các sản xuất có dạng:
A đa, AđBC, A,B,C ẻD, aẻồ.

Khi đó định lý đ-ợc chứng minh.

Tr-ờng hợp 2: Nếu tập P gồm các sản xuất Ađa, hoặc AđB
1
B
2
B
n
với n >2 thì
AđB
1
B
2
B
n
có thể thay bởi các sản xuất AđB
1
K
1
, K
1
đB
2
K
2
, K
2
đB
3
K

3
, ,K
n-2
đB
n-1
B
n
. ở
đây K
1
, K
2
, ,K
n-2
là các ký hiệu thêm vào.

Đặt D
1
= D'ẩ {K
1
, K
2
, ,K
n-2
}, R
1
={Ađa, AđB
1
K
1

, K
1
đB
2
K
2
, K
2
đB
3
K
3
, ,K
n-2
đ
B
n-1
B
n
}.
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 41 Nguyễn Đức Thuần



Khi đó G
1
= <ồ,D
1
,S,P

1
> ằ G= <ồ,D,S,P> thỏa mãn điều kiện định lý. Định lý đã
d-ợc chứng minh.

Ví dụ 8: Cho văn phạm phi ngữ cảnh G= <ồ,D,S,P>, ồ= {a,b}, D={S,A},
P={SđaAS, Sđa, AđSbA, AđSS, Ađba}

Ta xây dựng văn phạm G
1
= <ồ,D
1
,S,P
1
>, t-ơng đ-ơng với văn phạm G sao cho G
1

là dạng chuẩn CHOMSKY, tr-ớc hết ta xây dựng văn phạm G'= <ồ,D',S,P'>, với
D'={S,A,
a
,
b
}, P' = {S đ a, Sđ
a
AS, S đS
b
A, AđSS, Ađ
b
a
,
a

đa,
b
đb}, trong
đó P' gồm các sản xuất có dạng Ađa, hoặc AđB
1
B
2
B
n
, A, B
1
B
2
B
n
ẻD', aẻồ.

Tiếp theo ta xây dựng văn phạm chuẩn CHOMSKY G
1
= <ồ,D
1
,S,P
1
>, có :
D
1
= D' ẩ {B
1
, B
2

}, P
1
= {Sđa, Sđ
a
B
1
, B
1
đAS, AđSB
2
, B
2
đ
b
A, AđSS,

b
a
,
a
đa,
b
đ b}.

Ta có thể kiểm chứng đ-ợc L(G') = L(G
1
). Vì L(G') = L(G), suy ra L(G)=L(G
1
) với
G

1
là văn phạm ở dạng chuẩn CHOMSKY.

Ví dụ 9 : Cho văn phạm phi ngữ cảnh G= <ồ,D,S,P>, ồ= {a,b}, D={S,A,B},
P={SđbA, SđaB, AđbAA, AđaS, Ađa, BđaBB, BđbS, Bđb}
Tìm dạng chuẩn.

Xây dựng văn phạm G' = <ồ,D',S,P'>, với :
D' = Dẩ{
a
,
b
}, = {S, A, B, ,
a
,
b
},
P' = {S đ
b
A, Sđ
a
B, A đ
b
AA, Ađ
a
S, Ađa, Bđ
a
BB, Bđ
b
S,

Bđb,
a
đa,
b
đb}
Kiểm chứng ra có L(G') = L(G).

Từ G' ta xây dựng dạng chuẩn CHOMSKY G
1
= <ồ,D
1
,S,P
1
> nh- sau:
ồ= {a,b}, D
1
={S,A,B, ,
a
,
b
, F
1
, F
2
}
P
1
= {S đ
b
A, Sđ

a
B, A đ
b
F
1
, F
1
đAA, Ađ
a
S, Ađa, Bđ
a
F
2
,
F
2
đ BB, Bđ
b
S, Bđb,
a
đa,
b
đb}.

Ta có L(G') = L(G
1
) hay L(G) = L(G
1
).



3.4 Một số bài toán quyết định đối với các NNPNC

Các bài toán mà kết quả mang tính chất tổng quát trả lời tính đặc tr-ng cho
NNPNC gọi là các bài toán quyết định. Ví dụ: Một xâu w có phải thuộc về ngôn ngữ L(G)
không? Hai ngôn ngữ PNC có t-ơng đ-ơng nhau không ? Có một số bài toán quyết
định có thể giải đ-ợc nghĩa là tồn tại giải thuật, và cũng có một số bài toán không giải
đ-ợc .Ví dụ bài toán NNPNC đã cho có nhập nhằng hay không ? là bài toán không giải
đ-ợc.
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 42 Nguyễn Đức Thuần



Trong phần này chúng ta sẽ nghiên cứu một số bài toán quyết định giải đ-ợc đối
với các NNPNC.

3.4.1 Tính hữu hạn

3.4.1.1 Định lý : Tồn tại thuật toán để xác định phải chăng một NNPNC cho biết
bất kỳ là :
a. Rỗng
b. Hữu hạn
c. Vô hạn

Chứng minh:
Cho một NNPNC L= L(G) với G = <ồ,D,S,P>.
a. Tính rỗng
- Bổ đề 1, mục 3.2.2 đã cho giải thuật để xác định phải chăng một biến có sinh
một xâu các ký hiệu cuối hay không. Vậy giải thuật đó sẽ khẳng định ký hiệu đầu S có

sinh các xâu ký hiệu cuối không, tức là cho biết L(G) là rỗng hay không.

b. Tính hữu hạn của L(G):
1. Định lý Pumping: Mọi ngôn ngữ phi ngữ cảnh L tồn tại 1 số tự nhiên m sao
cho "wẻL : ẵwẵ m, w có thể phân tích thành:
w = uvxyz
với ẵvxyẵÊ m, ẵvyẵ 1
ị uv
i
xy
i
z ẻL, "i = 0,1,2,

Chứng minh: Giả sử G = <ồ,D,S,P> là văn phạm sinh ra L. Theo định lý 3.3.2
dạng chuẩn chomsky ta có thể xem L không chứa e và G không chứa các sản xuất đơn, e-
sản xuất, G là dạng chuẩn chomsky. Gọi n = ẵDẵ, m= 2
n+1
. Xét cây sinh ra w từ S , với
ẵwẵ 2
n+1
.
S 2
0


2
1







w: 2
n+1

Ta thấy 1 đ-ờng đi dài nhất trong cây T qua nhiều hơn n+1 đỉnh, và có ít nhất n+1
đỉnh không kết thúc. Do ẵDẵ= n, nên có ít nhất 2 đỉnh chứa 2 ký hiệu không kết thúc
trùng nhau trong T. Goi A là ký tự không kết thúc trùng nhau lần cuối cùng.

Gọi C là đ-ờng đi dài nhất từ ký hiệu A là l thì l Ê n+1. Nói khác hơn xâu sinh ra
ttừ A này là 1 xâu con của w có thể biểu diễn d-ới dạng vxy và ẵvxyẵÊ 2
n+1
= m
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 43 Nguyễn Đức Thuần


S


A

l
A


u v x y z

Xét S uAz uvAyz (*)

Do mỗi b-ớc suy dẫn từ 1 ký hiệu không kết thúc hoặc sinh ra 1 ký hiệu kết thúc
hoặc 2 ký hiệu không kết thúc ị ẵvyẵ 1

Theo (*) ta có : S uAz uvAyz uv
2
Ay
2
z uv
i
Ay
i
z ẻL, "i0
(đpcm)

Chú ý: Đối với định lý phi ngữ cảnh, định lý này có 1 ý nghĩa rất lớn. Nó mô tả
cấu trúc của các ngôn ngữ phi ngữ cảnh vô hạn. Trong các ngôn ngữ lập trình nó dùng để
mô tả các cấu trúc lồng nhau(các ngoặc số học, các cặp if then else ) và còn th-ờng
đ-ợc dùng để chứng minh một '0M'"'0^"_M"%W'"L%M'0"-`"T"'0M'"'0^";% "'0^"*a'%3

Ví dụ 10: Chứng minh ngôn ngữ L = {a
n
b
n
c
n
: n 0} không là ngôn ngữ phi ngữ
cảnh.
Chứng minh: Giả sử L là 1 ngôn ngữ phi ngữ cảnh. Xét w = a
k
b

k
c
k
ẻL , theo định
lý Pumping, chọn k >m ta có w = a
k
b
k
c
k
= uvxyz ẻL.
- Nếu vxy chỉ chứa 1 ký tự hoặc a, hoặc b, hoặc c
ị uv
i
xy
i
z (i 1) sẽ có số l-ợng ký tự a, b, c không bằng nhau ị uv
i
xy
i
zẽL
- Nếu vxy chỉ chứa 2 ký tự hoặc ab, hoặc bc t-ơng tự nh- trên
ị uv
i
xy
i
z (i 1) sẽ có số l-ợng ký tự a, b, c không bằng nhau ị uv
i
xy
i

zẽL
- Nếu vxy chỉ chứa đủ 3 ký tự a, b, c, nếu ẵxẵ 1 ị v
i
xy
i
chứa l-ợng a, b, c
khác nhau.( i>1)
Vậy L không là ngôn ngữ phi ngữ cảnh.

2. Định lý : Có giải thuật xác định 1 ngôn ngữ phi ngữ cảnh L(G) hữu hạn hay
không.

Chứng minh: Theo định lý 3.2.3 ta có thể chuyển về dạng chuẩn chomsky 1 ngôn
ngữ phi ngữ cảnh L(G) bất kỳ. Vì vậy, ta xét ngôn ngữ phi ngữ cảnh L(G) có dạng chuẩn
chomsky. Theo định lý Pumping:

- Nếu $ wẻL(G), mà ẵwẵm =2
n+1
ị"i0 , w=uvxyz ẻL, "iẻN
0
: uv
i
xy
i
z ẻL
ịL(G) vô hạn, ng-ợc lại L(G) là hữu hạn.
- Theo chứng minh định lý Pumping ta thấy sự vô hạn xảy ra khi và chỉ khi có :
A
0
a

1
A
1
b
1
a
2
A
2
b
2
a
n+1
A
0
b
n+1
vì vậy để kiểm chứng tính hữu
hạn của G , ta lập một đồ thị có h-ớng nh- sau : Mỗi đỉnh là mộtký tự ch-a kết
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 44 Nguyễn Đức Thuần


thúc, nếu AđBC thì có một cung từ A đến b, và một cung từ A đến C. Ta
chứng minh rằng L(G) là hữu hạn khi và chỉ khi đồ thị đó không có chu trình.

bcd Nếu có một chu trình, chẳng hạn A
0
A
1

A
n
A
0
thì
A
0
a
1
A
1
b
1
a
2
A
2
b
2
a
n
A
n
b
n
a
n+1
A
0
b

n+1

trong đó các a
i
,b
i
là các xâu biến và ẵ a
i
b
i
ẵ= 1 . Vì văn phạm không có ký hiệu thừa,
nên a
n+1
v, b
n+1
w, với v,w ẻồ* và ẵvwẵ n+1. Vì n 0, nên v và w không thể
đồng thời là e. Mặt khác, vì không có ký hiệu thừa, nên phải có suy dẫn S xA
0
y và suy
dẫn A
0
z. Với x, y, z ẻồ*. Với mọi i ta có :
S xA
0
y xvA
0
wy xv
2
A
0

w
2
y xv
i
A
0
w
i
y xv
i
zw
i
y
Vì ẵvwẵ>0 nên xv
i
zw
i
y không thể bằng xv
j
zw
j
y ,với iạj. vậy thì văn phạm sinh ra một
số vô hạn các xâu.

Ví dụ 11: Xét văn phạm :
S đ AB
Ađ BC ẵa
Bđ CC ẵb
C đ a


Đồ thị đ-ợc lập đ-ợc cho ở hình sau:








Đồ thị đó không có chu trình. Cấp của S,A,B,C lần l-ợt là 3,2,1, và 0. Chẳng hạn
đ-ờng đi dài nhất của S là S,A,B,C. Vậy văn phạm này sản sinh hữu hạn xâu, và các xâu
này có độ dài không lớn hơn 2
3
= 8. Thực ra, xâu dài nhất suy dẫn đ-ợc từ S là:

S AB BCB CCCB CCCCC aaaaa
Nếu ta thêm vào văn phạm một sản xuất nữa: C đ AB, thì ta đ-ợc đồ thị mới nh-
sau:







Đồ thị này có nhiều chu trình, chẳng hạn A,B,C,A. Vậy ngôn ngữ là vô hạn.





S

S

S

S

S

S

S

S

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


3.4.2 Bài toán thành viên

3.4.2.1 Định lý: Tồn tại giải thuật để xác định, với một VPPNC bất kỳ
G= <ồ,D,S,P>. và một xâu bất kỳ xẻồ*, phải chăng xẻL(G)?

Chứng minh : Ng-ời ta đã đề xuất nhiều giải thuật cho bài toán này. Sau đây là
một giải thuật gọi là giải thuật 4ef (Cocke-Younger-Kasami) với độ phức tạp thời gian tỉ
lệ với ẵx
3
ẵ.


Giả sử G đã ở dạng chuẩn chomsky và ẵxẵ=n 1. tr-ớc hết ta chỉ ra cách xác
định với mỗi i,j và mỗi biến A, phải chăng A x
ịj
?, trong đó x
ịj
là xâu con của x kể từ vị
trí i và có độ dài j.
Qui nạp theo j : - với j =1, A x
ịj
khi và chỉ khi A đ x
ịj
là một sản xuất.
Với j >1, thì A x
ịj
khi và chỉ khi có một sản xuất AđBC và k, 1Ê k Ê j, sao cho
B suy dẫn k ký hiệu đầu của x
ịj
và C suy dẫn j-k ký hiệu cuối của x
ịj
. Cũng tức là:

B x
ịk
và C x
ị+k, j-k

Vì k và j-k cả 2 đều bé hơn j, theo giả thiết qui nạp, ta đã xác định đ-ợc 2 suy dẫn này tồn
tại hay không? đồng thời cũng xác định đ-ợc A x
ịj

hay không.

Với cách làm đó, ta sẽ xác định đ-ợc phải chăng S x
1n
, nh-ng x
1n
= x, vậy
xẻL(G) khi và chỉ khi S x
1n
.

Sau đây là giải thuật CYK thể hiện ý t-ởng trên, trong đó D
ij
là tập tất cả các biến
A sao cho A x
ịj
. L-u ý rằng ta có thể giả thiết 1 Ê i Ê n-j+1, bởi vì lúc đó xâu con x
ịj
với độ dài j mới thực sự tồn tại.

g a "$%Oh$"4ef7"

Begin
1) For i:=1 to n do
2) D
i1
:= {A/ Ađ a là một sản xuất và a là một ký hiệu thứ i
trong X}
3) For j:=2 to n do
4) For i:=1 to n-j+1 do

begin
5) D
ij
:= ặ;
6) For k:=1 to j-1 do
7) D
ij
:= D
ij
ẩ {AẵAđ BC là một sản xuất, BẻD
ik
,
và C ẻD
i+k,j-k
}
end;
end;
8) If S ẻD
1n
then wẻ L(G)
B-ớc 1 và 2 xử lý tr-ờng hợp j=1. Vì văn phạm G đã cho sẳn, nên b-ớc thứ 2
chiếm một thời gian cố định. Vậy các b-ớc 1 và 2 chiếm thời gian O(n). Các vòng lặp for
ở các dòng 3 và 4 làm cho các b-ớc từ 5 đến 7 lặp lại nhiều nhất là n
2
lần (do i,j Ên).
Ng Duc Thuan
Lý Thuyết Ngôn Ngữ Hình Thức & Ôtômat 46 Nguyễn Đức Thuần


B-ớc 5 mỗi lần thực hiện chiếm một thời gian cố định. Vậy tổng thời gian để thực hiện

b-ớc 5) là O(n
2
). Vòng lặp For ở dòng 6 làm cho b-ớc 7 lặp lại n lần hoặc ít hơn. Vì b-ớc
7 cũng chiếm thời gian cố định nên các b-ớc 6 và 7 gộp lại chiếm thời gian O(n). Vì các
b-ớc này đ-ợc thực hiện O(n
2
) lần, tổng thời gian thực hiện cho b-ớc 7 là O(n
3
). Vậy độ
phức tạp của giải thuật là O(n
3
).

Ví dụ 11: Xét văn phạm dạng chuẩn Chomsky :
S đ ABẵBC
Ađ BAẵa
B đ CCẵb
C đ ABẵa
và xâu vào cần xét là #,,#,3"Bảng D
ij
cho theo hình sau. Dòng đầu tiên trong bảng
đ-ợc cho bởi các b-ớc 1 và 2 trong giải thuật. Vì x
11
=x
41
= b, nên D
11
=D
44
={B}. Còn x

21
=
x
31
= x
51
= a. Suy ra D
21
= D
31
= D
51
= {A,C}

b a a b a

i 1 2 3 4 5
j
1 B A,C A,C B A,C
2 S,A B S,C S,A
3

B B
4

S,A,C


5 S,A,C




Để tính D
ij
với j>1, ta thực hiện vòng lặp For ở các b-ớc 6 và 7. Ta phải đối chiếu
D
ik
với D
i+k, j-k
với k=1,2, ,j-1 để tìm biến D trong D
ik
và biến E trong

D
i+k,j-k
sao cho DE là
vế phải của 1 hay nhiều sản xuất. Các vế trái của những sản xuất đó đ-ợc đ-a vào trong
D
ij
. Quá trình đối chiếu đó diễn ra bằng cách tụt dần trên cột i, đồng thời trồi dần lên theo
đ-ờng chéo qua D
ij
về phía phải theo sơ đồ sau:





D
ij





Chẳng hạn để tính D
24.
đầu tiên đối chiếu D
21
={A,C} với D
33
={B}. Ta có
D
21
D
33
={AB,CB}. Vì có các sản xuất Sđ AB và CđAB nên S và C đ-ợc đ-a vào D
24
. Tiếp
đến lại xét D
22
D
42
={BS,BA} Vì có các sản xuất Ađ BA nên đ-a thêm A vào D
24
. Xét
D
23
D
51
={BA,BC} Vậy D

24
={S,AC} Cuối cùng vì S ẻD
15.
Vậy xâu baaba là thuộc ngôn
ngữ sinh ra bởi văn phạm đã cho.


×