1
Chương 2
NGÔN NGỮ CHÍNH QUY,
BIỂU THỨC CHÍNH QUY
•
I.Ngôn ngữ Chính quy & Biểu thức chính quy.
•
II. Văn phạm chính quy suy rộng
•
III. Quan hệ giữa NNCQ VÀ NNCQ suy rộng
2
1. Ngôn ngữ chính quy
•
Các phép toán trên tập các ngôn ngữ. Giả sử L
1
, L
2
là hai ngôn ngữ trên từ điển V, khi đó định
nghĩa:
•
Phép tuyển. Tuyển của hai ngôn ngữ này là
•
L
1
∪ L
2
= {w | w∈ L
1
, hoặc w∈ L
2
}
•
Phép ghép. Ghép hai ngôn ngữ này là
L
1
.L
2
= {αβ | α ∈ L
1
, β∈ L
2
}
•
Phép lặp (Phép đóng Kleene). Với ngôn ngữ L trên V định nghĩa phép lặp của L là ngôn ngữ L*:
•
{ }
λ
==
=∪∪=
−
∞
=
01
0
3210
;.
, *
LLLE
LLLLLL
nn
n
n
1.Ngôn ngữ chính quy.
•
Giả sử V= {a
1
,a
2
, ,a
n
}, ngôn ngữ φ và ngôn ngữ {a
i
} gọi là các ngôn ngữ sơ cấp trên V.
•
Định nghĩa ngôn ngữ chính quy.
•
a) Các ngôn ngữ sơ cấp trên V gọi là NNCQ trên V ;
•
b) Nếu E và F là hai NNCQ trên V thì E ∪ F , E.F và E
*
cũng là các ngôn ngữ chính quy
trên V;
•
c) Không có NNCQ nào khác trên V ngoài các NNCQ được định nghĩa trong các bước a)
và b) ở trên.
•
Để diễn đạt NNCQ người ta dùng khái niệm BTCQ.
3
2.Biểu thức chính quy
•
Trên bảng V ta định nghĩa đệ quy Biểu thức chính quy như sau:
a) φ là BTCQ, nó biểu diễn ngôn ngữ rỗng.
b ) λ là một BTCQ, nó biểu diễn ngôn ngữ {λ}
c) Nếu a∈V thì a là một BTCQ nó biểu diễn ngôn ngữ {a};
d) Giả sử r và s là 2 BTCQ trên V biểu diễn 2 ngôn ngữ chính quy R và S tương ứng khi đó:
•
(r) ∪ (s) là BTCQ biểu diễn ngôn ngữ R ∪ S
•
(r).(s) là BTCQ biểu diễn ngôn ngữ R.S
•
(r)* là BTCQ biểu diễn ngôn ngữ R*
Định lý 1. Một ngôn ngữ trên V là chính quy khi và chỉ khi nó biểu diễn được bằng một BTCQ.
4
3. Văn phạm & ngôn ngữ chính quy suy rộng
Định nghĩa.
a.Văn phạm G={T,N,S,P} gọi là Văn phạm chính quy suy rộng nếu và chỉ nếu các sản xuất
dạng A→ aB, A →a, A → λ, ở đây A, B∈N còn a∈T, λ- xâu rỗng .
b.Ngôn ngữ do VPCQ suy rộng sinh ra gọi là ngôn ngữ chính quy suy rộng.
Dễ thấy:
•
L
VPCQ
= L
VPCQSR
\ {λ}.
•
Định lý 2 . Ngôn ngữ L⊆L* là NNCQ khi và chỉ khi có VPCQ suy rộng G={T,N,S,P} sao cho
L(G)=L.
5
4.Một số ví dụ.
6
BTCQ (suy rộng) VPCQ (suy rộng)
NNCQ (suy rộng)
Sinh raBiểu diễn
4.Một số ví dụ.
•
Ví dụ 1.Cho A= {0, 11 } và B= {1, 10,110 } với Σ={0,1}. Tìm A∪B, B.A.
•
Bài giải.
A ∪B={0,11}∪{1,10,110} ={0,11,1,10,110}
A.B={01,010,0110, 111,1110,11110}
•
Ví dụ 2. Cho A={0}, B={0,1}, C={11}. Tìm A*, B* và C*.
•
Bài giải.
A*={λ}∪A
1
∪A
2
∪…={λ} ∪{0}∪{0}{0} ∪ ={λ,0,0
2
, 0
3
,…}
B*={λ}∪B
1
∪B
2
∪B
3
∪…={λ} ∪{0,1}∪{0,1}{0,1} ∪ …
= Σ* = {λ, 0, 1, 00, 01, 10,11, 000,001,…}
C*={λ}∪C
1
∪C
2
∪…={λ,11, 1111, 111111,…
= {11 }*= {λ,1
2n
}
7
4.Một số ví dụ.
•
Ví dụ 3. Cho các biểu thức chính quy trên Σ={0,1} sau:
•
10*, (10)*, 0 ∪01, 0(0∪1)* và 00(0∪1)*11.
•
Hãy tìm NNCQ trên Σ được biểu diễn bởi các BTCQ trên.
•
Bài giải.
•
10* biểu diễn NNCQ {10
n
, n≥0}
(10)* biểu diễn NNCQ {(10)
n
, n≥0}
0 ∪01 biểu diễn NNCQ {0, 01}
0(0∪1)* biểu diễn NNCQ {0w | w ∈ {0,1 }* };
00(0∪1)*11 biểu diễn NNCQ {00w11 | w ∈ {0,1 }* };
8
4.Một số ví dụ.
Ví dụ 4. Tìm các NNCQ có các BTCQ quy trên Σ={0,1} sau đây:
•
a) 00*1 b)(0∪1)(0,1)(0,1)*0000*
•
c) 0*∪111*(00)* d) (1∪10)*
Bài giải.
a) 00*1 có NNCQ L={00
n
1 | n≥0 }
b) (0∪1)(0∪1)(0∪1)*0000* có NNCQ
L= {00w0
n
, 01w0
n
, 10w0
n
, 11w0
n
| n≥3 }
c) 0*∪111*(00)* có NNCQ L= {0
n
, 111
m
0
2k
| n,m,k≥0 }
d) (1∪10)* có NNCQ L= {λ }∪ {1, 10 }∪{1, 10 }{1,10 }∪ …
= {λ, 1, 10, 11,101, 110, 1010,
| n≥0 }
gồm xâu rỗng và các xâu có số 1 đứng đầu và không có hai số 0 liền nhau
9
4.Một số ví dụ.
•
Ví dụ 5. Cho VPCQ suy rộng G=<Σ,∆,I,P> với
P={I→1A, I→λ,I→0, A→0B, B→1B, B→1},
Tìm : a) L(G)=?
b) Tìm BTCQ trên Σ,
Bài giải.
a) L(G)={0, λ, 101
n
| n≥1}
b) 0∪ λ ∪ 1011*
Ví dụ 6. Cho BTCQ abba*b ∪ abaa*b ∪ abbb.
Xây dựng VPCQ sinh ra NNCQ suy rộng được biểu diễn bởi BTCQ trên.
Bài giải. NNCQ ứng với BTCQ trên:
L={abba
n
b, abaa
m
b, abbb| n≥0}
10
4.Một số ví dụ.
•
VPCQ sinh ra NNCQ :
•
P={I→aA
1
, A
1
→bA
2
, A
2
→bA
3
,A
3
→ aA
3
, A
3
→ b,
I→aB
1
, B
1
→bB
2
, B
2
→aB
3
, B
3
→aB
3
, B
3
→b,
I→aC
1
, C
1
→bC
2
, C
2
→bC
3
, C
3
→ b
Các xâu trong NNCQ đều có dẫn xuất đầy đủ trong G.
Ví dụ 7. Cho BTCQ 00(111)*00 ∪ 1(00)*1 ∪ 01* ∪ 11 ∪ λ.
a) Hãy tìm NNCQ suy rộng được biểu diễn bởi BTCQ trên.
b) Xây dựng VPCQ suy rộng sinh ra NNCQ suy rộng trên.
Bài giải.
a) NNCQ suy rộng
L(G)={00(111)
n
00, 1(00)
m
1, 01
k
, 11, λ |n,m,k≥0}
11
4.Một số ví dụ.
•
b) VPCQ suy rộng sinh ra NNCQ s.rộng trên là G={T,N,S,P}
•
Với T= {0,1, λ}, N= {S, A
1
, A
2
, A
3
, A
4
, A
5
, B
1
, B
2
, D, E } trong đó:
•
P={S→0A
1
, A
1
→0A
2
, A
2
→1A
3
, A
3
→1A
4
, A
4
→1A
2
,A
2
→0A
5
,
A
5
→0, S→1B
1
, B
1
→0B
2
, B
2
→0B
1
, B
1
→1,
S→0D, D→1, S→1E, E→1, S→λ }
•
Kiểm ra các xâu dẫn xuất đầy đủ của các xâu trong L.
Ví dụ 8. Cho ngôn ngữ
L={λ, 1w1 , 0 | w∈ {0,1 }*}
Xây dựng VPCQ suy rộng G={T,N,S,P} sao cho L(G)=L và chỉ ra BTCQ biểu diễn L.
12
4.Một số ví dụ.
Bài giải.
•
Σ={0,1}, ∆={S, A}
•
P={S→ λ, S→1A, A→0A, A→1A, A→ λ, S→0}.
D(λ)=D(S,λ),
D(1w1)=D(S,1A, 1wA, 1w1A, 1w1)
D(0)=D(S, 0)
•
BTCQ của L là λ ∪1(0∪1)*1∪0
Ví dụ 9. Cho ngôn ngữ
L={λ, 0
n
1w , 1
m
0w, 1w | n,m ≥1, w∈ {0,1 }*}
Xây dựng VPCQ suy rộng G={T,N,S,P} sao cho L(G)=L và chỉ ra BTCQ biểu diễn L.
13
4.Một số ví dụ.
Bài giải.
•
Σ={0,1}, ∆={S, A,B,C,D,E}
•
P={S→ λ, S→0A, A→0A, A→1B, B→0B, B→1B, B→ λ,
S→1C, C→1C, C →0D
, D→0D, D→1D, D→ λ,
S→1E, E→0E, E→1E, E→ λ}.
Có thể CM G sinh ra L bằng cách tìm các dẫn xuất đầy đủ.
BTCQ biểu diễn L(G)=L là:
λ ∪ 00*1(0∪1)* ∪ 11*0(0∪1)*∪1(0∪1)*
14
4.Một số ví dụ.
•
Ví dụ 1.
15
4.Một số ví dụ.
•
Ví dụ 1.
16