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

Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 4 - ThS. Nguyễn Thị Thùy Linh

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 (474.2 KB, 11 trang )

NỘI DUNG

CHƢƠNG 4:
1.

VĂN PHẠM PHI NGỮ CẢNH

ÔTÔMÁT ĐẨY XUỐNG

2.
3.
4.
5.

CFG – Context-Free Grammar
and
PDA – Pushdown Automata

6.
7.

Xuất xứ và định nghĩa của văn phạm phi ngữ cảnh
Cây dẫn xuất và sự nhập nhằng trong VPPNC
Dạng chuẩn Chomsky (CNF)
Dạng chuẩn Greibach (GNF)
Định nghĩa Ôtômát đẩy xuống (PDA)
Ngôn ngữ được chấp nhận bởi PDA
Ôtômát đẩy xuống và ngôn ngữ phi ngữ cảnh.
2

XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC



XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT)

Xuất xứ đầu tiên của VPPNC là việc mô tả các ngơn ngữ tự nhiên.
Hãy trở lại hình cây ở chương 1. Nó diễn tả cấu trúc của câu “An là sinh
viên giỏi”. Các từ trong móc nhọn, như là <Câu đơn>, <Chủ ngữ>, ngữ>…là các phạm trù cú pháp, cho ta vai trò của các bộ phận hợp
thành một câu.
 Ta thấy một câu đơn được sinh ra qua các bước triển khai dần dần các
phạm trù cú pháp theo các quy tắc cú pháp như sau:
 <câu đơn>  <chủ ngữ> <vị ngữ>
 <chủ ngữ>  <danh từ>
 <danh từ>  sinh viên | An
 <vị ngữ>  <động từ> <bỗ ngữ>



3

<động từ>  Là
 <bổ ngữ>  <danh từ> < tính từ>
 <tính từ>  giỏi
 Các quy tắc cú pháp như trên chính là thuộc dạng của các quy
tắc trong văn phạm phi ngữ cảnh.


các nhà Tin học, với nhu cầu biểu diễn các ngôn ngữ
lập trình, đã tìm thấy ở văn phạm phi ngữ cảnh một khn khổ
thích hợp.
 Các dạng chuẩn Backus – Naur (BNF) mà các nhà Tin học

dùng để diễn tả cú pháp của các ngơn ngữ lập trình cấp cao
 Chính

4

1


XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT)

XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT)

Định nghĩa: Một văn phạm phi ngữ cảnh, viết tắt là VPPNC, là một hệ
thống:
G = (, , P, S), trong đó:
  là một tập hữu hạn các ký hiệu, gọi là ký hiệu kết thúc (còn gọi là
ký hiệu cuối).
  là một tập hữu hạn các ký hiệu, gọi là ký hiệu không kết thúc (hay
còn gọi là các biến) với    = 
 S   gọi là ký hiệu đầu.
 P là một tập hữu hạn các sản xuất có dạng
A   với A   và   (  )*. Nếu  =  thì A là biến bắt
đầu và không được xuất hiện ở vế phải của bất kỳ luật sinh nào.
 Vậy VPPNC tương tự như văn phạm mà ta đã nghiên cứu, nhưng chỉ
khác là ta đã thêm hạn chế đối với các sản xuất.


Với các sản xuất trong P, văn phạm G trở nên một hệ viết lại sản sinh
(V, P) với bảng chữ cái V =    và tiên đề S.
 Định nghĩa ngôn ngữ sản được sinh bởi văn phạm G là:

L(G) = {w | w  * và S * w}
 L(G) được gọi là ngôn ngữ phi ngữ cảnh (NNPNC).
 Đối với các ký hiệu  và *, khi cần chỉ rõ văn phạm, thì ta đưa thêm
chỉ số dưới  G và *G.
 Hai văn phạm G1 và G2 được gọi là các văn phạm tương đương nếu
L(G1) = L(G2).
 Nếu S *  và   (  )* thì  được gọi là một dạng câu.


5

6

XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT)

QUY ƢỚC

dụ 4.1: Xét VPPNC G = (, , P, S) với  = {a, b},  =
{S} và P = {S  aSb, S  ab}
 Nếu ta áp dụng sản xuất đầu n-1 lần, rồi đến sản xuất thứ
hai thì ta có dẫn xuất sau:

 Ví

S  aSb  aaSbb  a3Sb3 …  an-1Sbn-1  anbn.
S  aSb

S  aSb

S  aSb


S  ab

Như vậy, L(G) = {anbn | n  1}

7



Để tiện cho việc theo dõi, ta quy ước về cách viết như sau:
 Biến: dùng các chữ in hoa A, B, C, D, E và S.
 Ký hiệu kết thúc: dùng các chữ thường a, b, c, d, e và các con số.
 Ký hiệu cuối hoặc biến: dùng các chữ in hoa X, Y, Z.
 Chuỗi các ký hiệu kết thúc: dùng các chữ thường u, v, w, x, y, z
 Các chuỗi gồm các biến và ký hiệu kết thúc: dùng các chữ Hy Lạp ,
, 
 Qui tắc viết gộp vế trái: nếu A   và A   thì viết gộp là
A|

8

2


XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC (TT)


CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC



Ví dụ 4.2: Cho VPPNC G = (, , P, S)
với :




 = {a, b}
 = {S, A, B} và
P={
S  aB | bA
A  aS | bAA | a
B  bS | aBB | b }

Cây dẫn xuất trong một VPPNC G = (, , P, S) là một cây trong đó:
 Mọi nút có một nhãn, là một ký hiệu thuộc     {},
 Có 1 nút gốc duy nhất nhãn là S,
 Nếu một nút có nhãn A là một nút trong, thì A  ,
 Nếu nút n có nhãn là A và các nút n1, n2, …, nk là các con của nút n,
theo thứ tự từ trái sang phải, và lần lượt mang các nhãn X1, X2, …, Xk
thì A  X1X2…Xk phải là một sản xuất trong P,
 Nếu nút n mang nhãn là , thì n phải là một lá, và là con duy nhất của
bố nó.

Ngơn ngữ L(G) là tập mọi chuỗi trong + có chứa cùng một số a và số b.

9

CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC
(TT)



Ví dụ 4.3: Cho VPPNC G = ({a, b}, {S, A}, P, S), Trong đó:
P= { S  aAS | a
A  SbA | SS | ba }
S
 Ta có một cây dẫn xuất như sau:
a

A
S
a

A
b

CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG TRONG VPPNC
(TT)
Các con của một nút là được xếp từ “trái qua phải”. Ta có thể mở
rộng thứ tự “từ trái sang phải” đó cho các nút con của cây.
 Nếu ta đọc các nhãn của các lá, theo thứ tự từ “trái qua phải” ta có
một dạng câu và gọi đó là kết quả của cây dẫn xuất. Chẳng hạn
aabbaa là kết quả của cây dẫn xuất ở hình trên.
 Ta gọi cây con của một cây dẫn xuất là một nút nào đó cùng với các
nút con bên dưới của nó, các nhánh nối chúng và các nhãn kèm
theo.
 Nếu nhãn của của cây con là A, thì đó là cây con nhãn A còn gọi là
A-cây.


S


b

10

a
a

Kết quả của cây: w = aabbaa
11

12

3


MỐI LIÊN QUAN GIỮA
DẪN XUẤT VÀ CÂY DẪN XUẤT
Định lý 4.1: Cho G = (, , P, S) là một VPPNC, thế thì S *  khi
và chỉ khi có cây dẫn xuất trong G mà kết quả là .
 Ta gọi dẫn xuất bên trái nhất (nói gọn là dẫn xuất trái), nếu ở mỗi
bước dẫn xuất, biến được thay thế là biến nằm bên trái nhất trong
dạng câu.
 Tương tự ta gọi dẫn xuất bên phải nhất (nói gọn là dẫn xuất phải),
nếu ở mỗi bước dẫn xuất, 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 dẫn xuất với kết quả  tương ứng với nhiều dẫn xuất S *
. Các dẫn xuất này có cùng độ dài, chúng chỉ khác nhau ở thứ tự áp
dụng các sản xuất. Trong số các dẫn xuất này chỉ có một dẫn xuất bên
trái nhất và một dẫn xuất bên phải nhất.



S
a

S

A

CÂY CON A (A-CÂY)
S
a

b

A
b

a

13

14

MỐI LIÊN QUAN GIỮA
DẪN XUẤT VÀ CÂY DẪN XUẤT

MỐI LIÊN QUAN GIỮA
DẪN XUẤT VÀ CÂY DẪN XUẤT


Tuy nhiên với một xâu   L(G), rất có thể có nhiều cây dẫn xuất với
kết quả chung . Điều đó có nghĩa là xâu  có thể phân tích cú pháp
theo nhiều cách khác nhau.
 Ta nói một VPPNC G là nhập nhằng nếu có một xâu  là kết quả của
hai cây dẫn xuất khác nhau trong G. Tuy nhiên cũng có thể nói rằng
văn phạm G là nhập nhằng nếu có một xâu  với hai dẫn xuất bên trái
nhất (hay hai dẫn xuất bên phải nhất) S * .
 Một ngôn ngữ PNC L được gọi là ngôn ngữ nhập nhằng cố hữu nếu
mọi VPPNC sản sinh ra L đều nhập nhằng.
 Ví dụ 4.4: Xét VPPNC G0 cho bởi các sản xuất sau:
E  E + E | E * E | (E) | a







Văn phạm này cho ta viết các biểu thức số học với các phép toán
+ và *. Cây dẫn xuất sau cho kết quả là a + a * a.
dẫn xuất trái nhất :
E  E * E  E + E * E  a + E * E  a + a * E  a + a*a
dẫn xuất phải nhất:
EE*EE*aE+E*aE+a*aa+a*a
E
E
E
a

15


+

*
E
a

E
a

16

4


MỐI LIÊN QUAN GIỮA DẪN XUẤT VÀ CÂY DẪN XUẤT
(TT)
Tuy nhiên ta cịn thấy có một cây dẫn xuất khác với kết quả là a + a * a
như hình sau:



MỐI LIÊN QUAN GIỮA
DẪN XUẤT VÀ CÂY DẪN XUẤT (TT)


E
E
a


+

E
E
a



*

E

a

Để khắc phục sự nhập nhằng của G0 đó, ta có thể:
 Phép * được ưu tiên hơn phép +:
EE+T|T
TT*F|F
F  (E) | a
 Phép cộng và phép nhân luôn thực hiện từ trái sang phải ( trừ khi gặp vòng
đơn)
EE+T|E*T|T
T  (E) | a

Điều đó có nghĩa là biểu thức a + a * a có thể hiểu theo hai cách khác
nhau: thực hiện cộng trước hay thực hiện phép nhân trước.
17

18


GIẢN LƢỢC CÁC VPPNC

CÁC KÝ HIỆU VƠ ÍCH

Một VPPNC có thể cịn chứa đựng nhiều yếu tố thừa vơ ích, chẳng
hạn có những ký hiệu khơng thật sự tham gia vào q trình sinh sản
xâu, hoặc có những sản xuất dạng A  B làm kéo dài các dẫn xuất
một cách không cần thiết.
 Vấn đề giản lược VPPNC:
 Loại bỏ các kí hiệu khơng dẫn ra được kí hiệu kết thúc (bổ đề 4.1)
 Loại bỏ các kí hiệu không được dẫn xuất từ S (bổ đề 4.2)
 Loại bỏ các dẫn xuất đơn dạng A  B
 Loại bỏ các qui tác rống dạng A  


19

G = (, , P, S) là một VPPNC. Ta nói một ký hiệu X là có ích nếu
có một dẫn xuất S * X * w, với ,  (  )* và w  *.
 Nếu khơng có thế thì X là vơ ích.
 Như vậy có hai khía cạnh cần phải xem xét của ký hiệu có ích:
 Từ X có thể dẫn xuất ra một xâu các ký hiệu cuối nào đó (X là
hữu sinh).
 X phải xuất hiện trong một xâu dẫn xuất từ S (X là đến được).
 Tuy nhiên hai điều kiện đó chưa đủ để đảm bảo rằng X là có ích.


20

5



CÁC KÝ HIỆU VƠ ÍCH (TT)

CÁC KÝ HIỆU VƠ ÍCH (TT)

Bổ đề 4.1: (Loại bỏ các ký hiệu không dẫn xuất ra được ký hiệu kết
thúc):
 Input: Cho một VPPNC G = (, , P, S) với L(G)  
 Output: VPPNC G’ = (, ’, P’, S) tương đương G sao cho với mọi A
trong ’, có một w nào đó trong * để cho A * w (nghĩa là mọi biến
 ’ đều đến được đích).
 Giải thuật: Duyệt qua các sản xuất trong P và kết nạp dần các biến
vào ’ như sau:
 Nếu A  w, với w   * thì A đưa vào ’.
 Nếu A  X1X2…Xn, trong đó các Xi là ký hiệu cuối hoặc là biến
đã được kết nạp vào ’, thì A cũng được đưa vào ’.
 Cứ thế, ’ được thành lập nhờ một giải thuật lặp ở phía sau.
Vịng lặp sẽ dừng vì P là hữu hạn.

P’ = {A   | ,   (  ’)*}  P ( P’ gồm mọi sản xuất
trong P mà các ký hiệu trong đó đều thuộc   ’
BEGIN
 cũ = ;
 mới = {A | A  w với w   *};
 WHILE cũ  mới DO
BEGIN
 cũ = mới;
 mới = cũ  {A | A   với   (  cũ)*};
END

 ’ = mới
END





21

CÁC KÝ HIỆU VƠ ÍCH (TT)

22

CÁC KÝ HIỆU VƠ ÍCH (TT)

Bổ đề 4.2: (Loại bỏ các ký hiệu vơ ích không được sinh ra từ S) Input
: Cho một VPPNC G = (, , P, S)
 Output: VPPNC G’ = (’, ’, P’, S) tương đương G sao cho với mọi
X trong ’  ’ tồn tại ,  trong (’  ’)* để cho S * X.
(nghĩa là mọi biến trong ’ đều xuất phát từ S)
 Giải thuật: Tập ’  ’ có thể được thành lập bởi giải thuật lặp
như sau:
 Cho S vào ’. Nếu một biến A đã được đưa vào ’ và A  1 |
2 | …| n thì kết nạp mọi biến trong 1, 2, …, n vào ’ và mọi
ký hiệu kết thúc trong 1, 2, …, n vào trong ’.
 Thủ tục ngừng khi khơng cịn bổ sung thêm được ký hiệu nào
mới cả.
 Khi đó lấy P’ là tập mọi sản xuất trong P chỉ chứa các ký hiệu
trong ’  ’



23





Định lý 4.2: Mọi ngôn ngữ PNC không rỗng đều có thể được sản sinh từ
một VPPNC khơng có ký hiệu vơ ích.
Ví dụ 4.5: Xét văn phạm có tập luật sinh sau:
S  AB | a
A a
Áp dụng bổ đề 4.1, B bị loại cùng với sản xuất S  AB
Áp dụng bổ đề 4.2 cho hai sản xuất cịn lại
Sa
A a
Ta thấy chỉ có S và a là đến được (A bị loại vì nó khơng được sinh ra từ S).
Vậy văn phạm tương đương không có ký hiệu vơ ích là G=({a}, {S}, (S 
a), S).
24

6


LOẠI BỎ CÁC QUI TẮC RỖNG

LOẠI BỎ CÁC QUI TẮC RỖNG (TT)

Ta tìm cách loại bỏ các sản xuất dạng A  , gọi là các -dẫn xuất.
Đương nhiên nếu   L(G), ta không thể loại hết các -dẫn xuất được.

Trường hợp này -dẫn xuất vẫn còn và thường là S  .
 Nhưng nếu   L(G) thì có thể loại hết  ra khỏi G.
 Định lý 4.3: Nếu L = L(G) với một VPPNC G = (, , P, S), thì L –
{} là bằng L(G’) với một VPPNC G’ không chứa các ký hiệu vô ích
và các -dẫn xuất.
 Giải thuật: xây dựng G’ = (, , P’, S) như sau:
*
 Gọi một biến A là triệt tiêu được, nếu A  . Có thể xác định
các ký hiệu triệt tiêu được của G nhờ giải thuật lặp sau đây:


Nếu A   thì A bỏ được, sau đó nếu B   là một sản xuất mà
mọi ký hiệu trong  đều đã biết là bỏ được, thì B cũng bỏ được,
lặp lại quá trình đó cho đến khi khơng bỏ được kí hiệu nào nữa.
Tập các sản xuất P’ được thành lập như sau:
Nếu A  X1X2…Xn 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 12…n, trong đó:
 Nếu Xi là khơng triệt tiêu được, thì I = Xi
 Nếu Xi là triệt tiêu được thì i sẽ hoặc là Xi hoặc là .
 Khơng cho tất cả các i đều .






25

26


LOẠI BỎ CÁC QUI TẮC RỖNG (TT)


CÁC SẢN XUẤT ĐƠN

Ví dụ 4.6: Loại - sản xuất trong văn phạm G sau đây:
S  AB
A  aA | 
B  bB | 
Tập các ký hiệu triệt tiêu của G là {S, A, B}
Áp dụng cách thành lập P trong định lý 4.3:
 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 ra , trong khi G lại
sản sinh ra . Vậy để G’ tương đương G, thì ta bổ sung thêm S  
vào G’
27

Ta tìm cách loại trừ các sản xuất dạng A  B, trong đó A và B đều là
biến; chúng được gọi là các sản xuất đơn.
 Chú ý A  a, với a   không phải sx đơn.
 Định lý 4.4: Mọi NNPNC không chứa  đều có thể sinh ra từ một
VPPNC khơng có ký hiệu vơ ích, các  - sản xuất, và các sản xuất
đơn.
 Giải thuật: Giả sử L = L(G) với một VPPNC G = (, , S, P) và 
 L. Bởi định lý 4.3 ta có thể giả thiết thêm là G khơng có các  sản xuất. Thành lập các sản xuất P’ từ P như sau:
 Đưa mọi sản xuất không đơn trong P vào P’
 Nếu A * B với A, B   đưa vào P’ mọi sản xuất có dạng A
  nếu B   là một sản xuất không đơn trong P.



28

7


CÁC SẢN XUẤT ĐƠN (TT)


DẠNG CHUẨN CHOMSKY (CNF)

Ví dụ 4.7: Loại các sản xuất đơn trong văn phạm:
EE+T|T
TT*F|F



F  (E) | a
Gọi A = {B| A * B}, dễ kiểm chứng rằng:
E = {E, T, F}, T = {T, F}, F = {F}.
1.
Các sản xuất không đơn trong P:
EE+T
TT*F
F  (E) | a
Các sản xuất mới thay cho các sản xuất đơn:
E  T * F | (E) | a
T  (E) | a


Định lý 4.5 (Dạng chuẩn Chomsky): Mọi NNPNC khơng chứa  đều có thể
sinh ra từ một văn phạm trong đó mọi sản xuất đều có dạng A  BC hoặc A
 a, với A, B, C là biến và a là một ký hiệu kết thúc.
 Giải thuật:
 Input: G là VPPNC bất kỳ
 Output: G’ là VPPNC ở CNF sao cho L(G’) = L(G)
 Cho NNPNC L. Bởi định lý 4.4, ta có thể tìm được một văn phạm G1 =
(, , P, S) không có sản xuất đơn hoặc  - sản xuất và L = L(G1).
 B1:Trong P nếu có một sản xuất có vế phải là một ký hiệu duy nhất, thì
ký hiệu đó phải là ký hiệu cuối, và các sản xuất đó đã ở dạng CNF

29

30

DẠNG CHUẨN CHOMSKY (TT)

DẠNG CHUẨN CHOMSKY (TT)

B2:xét một sản xuất trong P có dạng A  X1X2…Xm với m  2. Nếu
Xi là một ký hiệu cuối a, ta đưa thêm một biến mới Ca và một sản xuất
mới Ca  a, sản xuất này đã ở dạng CNF. Sau đó thay Xi bởi Ca trong
sản xuất trên.
 Văn phạm G2 = (, ’, P’, S) chưa hẳn ở dạng Chomsky, song các dẫn
xuất của nó đã ở dạng A  a hoặc ở dạng A  B1B2…Bm với m  2
và Bi  ’ (1  i  m).
 B3:Bây giờ ta biến đổi G2 về dạng chuẩn Chomsky: mỗi sản xuất A 
B1B2…Bm trong P’ với m  3, ta thêm các biến mới D1, D2,…, Dm-2 và
thay sản xuất trên bởi tập các sản xuất:
{A  B1D1, D1  B2D2 ,…, Dm-3  Bm-2Dm-2, Dm-2 Bm-1Bm}



31

Như thế ta thu được một tập các biến mới ’’ và một tập các sản xuất
mới P’’. Cho G3 = (, ’’, P’’, S), G3 là VPPNC và ở dạng chuẩn
Chomsky.
Ví dụ 4.8: Tìm dạng chuẩn Chomsky cho văn phạm G({a, b}, {S, A, B}, P,
S) với P gồm các sản xuất:
S  bA | aB
A  bAA | aS | a
B  aBB | bS | b
-------Giải-----Bước 1: A  a (thỏa CNF)
B  b (thỏa CNF)




32

8


DẠNG CHUẨN CHOMSKY (TT)
(1) A  CbAA
Bước 2: Đặt

S  bA | aB
A  bAA
A  aS

B  aBB
B  bS
Bước 3: Đặt

A  CbD1 (thỏa CNF)
D1  AA (thỏa CNF)
(2) B  CaBB
được thay bởi
B  CaD2 (thỏa CNF)
D2  BB (thỏa CNF)
 Vậy VPPNC ở dạng chuẩn CNF G’=(, ’ , P’ , s)
={a,b}
P’ = { S  CbA | CaB
’ = {S,A,B,Ca,Cb,D1,D2 }
A  CaS | CbD1 | a
S là kí hiệu bắt đầu
B  CbS | CaD2 | b

Ca  a
Cb  b

được thay bởi S  CbA | CaB (thỏa CNF)
được thay bởi A  CbAA (1)
được thay bởi A  CaS
(thỏa CNF)
được thay bởi B  CaBB (2)
được thay bởi B  CbS
(thỏa CNF)
D1  AA
D2  BB


được thay bởi

D1  AA
D2  BB
Ca  a
Cb  b

33

34

DẠNG CHUẨN GREIBACH - GNF


gọi luật sinh với biến A ở bên trái là A-luật sinh.
 Bổ đề 4.3: Cho G = (, , P, S) là VPPNC.
Trong đó P = { A  B
là A-dẫn xuất
B  1 | 2 | …| k
 Khi đó G1 = (, , P1, S) là VPPNC tương đương với G.
Trong đó P1 = ({P – {A  B})  {A  i | 1  i  k}
thật ra đây là phương pháp thế.
 Bổ đề 4.3 được sử dụng để xóa biến B xuất hiện ở vị trí
đầu tiên của các A-dẫn xuất.
 Ta

VD 4.9. Cho VPPNC G({0,1},{A},P,A)
Với P = {A  0A1 | 01 }
Tìm VPPNC ở dạng CNF?


35

36

9


DẠNG CHUẨN GREIBACH – GNF (TT)
đề 4.4: Cho G = (, , P, S) là VPPNC. Giả sử tập các
A-dẫn xuất là
 A  A1 | A 2 | …| An |  1 |  2 |…|  m, trong đó  i khơng
bắt đầu bằng A.
 Khi đó G’ = (,   {Z}, P1, S) là VPPNC tương đương với
G có được bằng cách thêm biến mới Z và P1 được xác định
như sau:
 Bổ

Tập các A-dẫn xuất trong P1 là A  1 | 2 |…| m và
A  1 Z | 2 Z|…| mZ
 Tập các Z-dẫn xuất trong P1 là Z  1 | 2 |…| n và
Z  1 Z| 2 Z|…| nZ
 Các qui tắc đối với các biến khác cũng phụ thuộc P1.
 Bổ đề 4.4 được sử dụng để loại bỏ biến A khỏi vế phải của các quy
tắc A  .
 Định nghĩa: VPPNC G ở dạng chuẩn Greibach (GNF) nếu các quy
tắc sản sinh đều có dạng: A  a, trong đó   * và a  


37


38

DẠNG CHUẨN GREIBACH – GNF (TT)

DẠNG CHUẨN GREIBACH – GNF (TT)
Định lý 4.6: Mọi NNPNC L không chứa rỗng đều có thể được sinh
bởi văn phạm phi ngữ cảnh G ở dạng chuẩn Greibach.
 Giải thuật đưa VPPNC G về VPPNC G’ dạng chuẩn Greibach:
 Bước 1: Loại bỏ các quy tắc rỗng và sau đó xây dựng VPPNC G ở
dạng CNF để sinh ra L. Giả sử G = (, {A1, A2, …, An}, P, A1)
 Bước 2: Để có được các quy tắc dạng Ai  a hoặc Ai  Aj  với
j>i thì phải chuyển Ai-dẫn xuất về dạng Ai  Aj  sao cho j>i. Điều
này thực hiện được bằng phương pháp qui nạp theo i và sử dụng
bổ đề 4.3 cuối cùng chúng ta có Ai  Aj , với i = 1,2,..,n-1 và j>i
hoặc Ai  a’. An-dẫn xuất sẽ có dạng An An hoặc An  a’


39

Bước 3: Chuyển An-dẫn xuất về dạng An  a. Ở đây sử dụng bổ
đề 4.4 để loại bỏ quy tắc dạng An  An.
 Bước 4: Biến đổi Ai-dẫn xuất về dạng Ai  a với i = 1,2,..,n-1 (sử
dụng bổ đề 4.3).
 Bước 5: Biến đổi các Zi-dẫn xuất về dạng Zi  a (tƣơng tự bƣớc
4).
Sau bước 5 chúng ta có G1 là VPPNC dạng GNF
 Ví dụ 4.10: Tìm VPPNC ở dạng GNF tương đương với văn phạm
G có các qui tắc sản sinh sau: S AA |a, A SS |b



40

10


DẠNG CHUẨN GREIBACH – GNF (TT)

DẠNG CHUẨN GREIBACH – GNF (TT)

Giải:
 Bước 1: Văn phạm G ở dạng CNF. Đặt A1 = S, A2 = A các quy tắc
trên chuyển thành A1  A2 A2 | a, A2  A1 A1 | b và khơng có quy
tắc rỗng.
 Bước 2:
 A1- dẫn xuất có đúng dạng theo yêu cầu: A1  A2 A2 | a
 A2  b là thỏa mãn điều kiện bước 2 ở trên. Sử dụng bổ đề 4.3
để biến đổi A2  A2 A2 A1, A2  a A1 .Vậy A2-dẫn xuất sẽ là: A2
 A2 A2 A1, A2  a A1 , A2  b.
 Bước 3: Áp dụng bổ đề 4.4 cho các A2-dẫn xuất. Thêm Z2 và biến
đổi A2  A2 A2 A1 về dạng yêu cầu:

A2  aA1, A2  b, A2  aA1Z2, A2  bZ2, Z2  A2 A1, Z2  A2 A1Z2
 Bước 4:
 A2-dẫn xuất là A2  aA1| b| aA1Z2 | bZ2
 Trong các A1-dẫn xuất chỉ cịn lại A1  a vì A1  A2A2 bị loại bỏ
theo bổ đề 4.3. Các A1 sau khi biến đổi là:
A1  a| aA1A2| bA2| aA1Z2A2| bZ2A2
 Bước 5: Những Z2-dẫn xuất cần biến đổi là Z2  A2 A1, Z2  A2 A1Z2
Áp dụng bổ đề 4.3 ta nhận được

Z2  aA1A1| bA1| aA1Z2A1| bZ2A1
Z2  aA1A1Z2| bA1Z2| aA1Z2A1Z2 | bZ2A1Z2

41

42

DẠNG CHUẨN GREIBACH – GNF (TT)


Cuối cùng văn phạm cần tìm ở dạng chuẩn GNF là
G = ({a,b},{A1, A2, Z2},P1, A1)
trong đó
P1 = {
A1  a| aA1A2| bA2| aA1Z2A2| bZ2A2
A2  aA1| b| aA1Z2 | bZ2
Z2  aA1A1| bA1| aA1Z2A1| bZ2A1
Z2  aA1A1Z2| bA1Z2| aA1Z2A1Z2 | bZ2A1Z2
}



43

VD 4.11. Cho VPPNC G ({0,1}, {S,A,B},P,S)
Với P =
{ S  AB
A  BS | 1
B  SA | 0
}

Tìm VPPNC ở dạng chuẩn GNF?

44

11



×