LOGO
NGÔN NGỮ CHÍNH QUI
Regular Languages
CHƯƠNG 2
CÂU HỎI
L = {a, b, c} là ngôn ngữ trên
2
L
0
= ?
L
1
= ?
L
2
= ?
L
3
= ?
L
0
= {}
L
1
= {a, b, c}
L
2
= { aa, ab, ac,
ba, bb, bc,
ca, cb, cc}
L
3
= { aaa, aab, aac,
aba, abb, abc,
aca, acb, acc, … }
Nội dung
1. Bao đóng Kleene và tổng Kleene
2. Ngôn ngữ chính qui (regular language)
3. Biểu thức chính qui (regular expression)
4. Đồ thị biểu diễn biểu thức chính qui
3
Nội dung
1. Bao đóng Kleene và tổng Kleene
2. Ngôn ngữ chính qui
3. Biểu thức chính qui (regular expression)
4. Đồ thị biểu diễn biểu thức chính qui
4
Bao đóng Kleene & tổng Kleene
Xét L là một ngôn ngữ trên bảng chữ cái
L
*
là bao đóng Kleene (Kleene closure)
L
+
là tổng Kleene (Kleene plus)
5
* 0 1 2
0
12
1
n
n
n
n
L L L L L
L L L L
Bao đóng Kleene & tổng Kleene
Ví dụ: L = {a, b, c} là ngôn ngữ trên
L
*
= ?
L
+
= ?
6
* 0 1 2
0
12
1
n
n
n
n
L L L L L
L L L L
L
+
? L
*
L
+
L
*
Bao đóng Kleene & tổng Kleene
Ví dụ: L = là ngôn ngữ trên
L
*
= ?
L
+
= ?
7
L
*
= {}
L
+
=
*
= {} =
Nội dung
1. Bao đóng Kleene và tổng Kleene
2. Ngôn ngữ chính qui (regular language)
3. Biểu thức chính qui (regular expression)
4. Đồ thị biểu diễn biểu thức chính qui
8
Ngôn ngữ chính qui
Một ngôn ngữ chính qui (NNCQ) L trên bảng
chữ cái là một ngôn ngữ được định nghĩa
đệ qui:
L = là một NNCQ trên
a, L = { a } là một NNCQ trên
Nếu L, L
1
, L
2
là NNCQ trên thì (L
1
L
2
), L
1
L
2
,
L* cũng là NNCQ trên
Không có ngôn ngữ nào khác là NNCQ
9
Ngôn ngữ chính qui
Ví dụ
L = {} ?
• NNCQ vì {} =
*
L = {001, 110} ?
• {001, 110} = ({0}{0}{1} {1}{1}{0})
10
Mọi ngôn ngữ hữu hạn đều chính qui
Nội dung
1. Bao đóng Kleene và tổng Kleene
2. Ngôn ngữ chính qui (regular language)
3. Biểu thức chính qui (regular expression)
4. Đồ thị biểu diễn biểu thức chính qui
11
Biểu thức chính qui
Biểu diễn các NNCQ trên
12
Biểu thức chính qui
Ngôn ngữ chính qui
r =
L =
r =
L = {}
a, r = a
L = {a}
r
1
, r
2
là biểu thức chính qui của L
1
, L
2
r
1
+ r
2
L
1
+ L
2
r
1
r
2
L
1
L
2
r
1
*
L
1
*
chỉ gồm các biểu thức chính qui thỏa đk trên
Biểu thức chính qui
Ví dụ
1. L = {0}
2. L = {001}
3. L = {0, 10}
4. L = {1, }{001}
5. L = {110}
*
{0, 1}
6. L = {1}
*
{10}
13
1. r = 0
2. r = 001
3. r = 0 + 10
4. r = (1+)001
5. r = (110)
*
(0+1)
6. r = (1)
*
10
Biểu thức chính qui
Lũy thừa và tổng Kleene
14
Biểu thức chính qui
Ngôn ngữ chính qui
r là biểu thức chính qui của L
r
n
L
n
r
+
= r
*
r
L
+
= L* L
Nội dung
1. Bao đóng Kleene và tổng Kleene
2. Ngôn ngữ chính qui (regular language)
3. Biểu thức chính qui (regular expression)
4. Đồ thị biểu diễn biểu thức chính qui
15
Đồ thị biểu diễn BTCQ
Các bước xây dựng đồ thị, G(r)
Bước 1:
• Bắt đầu với đỉnh nội và đỉnh kết thúc
• Đỉnh nội được ký hiệu có mũi tên vào
• Đỉnh kết thúc được ký hiệu bởi vòng tròn đôi
• Vẽ cạnh nối từ đỉnh nội đến đỉnh kết thúc
• Gán nhãn của cạnh là r
16
r
Đồ thị biểu diễn BTCQ
Các bước xây dựng đồ thị
Bước 2: lặp lại quá trình sau đến khi nào các
nhãn không chứa các phép toán +, . , * thì dừng
• Thay cạnh có nhãn f + g bởi hai cạnh với nhãn f và g
17
f + g
f
g
Đồ thị biểu diễn BTCQ
Các bước xây dựng đồ thị
Bước 2(tt): lặp lại quá trình sau đến khi nào các
nhãn không chứa các phép toán +, . , * thì dừng
• Thay cạnh có nhãn f g bằng cách thêm một đỉnh và
hai cạnh với nhãn f và g như sau
18
f g
f
g
Đồ thị biểu diễn BTCQ
Các bước xây dựng đồ thị
Bước 2(tt): lặp lại quá trình sau đến khi nào các
nhãn không chứa các phép toán +, . , * thì dừng
• Thay cạnh có nhãn f
*
bằng cách thêm một đỉnh và ba
cạnh với nhãn , f,
như sau
19
f
*
f
Đồ thị biểu diễn BTCQ
Ví dụ: r = (11 + 0)
*
(00+1)*
20
(11 + 0)
*
(00+1)*
(00+1)*(11+0)*
(00+1)
(11+0)
Đồ thị biểu diễn BTCQ
Ví dụ: r = (11 + 0)
*
(00+1)*
21
(00+1)
(11+0)
00
11
0
1
Đồ thị biểu diễn BTCQ
22
00
11
0
1
0
1
0
1
1 0
Đồ thị biểu diễn biểu thức chính quy
Ví dụ: r = (1* + 110)*0
Vẽ đồ thị biểu diễn cho biểu thức r
23
NEXT
Automat hữu hạn
Ứng dụng
• Vending machines
• Video games: Pac-Man’s ghost
• Internet Protocol: TCP as a DFA
Yêu cầu
• Slide
• Câu hỏi (10)
• Mỗi nhóm không báo cáo đặt 1 câu hỏi cho từng
ứng dụng
24