Ngôn ngữ và automata hữu hạn Formal Languagues and Finite Automata MỤC ĐÍCH: Trang bị những khái niệm về automata hữu hạn FA; Phân loại FA; các phép biến đổi tương đương giữa các
Trang 1Automata
Trang 22
Bài 3 Ngôn ngữ và automata hữu hạn
(Formal Languagues and
Finite Automata)
MỤC ĐÍCH:
Trang bị những khái niệm về automata hữu hạn (FA);
Phân loại FA;
các phép biến đổi tương đương giữa các loại FA;
Biểu thức chính qui (RE) và sự tương đương với FA;
YÊU CẦU:
Sinh viên nắm vững các khái niệm, các thuật toán biến đổi
và làm các dạng bài tập
Trang 3Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε (NFAε)
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
3
Trang 4Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε (NFAε)
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
4
Trang 53.1 Các khái niệm sơ lược
5
Automata là một máy trừu tượng (mô hình tính toán) có
cơ cấu và hoạt động đơn giản nhưng có khả năng đoán
nhận ngôn ngữ
Finite automata (FA) - mô hình tính toán hữu hạn: có
khởi đầu và kết thúc, mọi thành phần đều có kích thước hữu hạn cố định và không thể mở rộng trong suốt quá trình tính toán;
Hoạt động theo theo từng bước rời rạc (steps);
Nói chung, thông tin ra sản sinh bởi một FA phụ thuộc vào cả thông tin vào hiện tại và trước đó Nếu sử dụng bộ nhớ (memory), giả sử rằng nó có ít nhất một bộ nhớ vô hạn ;
Sự phân biệt giữa các loại automata khác nhau chủ yếu dựa trên việc thông tin có thể được đưa vào memory hay không;
Trang 63.1 Các khái niệm sơ lược
6
DFA (Deterministic
Finite Automata)
NFA (Nondeterministic
Finite Automata)
RE (Regular Expression)
RG (Regular Grammar) or RL
FA (Finite Automata)
Trang 73.1 Các khái niệm sơ lược
7
Đoán nhận ngôn ngữ: đoán nhận các từ của ngôn ngữ đó
Hoạt động của automata bắt đầu từ một trạng thái đặc biệt, trang thái đầu tiên (start state);
Giả sử rằng tại mỗi thời điểm (step, time step), automata đang ở một trạng thái nào đó (current state), đầu vào
của automata đón nhận một ký tự của chuỗi cần xử lý, dưới tác động của ký tự đó automata chuyển sang một trạng thái
kế tiếp (next state);
Chuỗi được đoán nhận nếu trạng thái cuối cùng của
automata rơi vào một trong các trạng thái kết thúc (finish states)
Trang 8Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε (NFAε)
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
8
Trang 93.2 Automata hữu hạn đơn định (DFA)
9
Định nghĩa 3.1: một DFA là một bộ năm:
A=(Q, Σ, δ, q0, F), trong đó:
q 0 Q : trạng thái bắt đầu (start state);
F Q : tập các trạng thái kết thúc (finish states)
Trong trường hợp D = Q × Σ ta nói A là một DFA đầy đủ
Trang 103.2 Automata hữu hạn đơn định (DFA)
10
Biểu diễn automata: Cho một automata thực chất là cho
hàm chuyển trạng thái của nó, có thể cho dưới dạng bảng chuyển trạng thái hoặc cho dưới dạng đồ thị chuyển
Định nghĩa 3.2: Đồ thị chuyển là một đa đồ thị có hướng (có thể có khuyên) G: Tập đỉnh của G được gán nhãn bởi các phần tử thuộc Q, các cung được gán nhãn bởi các phần tử
thuộc Σ, nếu a ∈ Σ, p,q ∈ Q và δ(q, a) = p thì sẽ có một cung
từ đỉnh q tới đỉnh p được gán nhãn a Đỉnh vào của đồ thị
chuyển ứng với trạng thái ban đầu q0
Định nghĩa 3.3: Bảng chuyển – bảng có kích cỡ |Q|×|Σ|, trong đó dòng i cột j của bảng là 𝛿(𝑞𝑖, 𝑎𝑗) hoặc bỏ trống
Trang 113.2 Automata hữu hạn đơn định (DFA)
Trang 12Thứ tự đọc từ trái qua phải
3.2 Automata hữu hạn đơn định (DFA)
12
Trang 133.2 Automata hữu hạn đơn định (DFA)
13
Ví dụ 3.1: Cho automata A = ({q0; q1; q2}; {0, 1}, , q0, {q1}) với hàm chuyển được cho dưới dạng bảng chuyển và đồ thị chuyển như sau:
Ngôn ngữ được đoán nhận bởi automat A:
L = {1*0*01x : x {0, 1}*}
Trang 1414
Ví dụ 3.2: Automat sau nhận dạng ngôn ngữ gồm chẵn các
số 1 và chẵn các số 0
3.2 Automata hữu hạn đơn định (DFA)
Quá trình đoán nhận các xâu: 001011, 101010, 10010
Trang 153.2 Automata hữu hạn đơn định (DFA)
Chuỗi ω = a1a2 an được đoán nhận bởi DFA A (có nghĩa là
) nếu tồn tại một đường đi bắt đầu từ trạng thái đầu q0 và kết thúc ở trạng thái kết với dãy nhãn của đường đi
là a1a2 an
Ngôn ngữ được chấp nhận bởi một automata A:
L(A) = { x | δ’( q0, x ) F }
Các ngôn ngữ chấp nhận bởi automata hữu hạn đơn định
được gọi là ngôn ngữ chính quy
' q , F
Trang 163.2 Automata hữu hạn đơn định (DFA)
16
Thuật toán đoán nhận chuỗi:
q:= q0; c:= ký hiệu tiếp theo của chuỗi;
Trang 17Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε (NFAε)
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
3.7.4 Sự tương đương giữa NFAε và RE
17
Trang 183.3 Automata hữu hạn đa định (NFA)
18
DFA tại một thời điểm với một trạng thái và một ký tự nhập vào thì máy chỉ có thể chuyển đến không nhiều hơn một
trạng thái
NFA là automata mà ứng với một trạng thái và một ký tự
nhập, có thể có không, một hoặc nhiều phép chuyển trạng thái
Ví dụ 3.3: automata đa định sau nhận dạng các xâu kết
thúc bằng 01
Trang 1919
3.3 Automata hữu hạn đa định (NFA)
Xét quá trình automata A nhận dạng xâu 00101:
Trang 2020
Định nghĩa 3.5: Automat hữu hạn đa định được định
nghĩa bởi bộ 5:
A = (Q, , , q0, F) trong đó:
Ánh xạ δ là một hàm đa trị (hàm không đơn định), vì vậy A
được gọi là không đơn định;
3.3 Automata hữu hạn đa định (NFA)
Trang 2121
Chú ý: khái niệm δ(q, a) là tập hợp tất cả các trạng thái p
sao cho có phép chuyển từ trạng thái q trên nhãn a
ĐN 3.6: Hàm chuyển trạng thái mở rộng (của NFA):
1 δ(q, ) = {q}
2 δ(q, wa) = { p | r trong δ(q, w) mà pδ(r, a) }
= δ( δ(q,w), a)
3 δ(P, w) = qP δ(q, w) với P Q
Ngôn ngữ L(A), với A là NFA (Q, Σ, δ, q0, F) là tập hợp :
L(A) = {w | δ(q0, w) có chứa một trạng thái trong F}
3.3 Automata hữu hạn đa định (NFA)
Trang 223.3 Automata hữu hạn đa định (NFA)
Ngôn ngữ được đoán nhận bởi automata cho ở trên???
Trang 23q4
Ø {q4}
q3
{q2} {q2}
q0
1
0 Trạng thái
Input
• δ(q0, 01) = δ( δ(q0, 0), 1) = δ({q0, q3},1) = δ(q0, 1)
Trang 243.3 Automata hữu hạn đa định (NFA)
24
Ví dụ 3.6:
Trang 253.3 Automata hữu hạn đa định (NFA)
25
Ví dụ 3.7:
Trang 263.3 Automata hữu hạn đa định (NFA)
26
Ví dụ 3.8:
Trang 27Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε (NFAε)
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
27
Trang 2828
3.4 NFA với dịch chuyển ε
• Ví dụ 3.9: Xây dựng automata đoán nhận chuỗi:
0*1* 2*
• Định nghĩa 3.7: NFA với -dịch chuyển (ký hiệu: NFA)
là bộ năm:
A= (Q, , , q0, F), trong đó:
Trang 2929
Ví dụ 3.9: xây dựng NFA chấp nhận chuỗi 0*1*2*
3.4 NFA với dịch chuyển ε
Trang 303.4 NFA với dịch chuyển ε
30
Ví dụ 3.10: tìm automata biểu diễn các số thực
1. Có thể có một dấu + hoặc - ở đầu
Trang 3131
Ví dụ 3.11: Automat cho ví dụ trước:
Bảng chuyển của automata E có dạng:
3.4 NFA với dịch chuyển ε
Trang 3232
ĐN 3.10: Hàm chuyển trạng thái mở rộng (của NFA):
mở rộng δ thành δ*
1 δ* : Q x Σ* → 2Q
2 δ*(q, w) = { p | có đường đi từ q tới p theo nhãn w, trên
đường đi có thể chứa cạnh nhãn }
ĐN 3.11: bao đóng ký hiệu -CLOSURE(), *) là tất
cả các trạng thái có thể chuyển tới bằng dãy {}*:
1 *(q) = { p | có đường đi từ q tới p theo nhãn }
2 *(P) = qP *(q)
3.4 NFA với dịch chuyển ε
Trang 333.4 NFA với dịch chuyển ε
33
Ta có:
1 δ*(q, ) = *(q)
2 δ*(q,a) = *(δ(δ*(q, ),a)) = *(δ(*(q),a))
3 δ*(q, wa) = *( δ( δ*(q, w), a)) hoặc
δ*(q, wa) = *(P) với P = { p | r δ*(q, w), p δ(r, a)}
Trang 343.4 NFA với dịch chuyển ε
Trang 353.4 NFA với dịch chuyển ε
Trang 36Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
36
Trang 373.5 Sự tương đương giữa DFA và NFA
37
Nhận xét: Việc thiết kế các NFA dễ dạng hơn so với DFA vì không bị ràng buộc Rõ ràng DFA chỉ là một trường hợp
riêng của NFA
Câu hỏi: Liệu lớp ngôn ngữ nhận biết bởi NFA có rộng hơn DFA?
Trả lời: Với mọi ngôn ngữ L nhận biết bởi một NFA thì đều
có một DFA nhận biết L
Định lý 1: Nếu L là tập được chấp nhận bởi một NFA thì tồn tại một DFA chấp nhận L
Trang 3838
Giải thuật tổng quát xây dựng DFA từ NFA:
Giả sử NFA A={Q, Σ, δ, q0, F} chấp nhận L, giải thuật xây dựng DFA A’={Q’, Σ, δ’, q0’, F’} chấp nhận L như sau:
o Q’ = 2Q , phần tử trong Q’ được ký hiệu là [q0, q1, …, qi]
o Đổi tên các trạng thái [q0, q1, …, qi]
3.5 Sự tương đương giữa DFA và NFA
Trang 4040
Ví dụ 3.13: Tìm DFA tương đương cho NFA trong ví dụ 3.3
3.5 Sự tương đương giữa DFA và NFA
Trang 41DFA:
0
1
Trang 42Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính qui
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
42
Trang 433.6 Sự tương đương giữa NFA và DFA
43
Định lý 2: Nếu L được chấp nhận bởi một NFA thì L cũng được chấp nhận bởi một NFA không có -dịch chuyển
Thuật toán: Giả sử ta có NFA A(Q, Σ, δ, q0, F) chấp nhận
L, ta xây dựng: NFA A’={Q, Σ, δ’, q0, F’} như sau:
1 F’ = F q 0 nếu *( q 0 ) chứa ít nhất một trạng thái
thuộc F Ngược lại, F’ = F;
2 δ’(q, a) = δ*(q, a)
Hệ quả: Nếu L là tập được chấp nhận bởi một NFA thì tồn tại một DFA chấp nhận L
Trang 4444
Giải thuật xây dựng δ’ cho DFA tương đương:
Tìm kiếm T = * (q 0 ) ; T chưa được đánh dấu;
Thêm T vào tập Q’ (of DFA);
while (xét trạng thái T Q’ chưa đánh dấu) {
Trang 45
q1
{q2} {q1, q2}
Inputs δ’
3.6 Sự tương đương giữa NFA và DFA
Trang 463.6 Sự tương đương giữa NFA và DFA
Trang 473.6 Sự tương đương giữa NFA và DFA
0,1, ,9
Trang 483.6 Sự tương đương giữa NFA và DFA
Trang 493.6 Sự tương đương giữa NFA và DFA
Trang 503.6 Sự tương đương giữa NFA và DFA
Trang 51Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
51
Trang 523.7.1 Khái niệm về biểu thức chính quy
52
Định nghĩa: Biểu thức chính quy được định nghĩa một
cách đệ quy như sau:
1 là biểu thức chính quy L()={}
là biểu thức chính quy L()={}
nếu a, a là biểu thức chính quy L(a)={a}
2 Nếu r, s là các biểu thức chính quy thì:
Trang 533.7.1 Khái niệm về biểu thức chính quy
Trang 543.5.1 Khái niệm về biểu thức chính quy
Trang 553.7.1 Khái niệm về biểu thức chính quy
Trang 563.7.1 Khái niệm về biểu thức chính quy
Do đó: 01* + 1 được hiểu như sau: (0(1)*) + 1
Bài tập: Viết biểu thức chính quy cho ngôn ngữ gồm các
xâu 0, 1 trong đó bắt đầu bằng số 1, kết thúc bằng chuỗi 01
Trang 57Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
57
Trang 583.7.2 Sự tương đương giữa FA và RE
58
Sự tương đương giữa DFA, NFA, và ε-NFA đã được thiết lập
Để chứng minh chúng tương đương với biểu thức chính quy (REGEX) ta chỉ cần chứng minh:
1 Với mọi DFA D, có một REGEX R sao cho L(R)=L(D)
2 Với mọi RE R có NFAε A sao cho L(A)=L(R)
Trang 593.7.2 Sự tương đương giữa FA và RE
59
Định lý 3: nếu r là RE thì tồn tại một NFA chấp nhận L(r)
Chứng minh: quy nạp theo số phép toán
1 Xét trường hợp r không có phép toán nào:
Trang 603.7.2 Sự tương đương giữa FA và RE
Trang 613.7.2 Sự tương đương giữa FA và RE
Trang 623.7.2 Sự tương đương giữa FA và RE
Trang 633.7.2 Sự tương đương giữa FA và RE
Trang 64Bài 3 Ngôn ngữ và automata hữu hạn
3.1 Các khái niệm sơ lược
3.2 Automata hữu hạn đơn định (DFA)
3.3 Automata hữu hạn đa định (NFA)
3.4 Automata với dịch chuyển ε
3.5 Sự tương đương giữa DFA và NFA
3.6 Sự tương đương giữa NFAε và DFA
3.7 Biểu thức chính quy
3.7.1 khái niệm về biểu thức chính quy
3.7.2 Sự tương đương giữa FA và RE
3.7.3 Sự tương đương giữa DFA và RE
64
Trang 653.7.3 Sự tương đương giữa DFA và RE
65
Định lý 4: Nếu L được chấp nhận bởi một DFA, thì L được
ký hiệu bởi một RE
Định nghĩa đệ quy của Rk
Trang 663.7.3 Sự tương đương giữa DFA và RE
ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc
Giả sử ta có bổ đề trên đúng với k-1, tức là tồn tại RE
Trang 673.7.3 Sự tương đương giữa DFA và RE
Trang 683.7.3 Sự tương đương giữa DFA và RE