You are on page 1of 31

Chương 3: Automata hữu hạn &

Biểu thức chính quy

Nội dung:
• Khái niệm DFA & NFA
• Sự tương đương giữa DFA & NFA
• Biểu thức chính quy
• Các tính chất của tập chính quy

1
Phân loại FA

DFA
Deterministic
Finite Automata
FA
(Finite Automata)
NFA
Nondeterministic
Finite Automata

Biểu thức
chính quy
2
Automata hữu hạn đơn định (DFA)
Ví dụ:
0 1 1 0 0 1 0 1
c
Input
1
Start
q0 1 q1

0 0 Bộ điều khiển
a b
Trạng thái bắt đầu
0
0 1

q2 q3
Trạng thái kết thúc
1
d x
Phép chuyển trên nhãn x

Q : tập hữu hạn các trạng thái (p, q…)


Σ : bộ chữ cái nhập (a, b … ; w, x, y …)
M=(Q, Σ, δ, q0, F) δ : hàm chuyển, ánh xạ: Q x Σ → Q
q0 ∈ Q : trạng thái bắt đầu.
F ⊆ Q : tập các trạng thái kết thúc. 3
Mở rộng hàm chuyển trạng thái
• δ(q, ε) = q
• δ(q, wa) = δ( δ(q,w), a) với ∀ w, a

Ngôn ngữ được chấp nhận:


L(M) = { x | δ( q0, x ) ∈ F }

Ngôn ngữ
Ví dụ: chuỗi nhập w=110101 chính quy
• δ(q0, 1) = q1
• δ(q0, 11) = δ(q1, 1) = q0
• δ(q0, 110) = δ(q1, 10) = δ(q0, 0) = q2
• δ(q0, 1101) = δ(q1, 101) = δ(q0, 01) = δ(q2, 1) = q3
• δ(q0, 11010) = … = δ(q3, 0) = q1
• δ(q0, 110101) = … = δ(q1, 1) = q0 ∈ F 4
Giải thuật hình thức
• Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ
L(M) được chấp nhận bởi automata M.
• Input: chuỗi nhập x$
• Output: câu trả lời ‘YES’ hoặc ‘NO’
• Giải thuật:
q := q0 ;
c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}
While c <> $ do
begin
q := δ(q, c);
c := nextchar ;
end
If (q in F) then write("YES") else write("NO");

5
Automata hữu hạn không đơn định (NFA)
• Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001
1 1
0 0

Start 0 0
q0 q3 q4

q1 q0 0 q0 1 q0 0 q0 0 q0 1 q0

1 0 1 0 0 1

q3 q1 q3 q3 q1
q2 0

0 1
1 q4 q4

Nhận xét:
• Ứ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.
6
• DFA là một trường hợp đặc biệt của NFA
Định nghĩa NFA
Q : tập hữu hạn các trạng thái.
Σ : bộ chữ cái nhập.
M=(Q, Σ, δ, q0, F) δ : hàm chuyển ánh xạ Q x Σ → 2Q
q0 ∈ Q : trạng thái bắt đầu.
F ⊆ Q : tập các trạng thái kết thúc.
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.

Hàm chuyển trạng thái mở rộng:


• δ(q, ε) = {q}
• δ(q, wa) = { p | có một trạng thái r trong δ(q, w) mà p∈δ(r, a) }
= δ( δ(q,w), a)
• δ(P, w) = ∪ q∈P δ(q, w) với ∀P ⊆ Q
7
Ví dụ về NFA
Ví dụ: xét chuỗi nhập w=01001 và NFA đã cho ở trên
• M( {q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} )

δ Input • δ(q0, 0) = {q0,q3}


Trạng thái 0 1 • δ(q0, 01) = δ( δ(q0, 0), 1)
q0 {q0,q3} {q0,q1}
= δ({q0, q3},1) = δ(q0, 1)
q1 Ø {q2}
∪ δ(q3, 1) = {q0, q1}
q2 {q2} {q2}
q3 {q4} Ø
• δ(q0, 010) = {q0, q3}
q4 {q4} {q4} • δ(q0, 0100) = {q0, q3, q4}
• δ(q0, 01001) = {q0, q1, q4}
Do q4 ∈ F nên w=01001 ∈ L(M)
8
Sự tương đương giữa DFA & NFA

Đị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.

Giả sử NFA M={Q, Σ, δ, q0, F} chấp nhận L


Ta xây dựng DFA M’={Q’, Σ, δ’, q0’, F’} chấp nhận L
• Q’ = 2Q . Một phần tử trong Q’ được ký hiệu là [q0, q1,
…, qi] với q0, q1, …, qi ∈ Q
• q0’ = [q0]
• F’ là tập hợp các trạng thái của Q’ có chứa ít nhất một
trạng thái kết thúc trong tập F của M
• Hàm chuyển δ’([q1, q2,..., qi], a) = [p1, p2,..., pj] nếu và
chỉ nếu δ({q1, q2,..., qi }, a) = {p1, p2,..., pj}
9
Ví dụ về sự tương đương giữa DFA & NFA
Ví dụ: NFA M ({q0, q1}, {0, 1}, δ, q0, {q1}) với hàm chuyển
δ(q0,0) = {q0, q1}, δ(q0,1) = {q1}, δ(q1,0) = ∅, δ(q1,1) = {q0, q1}
Ta sẽ xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q0], F’)
• Q’ = {∅, [q0], [q1], [q0, q1]}
• F’ = {[q1], [q0, q1]}
• Hàm chuyển δ’
 δ’(∅, 0) = δ’(∅, 1) = ∅
 δ’([q0], 0) = [q0, q1]
 δ’([q0], 1) = [q1]
 δ’([q1], 0) = ∅
 δ’([q1], 1) = [q0, q1]
 δ’([q0, q1], 0) = [q0, q1]
 δ’([q0, q1], 1) = [q0, q1] 10
NFA với ε- dịch chuyển (NFAε)
Ví dụ: xây dựng NFA chấp nhận chuỗi 0*1*2*
0 1 2
Start 0, 1 1, 2
q0 q1 q2

0, 1, 2

0 1 2
Start ε ε
q0 q1 q2

Định nghĩa: NFAε M(Q, Σ, δ, q0, F)


• δ : hàm chuyển ánh xạ Q x (Σ ∪ {ε}) → 2Q
• Khái niệm δ(q, a) là tập hợp các trạng thái p sao cho
có phép chuyển nhãn a từ q tới p, với a ∈ (Σ ∪ {ε}) 11
Mở rộng hàm chuyển trạng thái cho NFAε
Định nghĩa ε-CLOSURE:
● ε-CLOSURE(q) = { p | có đường đi từ q tới p theo nhãn ε }
● ε-CLOSURE(P) = ∪ q∈P ε-CLOSURE(q)
Hàm chuyển trạng thái mở rộng: mở rộng δ thành δ*
• δ* : Q x Σ* → 2Q
• δ*(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 ε }
Ta có:
• δ*(q, ε) = ε-CLOSURE(q)
• δ*(q,a) = ε-CLOSURE(δ(δ*(q, ε),a))
• δ*(q, wa) = ε-CLOSURE( δ( δ*(q, w), a) )
Cách khác: δ*(q, wa) = ε-CLOSURE(P)
với P = { p | r ∈ δ*(q, w) và p ∈ δ(r, a) }
• δ*(R, w) = ∪ q∈R δ*(q, w) 12
Mở rộng hàm chuyển trạng thái cho NFAε
0 1 2

Ví dụ: Start ε ε
q0 q1 q2

Xét chuỗi nhập w = 012


• δ*(q0, ε) = ε-CLOSURE(q0) = {q0, q1, q2}
• δ*(q0, 0) = ε-CLOSURE(δ(δ*(q0, ε), 0))
= ε-CLOSURE(δ({q0, q1, q2}, 0)) = ε-CLOSURE(δ(q0, 0) ∪
δ(q1, 0) ∪ δ(q2, 0) ) = ε-CLOSURE( {q0} ∪ ∅ ∪ ∅ )
= ε-CLOSURE({q0}) = {q0, q1, q2}
• δ*(q0, 01) = ε-CLOSURE(δ(δ*(q0, 0), 1))
= ε-CLOSURE(δ({q0, q1, q2}, 1)) = ε-CLOSURE({q1})
= {q1,q2}
• δ*(q0, 012) = ε-CLOSURE(δ(δ*(q0, 01), 2))
= ε-CLOSURE(δ({q1, q2}, 2)) = ε-CLOSURE({q2}) = {q2} 13
• Do q2 ∈ F nên w ∈ L(M)
Giải thuật hình thức cho NFAε
Mục đích: mô phỏng hoạt động của NFAε
Input: chuỗi nhập x$
Output: câu trả lời ‘YES’ (x được chấp nhận) hoặc ‘NO’
Giải thuật:
q := ε-CLOSURE (q0) ;
c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}
While c <> $ do
begin
q := ε-CLOSURE (δ(q, c));
c := nextchar ;
end
If (q in F) then write("YES") else write("NO");

14
Sự tương đương giữa NFAε và NFA
Định lý 2: nếu L được chấp nhận bởi một NFA có ε-dịch
chuyển thì L cũng được chấp nhận bởi một NFA không có
ε-dịch chuyển.
Giả sử: NFAε M(Q, Σ, δ, q0, F) chấp nhận L
Ta xây dựng: NFA M’={Q, Σ, δ’, q0, F’}
Với:
• F’ = F ∪ q0 nếu ε-CLOSURE(q0) chứa một trạng thái thuộc F.
Ngược lại, F’ = F
• δ’(q, a) = δ*(q, a)

15
Sự tương đương giữa NFAε và NFA
0 1 2
Ví dụ: Start
q0 ε q1 ε q2

Xây dựng NFA tương đương M’={Q, Σ, δ’, q0, F’}


• Q = {q0, q1, q2}
• Σ = {0, 1, 2}
• Trạng thái bắt đầu: q0
• F’ = {q0, q2} δ’ Inputs
• Hàm chuyển δ’ Trạng thái 0 1 2
0 1 2 q0 {q0, q1, q2} {q1, q2} {q2}
Start 0, 1 1, 2
q0 q1 q2 q1 ∅ {q1, q2} {q2}
q2 ∅ ∅ {q2}
0, 1, 2

16
Xây dựng DFA từ NFA(ε)
Ví dụ: xây dựng DFA tương đương với NFAε sau:
M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})
ε
a
2 3
ε ε ε ε
Start a b b
0 1 6 7 8 9 10
ε ε
b
4 5
ε

Ta xây dựng DFA M’= (Q’, Σ, δ’, q0’, F’) tương đương M
• Trạng thái bắt đầu: q0’ ↔ ε-CLOSURE(q0)
• F’ = { p | trong ký hiệu của p có chứa ít nhất một trạng
thái của F }
• Xây dựng hàm chuyển δ’ 17
Giải thuật xây dựng hàm chuyển δ’
Giải thuật:
T := ε-CLOSURE (q0) ; T chưa được đánh dấu ;
Thêm T vào tập các trạng thái Q’ của DFA ;

While Có một trạng thái T của DFA chưa được đánh dấu do
Begin
Đánh dấu T; { xét trạng thái T}
For Với mỗi ký hiệu nhập a do
begin
U:= ε-closure(δ(T, a))
If U không có trong tập trạng thái Q’ của DFA then
begin
Thêm U vào tập các trạng thái Q’ của DFA ;
Trạng thái U chưa được đánh dấu;
δ[T, a] := U;{δ[T, a] là phần tử của bảng chuyển DFA}
end;
end;
End;

18
Xây dựng DFA từ NFA(ε)
● ε-CLOSURE(q0) = {0, 1, 2, 4, 7} → q0’ = [0, 1, 2, 4, 7] = A
● ε-CLOSURE(δ(A, a)) = ε-CLOSURE({3, 8}) = {1, 2, 3, 4, 6,
7, 8} → B
● ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7}
→C
● ε-CLOSURE(δ(B, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6,
7, 9} → D
● ε-CLOSURE(δ(C, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C
● ε-CLOSURE(δ(D, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5,
6, 7, 10} → E
● ε-CLOSURE(δ(E, a)) = ε-CLOSURE({3, 8}) → B 19
● ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C
Xây dựng DFA từ NFA(ε)
• Bảng hàm chuyển

Ký hiệu nhập b
Trạng thái
a b C
A B C b a b
B B D Start a b
C B C A B D E
b
a
D B E a
a
E B C

• Ký hiệu bắt đầu: q0’ = A (↔ ε-CLOSURE(q0) )


• Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng
thái 10 ∈ F)

20
Biểu thức chính quy (RE)
Vài ví dụ:
• 00 : là biểu thức chính quy biểu diễn tập {00}
• (0+1)* : tập hợp tất cả các chuỗi số 0 và số 1, kể cả
chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 ... }
• (0+1)*011 : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng
bởi 011 = {011, 0011, 1011, 00011, 11011, ... }
• (0+1)*00(0+1)* : tập hợp tất cả các chuỗi 0,1 có ít nhất
hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000,
1001, 011001, ... }
• (0+ ε)(1+10)* : tất cả các chuỗi không có hai số 0 liên
tiếp = {ε, 0, 01, 010, 1, 10, 01010, 0111, ... }
• 0*1*2* : {ε, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, ... }
• 00*11*22* : tất cả các chuỗi trong tập 0*1*2* với ít nhất
một ký hiệu 0, 1 và 2 ↔ viết gọn thành 0+1+2+
21
Biểu thức chính quy (RE)
Định nghĩa: cho Σ là một bộ chữ cái. BTCQ trên Σ là các tập
hợp mà chúng mô tả được định nghĩa đệ quy như sau:
● ∅ là BTCQ ký hiệu cho tập rỗng
● ε là BTCQ ký hiệu cho tập {ε}
● ∀a ∈ Σ, a là BTCQ ký hiệu cho tập {a}
● Nếu r và s là các BTCQ ký hiệu cho các tập hợp R và
S thì (r + s), (rs) và ( r*) là các BTCQ ký hiệu cho các
tập hợp R ∪ S, RS và R* tương ứng

Thứ tự ưu tiên:
Phép bao đóng > Phép nối kết > Phép hợp
Ví dụ:
• Biểu thức ((0(1*)) + 1) có thể viết là 01*+1
22
Tính chất đại số của BTCQ
Phép hợp: Phép nối kết:
• r+∅=∅+r=r • rε = εr = r
• r+r=r • r∅ = ∅r = ∅
• r+s=s+r • (r + s) t = rt + st
• (r + s) + t = r + (s + t) = r + s + t • r (s + t) = rs + rt

Phép bao đóng: Tổng hợp:


• ε* = ε • (r* + s*)* = (r*s*)* = (r + s)*
• ∅* = ∅ • (rs)*r = r(sr)*
• r*r* = r* • (r*s)* r* = (r + s)*
• (r*)* = r*
• r* = ε + r + r2 + … + rk + …
• r* = ε + r+
• (ε + r)+ = (ε + r)* = r*
• r*r = r r* = r+
23
Sự tương đương giữa NFAε và BTCQ
Định lý 3: nếu r là BTCQ thì tồn tại một NFA với ε-dịch
chuyển chấp nhận L(r)
Chứng minh: quy nạp theo số phép toán
• Xét r không có phép toán nào
Start Start Start a
q0 q0 qf q0 qf

r= ε r=∅ r=a
Các NFAε cho các kết hợp đơn

• Xét r có i phép toán: r = r1 + r2, r = r1r2 hoặc r = r1*


 Xây dựng NFAε M1 = (Q1, Σ1, δ1, q1, {f1}) và M2 = (Q2,
Σ2, δ2, q2, {f2}) sao cho L(M1) = L(r1) và L(M2) = L(r2)
 Xây dựng NFAε M như sau:
24
Sự tương đương giữa NFAε và BTCQ
ε q1 M1 f1 ε
Start
• r = r1 + r2 q0 f0
ε M2 ε
q2 f2

Start ε
• r = r1 r2 q1 M1 f1 q2 M2 f2

• r = r1 * Start ε M1 ε
q0 q1 f1 f0

ε
25
Sự tương đương giữa NFAε và BTCQ
Ví dụ: xây dựng NFAε chấp nhận BTCQ r = 01* + 1
• r có dạng: r = r1 + r2 với r1 = 01* và r2 = 1
• r1 có dạng r1 = r3r4 với r3 = 0 và r4 = 1*
• r4 có dạng r4 = r5* với r5 = 1 ε

Start 1 Start ε 1 ε
q1 q2 q7 q5 q6 q8
r2
r4 = r5* = 1* ε ε
Start 0
q3 q4
r3 0 ε ε 1 ε
Start q3 q4 q7 q5 q6 q8
Start 1 ε
q5 q6 r1 = r3r4 = 01*
r5 1
q1 q2
ε
r = r1 + r2 = 01* + 1 ε
Start ε
q9 ε ε q10
ε ε ε
q3 0 q4 q7 q5 1 q6 q8 26
ε
Sự tương đương giữa DFA và BTCQ
Đị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 BTCQ
Chứng minh:
• L được chấp nhận bởi DFA M({q1, q2,..., qn}, Σ, δ, q1, F)
• Đặt Rkij = {x | δ(qi, x) = qj và nếu δ(qi, y) = ql (y ⊂ x) thì l ≤ k}
(hay Rkij là tập hợp tất cả các chuỗi làm cho automata đi từ
trạng thái i đến trạng thái j mà không đi ngang qua trạng
thái nào lớn hơn k)
• Định nghĩa đệ quy của Rkij :
Rkij = Rk-1ik(Rk-1kk)*Rk-1kj ∪ Rk-1ij
{a | δ(qi, a) = qj}, nếu i ≠ j
R ij =
0
{a | δ(qi, a) = qj} ∪ {ε}, nếu i = j
27
Sự tương đương giữa DFA và BTCQ
• Ta sẽ chứng minh (quy nạp theo k) bổ đề sau: với mọi
Rkij đều tồn tại một biểu thức chính quy ký hiệu cho Rkij .
 k = 0: R0ij 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
BTCQ rk-1lm sao cho L(rk-1lm) = Rk-1lm
 Vậy đối với Rkij ta có thể chọn BTCQ
rkij = (rk-1ik)(rk-1kk)*(rk-1kj) + rk-1ij
→ bổ đề đã được chứng minh
● Ta có nhận xét:
L(M) = ∪qj ∈F Rn1j
● Vậy L có thể được ký hiệu bằng BTCQ
r = rn1j1 + rn1j2 + … + rn1jp
với F = {qj1, qj2, …, qjp} 28
Sự tương đương giữa DFA và BTCQ
Ví dụ: viết BTCQ cho DFA
1

Start 0 1
q1 q2 q3
0 0, 1

Ta cần viết biểu thức:


r = r312 + r313
Ta có:
• r312 = r213(r233)*r232 + r212
• r313 = r213(r233)*r233 + r213

29
Sự tương đương giữa DFA và BTCQ
k=0 k=1 k=2
rk11 ε ε (00)*
rk12 0 0 0(00)*
rk13 1 1 0*1
rk21 0 0 0(00)*
rk22 ε ε + 00 (00)*
rk23 1 1 + 01 0*1
rk31 ∅ ∅ (0 + 1)(00)*0
rk32 0+1 0+1 (0 + 1)(00)*
rk33 ε ε ε + (0 + 1)0*1

Thay vào và rút gọn, ta có:


r = 0*1((0 + 1)0*1)* (ε + (0 + 1)(00)*) + 0(00)*
30
Mối liên hệ giữa FA và BTCQ
Sơ đồ liên hệ:
Định lý 1
DFA NFA

Định lý 4 Định lý 2

RE NFAε
Định lý 3

31

You might also like