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

Biểu thức chính quy và ngôn ngữ chính quy

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 (271.36 KB, 33 trang )

1
Chương 3
BIỂU THỨC CHÍNH QUI VÀ
NGÔN NGỮ CHÍNH QUI
2
1. Biểu thức chính qui
1.1 Toán tử của biểu thức chính qui
1.2 Xây dựng biểu thức chính qui
1.3 Độ ưu tiên của các toán tử
2. Định lý của Kleene
2.1 Chuyển FA sang biểu thức chính qui
2.2 Chuyển biểu thức chính qui sang FA
2.3 Định lý Kleen
3. Những luật đại số trên biểu thức chính qui
3.1 Kết hợp và giao hoán
3.2 Đồng nhất thức và giá trị triệt tiêu
3.3 Những luật phân phối
3.4 Luật bất biến giá trị
3.5 Các luật trên biể
u thức chính qui
3.6 Kiểm tra luật đại số trên biểu thức chính qui
3
Biểu thức chính qui
(Regular Expression - RE)
 FA là những máy ảo nhận dạng ngôn ngữ, trong
khi RE mô tả ngôn ngữ như biểu thức đại số
 Ứng dụng:
1. Các lệnh tìm kiếm chuỗi

2. Các bộ phát sinh bộ phân tích từ vựng.
4


Ngôn ngữ L:Tập các chuỗi thỏa điều kiện:
- Hoặc một số 0 theo sau bởi nhiều số 1
- Hoặc một số 1 theo sau bởi nhiều số 0.
RE biểu diễn ngôn ngữ L:
Toán tử của RE
Ba toán tử trên RE
 Hội của hai ngôn ngữ L và M (L  M):
Tập của các chuỗi hoặc thuộc về L hoặc thuộc
về M.
5
 Nối của hai ngôn ngữ L và M (L.M hay LM):
{xy | x  L và y  M}
 Bao đóng của ngôn ngữ L là L*:
Tập các chuỗi hình thành từ việc nối của
không/nhiều chuỗi thuộc L.
6
Ví dụ: L = {0, 11} thì
L
0
= {ε}, L
1
= L = {0, 11},
L
2
= LL = {00, 011, 110, 1111}
L
3
= LLL = {000, 0011, 0110, 1100, 01111, 11011,
11110, 111111}
→ L* = L

0
 L
1
 L
2
 …
Chú ý
:
Ø* = {ε}, vì Ø
0
= {ε}, Ø
n
= Ø (n  1)
7
Xây dựng biểu thức chính qui
 Dạng cơ sở của biểu thức đại số là hằng số
và/hoặc biến. Những biểu thức phức tạp hơn
được xây dựng bằng cách áp dụng các toán tử
trên những biểu thức đã được xây dựng.
 RE cũng được xây dựng tương tự
 Nếu RE E là hợp lệ thì tồn tại ngôn ngữ L(E) mà
E biểu diễn.
8
Bước qui nạp: Gồm 4 phần
1. Hằng ε và Ø là RE
2. Nếu a là một ký hiệu bất kỳ thì a là RE:
Bước cơ sở: Bao gồm 2 phần:
 Nếu E và F là RE thì E + F là RE:
 Nếu E và F là RE thì EF là RE:
 Nếu E là RE thì E* là RE:

 Nếu E là RE thì (E) là RE :
9
Ví dụ: Xây dựng RE R:
R = {w | w  {0, 1}*, 00  w và 11  w}.
Bước cơ sở: 0 và 1 là RE biểu diễn ngôn ngữ {0}
và {1}.
Bước qui nạp: Để có những chuỗi bao gồm
không/nhiều chuỗi con 01, ta sử dụng RE (01)*
10
Tuy nhiên, L((01)*) không phải là ngôn ngữ cần
tìm.
Cách 1
: Xây dựng thêm 3 RE :



11
Cách 2:
- Muốn không/có số 1 đứng đầu
- Muốn không/có số 0 đứng sau
12
Độ ưu tiên của các toán tử
1. Dấu ngoặc tròn.
2. Toán tử ‘*’ (bao đóng)
3. Toán tử ‘.’ (nối)
4. Toán tử ‘+’ (hội)
Thứ tự độ ưu tiên toán tử giảm dần như sau:
13
Ví dụ: Biểu thức 01* + 1 tương đương với biểu
thức (0(1*)) + 1.

 01* + 1: Tương đương với biểu thức (0(1*)) + 1
 (01)* + 1:
 01
+
:
14
Định lý của Kleene
 Về cơ bản, RE dùng để mô tả ngôn ngữ, còn FA
dùng để nhận dạng ngôn ngữ.
 FA và RE cùng chấp nhận lớp “ngôn ngữ chính
qui”
1. Ngôn ngữ được định nghĩa bởi DFA, NFA
hay ε–NFA
2. Ngôn ngữ được định nghĩa bởi RE
15
X  Y: lớp ngôn ngữ được chấp nhận bởi X sẽ
được chấp nhận bởi Y.
RE DFA
ε–NFA NFA
Tính tương đương giữa RE, DFA, ε–NFA và NFA.
16
Từ DFA đến RE: Khái niệm
 Xây dựng RE chấp nhận ngôn ngữ của DFA khá
phức tạp.
 RE sẽ mô tả tập các chuỗi mà mỗi ký hiệu trong
chuỗi là nhãn một đường truyền trong sơ đồ
truyền của DFA.
17
RE xây dựng từ DFA thông qua qui nạp:
 Bước cơ sở: Xây dựng các RE đơn giản

 Bước qui nạp: RE được mở rộng dần
Khi các đường truyền đến được mọi trạng
thái  những RE phát sinh biểu diễn tất cả các
đường truyền có thể.
18
Định lý 3.1: Mọi ngôn ngữ chính qui (nghĩa là
ngôn ngữ được chấp nhận bởi FA nào đó) đều
có thể được mô tả bởi RE.
Chứng minh:
Xây dựng tập RE, mô tả các đường truyền (mở
rộng dần) trên sơ đồ truyền của DFA A.
19
Một đường truyền biểu diễn bởi R
ij
(k)
.
Trục tung biểu diễn trạng thái, trục hoành thể hiện
từng bước đi của đường truyền.
1
n
i
j
k
20
Phương pháp qui nạp, dựa trên giá trị của k  [0, n],
được sử dụng để xây dựng biểu thức R
ij
(k)
,
Bước cơ sở: k = 0.

21
Nếu i ≠ j:
Kiểm tra sự tồn tại phép truyền từ trạng thái i
sang trạng thái j trên DFA A.
22
Nếu i = j:
-Nếu tồn tại đường truyền
-Nếu không tồn tại đường truyền
23
Bước qui nạp: Giả sử tồn tại đường truyền từ
trạng thái i sang j với điều kiện mọi trạng thái bên
trong được đánh số  k.
1. Đường truyền đi qua trạng thái k ít nhất một lần.
24
ikkkj
)1( k
ik
R
*)1(
)(
k
kk
R
)1( k
kj
R
Chú ý: Nếu đường truyền đi qua trạng thái k một
lần thì chỉ tồn tại 2 đoạn
25
Tập của các nhãn trên mọi đường truyền chính là

tập các chuỗi của ngôn ngữ, mô tả bởi RE:
2. Không có trạng thái nào trong đường truyền là
trạng thái k.
26
Tổ hợp trường hợp (1) và (2), ta có RE:
)1(*)1()1()1()(
)(


k
kj
k
kk
k
ik
k
ij
k
ij
RRRRR
27
Ví dụ: Chuyển DFA trong hình trên thành RE.
DFA này chấp nhận tất cả các chuỗi có ít nhất
một số 0.
1
2
Start
10, 1
0
28

Dựa trên định lý 3.1, Bước cơ sở xây dựng các RE sau:
R
11
(0)
= ε + 1
R
12
(0)
= 0
R
21
(0)
= Ø
R
22
(0)
= ε + 0 + 1
29
Bước qui nạp: Xây dựng các RE phức tạp hơn.
Luật xây dựng R
ij
(1)
dựa vào Định lý 3.1:
30
(ε + 0 + 1) + Ø(ε + 1)*0 R
22
(1)
Ø+ Ø(ε + 1)*(ε + 1) R
21
(1)

0 + (ε + 1)(ε + 1)*0 R
12
(1)
(ε + 1) + (ε + 1)(ε + 1)*(ε + 1) R
11
(1)
Rút gọnThay thế trực tiếp
Dựa vào bảng của các R
ij
(0)
, ta có:
31
ØR = RØ = Ø
Ø + R = R + Ø = R
Các nguyên tắc rút gọn
(ε + R)* = R*
32
Luật xây dựng R
ij
(2)
dựa vào Định lý 3.1:
ε+0+1 + (ε+0+1)(ε+0+1)*(ε+0+1)R
22
(2)
Ø+ (ε + 0 + 1)(ε + 0 + 1)*ØR
21
(2)
1*0 + 1*0(ε + 0 + 1)*(ε + 0 + 1)R
12
(2)

1* + 1*0(ε + 0 + 1)*ØR
11
(2)
Rút gọnThay thế trực tiếp
33
Cuối cùng, RE tương đương với DFA là hội của tất
cả các RE thỏa:
(a)
(b)
R
12
(2)
= 1*0(0 + 1)*.
 Đây là RE mô tả những chuỗi 0, 1 chứa ít nhất
một số 0.
34
Chuyển DFA sang RE bằng loại bỏ trạng thái
 Phương pháp xây dựng RE: Loại bỏ trạng thái.
Giả sử tồn tại đường truyền: q → s → p.
Hủy s

 Nhãn của một đường truyền là nối của các RE (nhãn)
dọc theo từng cung truyền.
 Với FA có nhãn cung truyền là RE thì ngôn ngữ của
nó là hợp tất cả các đi từ
trạng thái đến trạng thái
35
S
q
1

q
k
p
1
p
m
Q
1
Q
k
P
1
P
m
R
11
R
1m
R
km
R
k1
S
Dạng tổng
quát trước khi
trạng thái s bị
hủy.
36
Hiện trạng
sau khi loại

trạng thái s.
q
1
q
k
p
1
p
m
R
11
+ Q
1
S
*
P
1
R
km
+ Q
k
S
*
P
m
R
k1
+ Q
k
S

*
P
1
R
1m
+ Q
1
S
*
P
m
37
Chiến lược xây dựng RE từ FA
1. Với mỗi trạng thái chấp nhận q: Loại bỏ dần
các trạng thái
2. Nếu q ≠ q
0
R
S
T
U
Start
38
3. Nếu trạng thái bắt đầu cũng chính là trạng thái chấp
nhận
Start
R
4. RE cần tìm là hội
39
Ví dụ: Xét NFA trong hình

Cần chuyển NFA sang automaton có nhãn là RE.
A B
C D
Start
0 + 1
0 + 1 0 + 11
A B
C D
Start
0, 1
0, 1 0, 11
40
Loại bỏ trạng thái B:
A và C lần lượt là trạng thái trước và sau của B.
A
C D
Start
0 + 1
1(0 + 1) 0 + 1
41
Loại bỏ trạng thái C:
A
D
Start
0 + 1
1(0 + 1)(0 + 1)
→ Mô tả chuỗi 0/1, có số 1 tại vị trí thứ ba tính từ
cuối.
42
Loại bỏ trạng thái D:

A
C
Start
0 + 1
1(0 + 1)
(0 + 1)*1(0 + 1) + (0 + 1)*1(0 + 1)(0 + 1)
43
Chuyển RE sang FA
 Mọi ngôn ngữ L = L(R) của RE R cũng là ngôn
ngữ L = L(E) của ε–NFA E xác định.
Bước cơ sở:
Bước qui nạp:
 Tất cả những automata được xây dựng sẽ là
ε–NFA có duy nhất một trạng thái chấp nhận.
44
Định lý 3.2: Mọi ngôn ngữ được định nghĩa
bởi RE thì cũng được định nghĩa bởi FA và
như vậy, nó là ngôn ngữ chính qui.
Chứng minh:
45
Bước cơ sở: Có 3 automata cơ sở
ε
(a)
(b)
a
(c)
a) RE là ε.
b) RE là Ø.
c) RE là a.
46

Bước qui nạp:
Giả thiết qui nạp
: Phát biểu của định lý là đúng đối
với RE thành phần gần nhất của RE đang xét.

Có 4 trường hợp xảy ra:
47
1. Hội R + S của 2 RE thành phần R và S.
Ngôn ngữ của FA trong hình (a) là:
ε
εε
εR
S
(a)
48
2. NốiRS của 2 RE thành phần R và S.
 Những đường truyền được chấp nhận bởi
automaton (b) sẽ có nhãn là chuỗi
R S
ε (b)
49
3. Bao đóng R* của RE thành phần R
i. Đi trực tiếp
Đường truyền chấp nhận chuỗi
ii. Từ trạng thái bắt đầu chung
→ Tất cả các chuỗi thuộc ngôn ngữ
εε
R
ε
ε

(c)
50
4. Dấu ngoặc (R) dành cho RE R.

×