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

Bài giảng Lí thuyết ngôn ngữ hình thức và ôtômát: Chương 2 - Nguyễn Thị Minh Huyền

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 (254.13 KB, 41 trang )

Lí thuyết ngôn ngữ hình thức và ôtômát
Chương 2. Ngôn ngữ chính quy và ôtômát hữu hạn

Nguyễn Thị Minh Huyền

Khoa Toán - Cơ - Tin học
Trường Đại học Khoa học Tự nhiên Hà Nội


Ngôn ngữ chính quy

Văn phạm chính quy
Ôtômat hữu hạn
Nguồn (đồ thị chuyển)

Ch2. NN chính quy& ôtômát hữu hạn

1 / 37


Ôtômát hữu hạn

Nội dung
1. Ôtômát hữu hạn
Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy
Ôtômát hữu hạn, không đơn định
Đơn định hoá ôtômát
Bài tập
2. Tính đóng của lớp ngôn ngữ chính quy
3. Biểu thức chính quy
4. Điều kiện cần của ngôn ngữ chính quy


5. Điều kiện cần và đủ của ngôn ngữ chính quy

Ch2. NN chính quy& ôtômát hữu hạn

2 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Ví dụ
Dàn máy phát thanh:
P (nút Power): 2 chế độ ON/OFF
S (nút chọn nguồn phát): chuyển đổi giữa 3 chế độ
CD/Tape/Radio. Chỉ thay đổi được trạng thái của S khi
máy bật (P = ON). Khi tắt máy (P = OFF ), S không thay
đổi giá trị
Ban đầu, máy tắt và ở chế độ CD.
Bài toán: Cho 1 dãy thao tác bấm nút P hoặc S. Dãy thao
tác này có cho phép đưa máy về trạng thái bật và ở chế độ
Radio không?

Ch2. NN chính quy& ôtômát hữu hạn

3 / 37


Ôtômát hữu hạn


Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Định nghĩa hình thức
Ôtômat hữu hạn, đơn định
Bộ năm A = (S, Σ, s0 , δ, F )
S: tập hữu hạn các trạng thái, S = ∅
Σ = ∅ : bảng chữ cái vào
s0 ∈ S trạng thái khởi đầu
F ⊆ S : tập trạng thái kết
δ : S × Σ → S : hàm chuyển trạng thái
δ(p, a) = q : máy đang ở trạng thái p, nếu đọc được chữ cái
vào a thì chuyển sang trạng thái q
biểu diễn dạng bảng

Ch2. NN chính quy& ôtômát hữu hạn

4 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Biểu diễn ôtômat

Biểu diễn bằng đồ thị chuyển (nguồn)
Đỉnh vào, đỉnh ra/kết, cung

1


1
0

s1

0

Ch2. NN chính quy& ôtômát hữu hạn

s2

5 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Ngôn ngữ đoán nhận bởi ôtômat hữu hạn, đơn định

Hàm chuyển mở rộng δˆ : S × Σ∗ → S
ˆ
δ(p,
)=p
ˆ ay) = δ(δ(p,
ˆ
∀p ∈ S, a ∈ Σ, y ∈ Σ∗ : δ(p,
a), y)

Ngôn ngữ đoán nhận bởi ôtômat A:

ˆ 0 , x) ∈ F }
L(A) = {x ∈ Σ∗ |δ(s

Ch2. NN chính quy& ôtômát hữu hạn

6 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Tương đương giữa ôtômat và văn phạm chính quy

Ôtômat hữu hạn, đơn định A tương đương văn phạm
chính quy G:
L(A) = L(G)
Chuyển từ ôtômat sang văn phạm chính quy
Chuyển từ văn phạm chính quy sang ôtômat
G = ({a, b, c}, {S, A, B}, S, P), P gồm các quy tắc:
S → aA|bA|cB
A → cA|aB
B → bB|a|c

Ch2. NN chính quy& ôtômát hữu hạn

7 / 37


Ôtômát hữu hạn


Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy

Bài tập

Cho bảng chữ cái Σ = {a, b, c}, xây dựng ôtômat đoán
nhận các ngôn ngữ sau:
1. L1 = {an |n ≥ 2}
2. L2 = {x ∈ Σ∗ ||x| ≥ 1}
3. L3 = {am b n c k |m ≥ 1, n ≥ 0, k ≥ 2}
4. L4 = {x ∈ Σ∗ ||x| lẻ}

Ch2. NN chính quy& ôtômát hữu hạn

8 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, không đơn định

Ôtômát hữu hạn, không đơn định

Khác với ôtômat đơn định ở hàm chuyển:
δ : S × (Σ ∪ { }) → 2S
δ(p, a) ⊆ S

Biểu diễn bằng đồ thị (nguồn):
Đỉnh vào, đỉnh ra/kết, cung rỗng, cung cốt yếu, đỉnh cốt yếu
(có cung cốt yếu đi vào)


Ngôn ngữ đoán nhận bởi ôtômat không đơn định:
Mở rộng hàm chuyển như ôtômat đơn định
L(A) = {x ∈ Σ∗ |δ(s0 , x) ∩ F = ∅}

Ch2. NN chính quy& ôtômát hữu hạn

9 / 37


Ôtômát hữu hạn

Ôtômát hữu hạn, không đơn định

Một số khái niệm, tính chất

Đơn định: hàm chuyển đơn trị
Đầy đủ: hàm chuyển xác định khắp nơi
Đơn định và đầy đủ: Trong bảng hàm chuyển mọi ô đều có
1 trạng thái
2 ôtômat/nguồn tương đương: đoán nhận/sinh cùng một
ngôn ngữ
Ôtômat đơn định tương đương với ôtômat không đơn định?

Ch2. NN chính quy& ôtômát hữu hạn

10 / 37


Ôtômát hữu hạn


Đơn định hoá ôtômát

Đơn định hoá nguồn
Cho nguồn không đơn định A. Xây dựng nguồn đơn định,
đầy đủ A tương đương với A
Kí hiệu:
S(A) – tập tất cả các đỉnh, F (A) - tập đỉnh ra, D(A) – tập
đỉnh cốt yếu
N(p, q) : tập các từ đi từ đỉnh p đến đỉnh q
Cho a ∈ Σ, δ(p, a) = {q ∈ D(A)|a ∈ N(p, q)}
δ(M, a) = {∪δ(p, a), p ∈ M}, M ⊂ D(A)

s0 = {s0 }
Tập đỉnh của A : ∀M ∈ S(A ) đã xác định, a ∈ Σ, bổ sung
cung ghi chữ cái a tới đỉnh δ(M, a)
Tập đỉnh kết: F (A ) = {M ∈ S(A )|M ∩ F (A) = ∅}

Ch2. NN chính quy& ôtômát hữu hạn

11 / 37


Ôtômát hữu hạn

Đơn định hoá ôtômát

Đơn định hóa ôtômat
Cho ôtômat không đơn định A. Xây dựng ôtômat đơn
định, đầy đủ A tương đương với A

A = (S, Σ, s0 , δ, F ). Giả sử ∀s ∈ S, δ(s, ) = ∅
Xây dựng T : 2S × Σ → 2S
∀s ∈ S, ∀a ∈ Σ, T (s, a) = {s ∈ S|s ∈ δ(s, a)}
∀B ⊆ S, ∀a ∈ Σ, T (B, a) = {∪T (s, a)|s ∈ B}

A = (S , Σ, {s0 }, δ , F )
S ⊆ 2S , xây dựng trong quá trình xây dựng hàm T
∀p ∈ S : δ (p, a) = T (p, a)
F = {p ∈ S |p ∩ F = ∅}

Ch2. NN chính quy& ôtômát hữu hạn

12 / 37


Ôtômát hữu hạn

Đơn định hoá ôtômát

Tóm tắt lại

Ngôn ngữ chính quy có thể sinh/đoán nhận bởi:
văn phạm chính quy
ôtômat hữu hạn (luôn đưa về được dạng đơn định, đầy đủ)
nguồn/đồ thị chuyển (luôn đưa về được dạng đơn định, đầy
đủ)

Ch2. NN chính quy& ôtômát hữu hạn

13 / 37



Ôtômát hữu hạn

Bài tập

Bài tập

Xây dựng ôtômat đoán nhận một ngôn ngữ đã cho
1. Xây dựng 3 ôtômat đoán nhận các tập các số tự nhiên chia
hết cho 2, cho 3 và cho 5.
2. Xây dựng ôtômat mô phỏng máy bán nước tự động dùng
tiền xu (1000, 2000, 5000). Giá 1 lon nước ngọt là 5000, 1
chai nước suối là 3000.

Ch2. NN chính quy& ôtômát hữu hạn

14 / 37


Tính đóng của lớp ngôn ngữ chính quy

Nội dung
1. Ôtômát hữu hạn
Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy
Ôtômát hữu hạn, không đơn định
Đơn định hoá ôtômát
Bài tập
2. Tính đóng của lớp ngôn ngữ chính quy
3. Biểu thức chính quy

4. Điều kiện cần của ngôn ngữ chính quy
5. Điều kiện cần và đủ của ngôn ngữ chính quy

Ch2. NN chính quy& ôtômát hữu hạn

15 / 37


Tính đóng của lớp ngôn ngữ chính quy

Các phép toán trên nguồn

Trang 53 -> 66 (giáo trình)
Phép lấy phần bù
Phép hợp
Phép giao
Phép lấy tích ghép
Phép soi gương
Phép lặp, lặp cắt
Phép chia trái, chia phải

Ch2. NN chính quy& ôtômát hữu hạn

16 / 37


Tính đóng của lớp ngôn ngữ chính quy

Tính đóng của lớp ngôn ngữ chính quy


Lớp ngôn ngữ chính quy đóng với các tất cả phép toán trên
ngôn ngữ: hợp, giao, lấy phần bù, tích ghép, lặp, lặp cắt,
soi gương, chia trái, chia phải.

Ch2. NN chính quy& ôtômát hữu hạn

17 / 37


Biểu thức chính quy

Nội dung
1. Ôtômát hữu hạn
Ôtômát hữu hạn, đơn định và ngôn ngữ chính quy
Ôtômát hữu hạn, không đơn định
Đơn định hoá ôtômát
Bài tập
2. Tính đóng của lớp ngôn ngữ chính quy
3. Biểu thức chính quy
4. Điều kiện cần của ngôn ngữ chính quy
5. Điều kiện cần và đủ của ngôn ngữ chính quy

Ch2. NN chính quy& ôtômát hữu hạn

18 / 37


Biểu thức chính quy

Biểu thức chính quy (Regular expression)

Định nghĩa (quy nạp)
Cho Σ = {a1 , a2 , . . . , an }
Cơ sở quy nạp: B = ai , B = , B = ∅ là các biểu thức chính
quy, biểu diễn các ngôn ngữ {ai }, { }, ∅
Quy nạp:
Cho B1 , B2 là các biểu thức chính quy
Khi đó B1 .B2 , B1 ∪ B2 , B1∗ , (B1 ) cũng là các biểu thức chính
quy

Chỉ có các biểu thức được xác định như trên mới là các
biểu thức chính quy trên bảng chữ cái Σ

Ch2. NN chính quy& ôtômát hữu hạn

19 / 37


Biểu thức chính quy

Biểu thức chính quy – nguồn

Xây dựng nguồn tương đương với biểu thức chính quy
Cơ sở quy nạp: Nguồn sinh {a}, { }, ∅
Các phép toán: hợp, tích ghép, lặp: phép toán trên nguồn

Xây dựng biểu thức chính quy tương đương với nguồn
Đường đi thông thường: tích ghép, hợp
Chu trình: lặp

Ch2. NN chính quy& ôtômát hữu hạn


20 / 37


Biểu thức chính quy

Biểu thức chính quy

Ngôn ngữ chính quy ⇔ Biểu thức chính quy
Biểu thức chính quy trong lập trình
Tìm kiếm xâu theo mẫu (pattern) nào đó
VD:
Xử lí gộp tên tệp
Tìm kiếm trong Unix/Linux
Tìm kiếm, thay thế xâu trong emacs
Công cụ xử lí xâu trong các ngôn ngữ lập trình

Ch2. NN chính quy& ôtômát hữu hạn

21 / 37


Biểu thức chính quy

Bài tập ứng dụng biểu thức chính quy
Cú pháp phổ biến của biểu thức chính quy
Mỗi kí tự biểu diễn chính nó, trừ các kí tự điều khiển
(metacharacter): ? + - * . { } [ ] ( ) \ | ˆ $
Để biểu diễn các kí tự điều khiển, thêm dấu \ vào trước
[03a−c] ≡ {0, 3, a, b, c}, [ˆ 15] ≡ tập các kí tự khác 1 và 5

. biểu diễn kí tự bất kì, ˆ và $ đánh dấu đầu và cuối dòng
\< và \> đánh dấu đầu và cuối từ, \b đánh dấu biên từ, \B
đánh dấu xâu rỗng không ở biên từ
Phép lặp: ?, *, +, {n}, {n, }, {n, m}
Phép lấy tích ghép, phép hợp |
\n biểu diễn xâu con nằm giữa cặp () thứ n trước đó.

Ch2. NN chính quy& ôtômát hữu hạn

22 / 37


Biểu thức chính quy

Bài tập ví dụ về RE

Viết biểu thức chính quy theo cú pháp trên để tìm các xâu
sau trong các tệp :
(a) Từ language
(b) Các dòng trong đó từ language xuất hiện ít nhất 2 lần
(c) Các số thập phân

Ch2. NN chính quy& ôtômát hữu hạn

23 / 37


Biểu thức chính quy

Bài tập ví dụ về RE và FSA (Finite State Automata)


Xác định biểu thức chính quy và ôtômat đơn định hữu hạn
đoán nhận các ngôn ngữ :
(i) Tập số thực dấu phẩy động
(ii) Tập các xâu gồm các chữ số 0-9 có chứa xâu con 11
(iii) Tập ngày tháng theo định dạng ngày(2 chữ số)/tháng(2 chữ
số). Chú ý ràng buộc số ngày trong tháng.

Ch2. NN chính quy& ôtômát hữu hạn

24 / 37


×