Chúng là một công cụ đoán nhận một lớp các ngôn ngữ đơn giản gọi là chính qui.. Từ các ví dụ trên ta thấy quá trình đoán nhận một xâu nào đó đối với ôtômat M đơn định là quá trình biến đ
Trang 1Ng Duc Thuan
Ch-ơng II
ôtômat hữu hạn
đoán nhận Ngôn ngữ chính quy
1.ôtômat hữu hạn (Finite automata - Fa)
Ôtômát hữu hạn có thể xem nh- "máy trừu t-ợng" Chúng là một công cụ đoán
nhận một lớp các ngôn ngữ đơn giản gọi là chính qui
2.1 ôtômát hữu hạn
2.1 Định nghĩa:
Ôtômát hữu hạn là bộ M = <ồ,Q,d, q0,F>, trong đó:
ồ : là tập hữu hạn khác rỗng các ký hiệu vào
Q : là tập hữu hạn khác rỗng các trạng thái
q0 : là trạng thái đầu (q0ẻ Q)
F : là tập các trạng thái kết thúc (FÍQ)
d : đ-ợc gọi là hàm chuyển có dạng :
1 Nếu hàm chuyển là ánh xạ : d : Q x ồđ Q, khi đó M đ-ợc gọi là
ôtômat đơn định ( Deterministic Finite Automata, viết tắt DFA)
2 Nếu hàm chuyển là ánh xạ : d : Q x ồđ 2Q, khi đó M đ-ợc gọi là
ôtômat không đơn định ( Nondeterministic Finite Automata, viết tắt NDFA)
Ta có thể mô tả các b-ớc làm việc của 1 ôtômát hữu hạn M = <ồ,Q,d, q0,F>,khi
cho xâu vào w = x1x2 xnẻồ* nh- một máy, mà ph-ơng thức làm việc nh- sau:
Có một băng vào dùng để ghi xâu vào
Có một đầu đọc, ở mỗi thời điểm có thể nhìn vào 1 ô ở băng vào
Có một bộ điều khiển Q gồm một số hữu hạn trạng thái: ở mỗi thời điểm nó có
một trạng thái ( Hình 2.1)
Băng vào
x 1 x 2 x n-2 x n-1 x n
Bộ điều khiển Hình 2.1 Các bộ phận của ôtômat hữu hạn Khi bắt đầu làm việc máy ở trạng thái đầu q0 và đầu đọc đang nhìn vào ô có ký
hiệu x1 Tiếp theo, máy chuyển từ trạng thái q0 d-ới tác động của ký hiệu vào x1 về trạng
q
Trang 2Ng Duc Thuan
thái mới d(q0, x1) = q1 ẻQ và đầu đọc chuyển sang một ô, tức nhìn vào ô ký hiệu x2 Sau
đó ôtômat M lại tiếp tục chuyển từ trạng thái q1 nhờ hàm chuyển d về trạng thái mới:
q2 = d(q1, x2) = d(d (q0, x1), x2) ẻQ
Quá trình đó sẽ tiếp tục cho đến khi đầu đọc nhìn vào ký hiệu xn với trạng thái của
máy là qn-1 = d(q0, x1x2 xn-1)
Hàm chuyển lại đ-a máy từ trạng thái qn-1 d-ới tác động của xn về trạng thái qn =
d(qn-1, xn) = d(q0, x1x2 xn-1xn) ẻQ Khi đó ôtômat dừng lại Nếu qn ẻF thì ta nói rằng
ôtômat đã đoán nhận ra xâu w Trong tr-ờng hợp ng-ợc lại, thì nói rằng ôtômát không
đoán nhận đ-ợc xâu w
Tập L(M) = {w/ w ẻồ* mà d(q0, w)ẻ F} đ-ợc gọi là ngôn ngữ đ-ợc đoán nhận
bởi ôtômat M Tập trạng thái Q trong quá trình tính toán đ-ợc coi nh- là bộ nhớ của một
ôtômat Vì Q là hữu hạn nên M đ-ợc gọi là ôtômat hữu hạn
2.2 phương pháp biểu diễn ôtômát hữu hạn
Cho Ôtômat thực chất là cho hàm chuyển của nó Hàm chuyển có thể cho d-ới
dạng bảng chuyển, hoặc cho d-ới dạng đồ thị
a Phương pháp cho ôtômat bằng bảng chuyển:
Trạng
thái x1 x2 xKý hiệu vào n
q1
q2
q3
qk d(q1, x1) d(q2, x1) d(q3, x1)
d(qk, x1) d(q1, x2) d(q2, x2) d(q3, x2)
d(qk, x2)
d(q1, xn) d(q2, xn) d(q3, xn)
d(qk, xn)
Ví dụ 1: Xét ôtômat hữu hạn đơn định M = <ồ,Q,d, q0,F>, trong đó:
ồ = {0,1}, Q= {q0, q1, q2, q3}, F = {q3} bảng chuyển cho bởi
q0
q1
q2
q3
q1
q3
q0
q3
q2
q0
q3
q3
Ví dụ 2 : Giả sử xét các xâu w1 = 10110, w2 = 10011 Hỏi rằng ôtômat M có đoán
nhận các xâu đó hay không?
Trang 3Ng Duc Thuan
a Dãy trạng thái của ôtômat M khi cho w1 vào là :
q0đ q2đ q0đ q2đ q3đ q3ẻ F
Do đó, ôtômat M đoán nhận xâu w1 = 10110
b Dãy trạng thái của ôtômat M khi cho w2 vào là :
q0đ q2đ q0đ q1đ q0đ q2ẽ F
Do đó, ôtômat M không đoán nhận xâu w2 = 10011
Từ các ví dụ trên ta thấy quá trình đoán nhận một xâu nào đó đối với ôtômat M
đơn định là quá trình biến đổi trạng thái cuối cùng của ôtômat có phải là trạng thái kết
thúc hay không
Thuật toán mô phỏng ôtômat hữu hạn đoán nhận xâu vào của ôtômat đơn định nh-
sau:
Input : - Một xâu w, kết thúc bởi ký hiệu hết dòng eol
- Một ôtômat hữu hạn M với trạng thái ban đầu q0 và tập trạng thái kết thúc là F
Output : - "True" nếu M đoán nhận đ-ợc xâu w
- "False" nếu M không đoán nhận xâu w
Thuật toán:
Begin
S:=q 0 ; C:= ký tự đầu trong xâu w;
While C <> eol do
Begin
S:= d(S,C);
C:= ký tự tiếp trong w;
end;
If S in F then return (true) else return(False);
End;
Ví dụ 3 : Cho ôtômat không đơn định = <ồ,Q,d, q0,F>, trong đó:
ồ = {0,1}, Q = {q0, q1, q2, q3}, q0 là trạng thái đầu, F = {q2, q4} là tập các trạng thái kết thúc
Trang 4Ng Duc Thuan
Hàm chuyển d : Qxồđ 2Q đ-ợc cho ở bảng sau:
Trạng thái Ký hiệu vào
0 1
q0 {q0,,q3} {q0,q1}
Khi cho xâu vào là w = 01001 thì đối với máy M ta có cây đoán nhận xâu nh- sau:
Trong cây trên có một đ-ờng đi từ q0 đến q4 ẻ F nên xâu w1 = 01001 là xâu đoán
nhận đ-ợc bởi máy M
b Phương pháp cho ôtômat bằng đồ thị chuyển:
Thông th-ờng để dễ hình dung hơn, ta th-ờng biểu diễn hàm chuyển d-ới dạng
một đồ thị định h-ớng, gọi là đồ thị chuyển nh- sau: Mỗi đỉnh của đồ thị t-ơng ứng với
một trạng thái Nút đầu đ-ợc trỏ bởi một mũi tên, các đỉnh có trạng thái kết thúc đ-ợc
khoanh vòng tròn 2 lần Nếu có d(q,a) = p thì có một cung đi từ đỉnh q đến đỉnh p, và
cung đó mang nhãn a
Ví dụ 4 : Cho ôtômat không đơn định M= <ồ,Q,d, q0,F>, trong đó:
ồ = {0,1}, Q = {q0, q1, q2, q3}, q0 là trạng thái đầu, F = {q0} là tập các trạng thái kết thúc
q0
q1
q2
q3
q2
q3
q0
q1
q1
q0
q3
q2
q0
q0
q0
q0
q3
q 1
q3
q 0
q 1
q4
q4
ặ ặ
ặ
Trang 5Ng Duc Thuan
Lúc này, đồ thị chuyển sẽ có dạng nh- sau:
Chú ý : Định nghĩa ôtômat hữu hạn đơn định & không đơn định bằng hệ viết lại:
- Ta gọi Hệ viết lại ngầm định của Ôtômat hữu hạn đơn định (không đơn định):
M= <ồ,Q,d, q0,F>, là hệ viết lại RW = (V,P) nh- sau:
V = ồẩQ,
P gồm các sản xuất đ-ợc thành lập theo quy tắc:
Nếu có d(q,a) = p (hoặc d(q,a) = {p1,p2, pm}) trong đó p, q, piẻ Q và a ẻồ thì :
qa đ p là một sản xuất trong P (hay qa đ {p 1 p 2 p 3 p n}) Với các quan hệ suy dẫn ├─, ╞═ đã xác định ở ch-ơng I, hệ viết lại RW cho phép
biến đổi các hình trạng của Ôtômat hữu hạn Ngôn ngữ đ-ợc đoán nhận bởi M là:
L = {w ẵ w ẻồ* và q0w╞═ p với p ẻ F}
2.3 sự tương đương giữa Ôtômat hữu hạn đơn định và Ôtômat
hữu hạn không đơn định:
Theo định nghĩa của Ôtômat đơn định M và không đơn định N , nếu ký hiệu các
lớp ngôn ngữ đ-ợc đoán nhận bởi M và N t-ơng ứng là L(M) và L(N) Ta có định lý sau:
2.3.1 Định lý :
Lớp ngôn ngữ đoán nhận bởi ôtômát đơn định trùng với lớp ngôn ngữ đoán nhận
đ-ợc bởi ôtômat không đơn định
Chứng minh:
Theo định nghĩa của ôtômat đơn định & ôtômát không đơn định, dễ dàng nhận
thấy: lớp ngôn ngữ đoán nhận đ-ợc bởi ôtômat đơn định là lớp con của lớp ngôn ngữ đoán
nhận đ-ợc ôtômát không đơn định ( L(M) Í L(N) )
Ta chứng minh L(N) Í L(M) Thật vậy, giả sử p ẻồ* đoán nhận đ-ợc bởi ôtômát
không đơn định N = <ồ,Q,d,s0,F> hay p ẻ L(N)
Ta xây dựng ôtômát đơn định M = <ồ',Q',d',q0,F'> đoán nhận p nh- sau : ồ'=ồ, Q'
= 2Q, q0 = {s0}; F' = {UÍ QẵUầFạặ} còn d':Q'xồđ Q' đ-ợc xác định nh- sau:
q3
q1
q2
q0
1 1
0
1 1
Trang 6Ng Duc Thuan
"UẻQ, "xẻồ thì d'(U,x) =
q UUẻ d(q,x)
Với M định nghĩa nh- trên, thì ta có p ẻL(M) hay L(N) Í L(M) (đ.p.c.m)
Ví dụ 5: Cho Ôtômat không đơn định N = <ồ,Q,d, s0,F>, với ồ = {a,b}, Q ={s0,
s1}, F = {s1}, hàm chuyển đ-ợc xác định : d: Qxồđ 2Q đ-ợc cho bởi bảng chuyển sau:
a b
Khi đó Ôtômat đơn định M t-ơng ứng với ôtômat không đơn định N đ-ợc xây
dựng nh- sau:
M = <ồ',Q',d',q2,F'>, với ồ' = ồ= {a,b}, Q' = {q1,q2,q3,q4} ở đây q1=ặ, q2 = {s0},
q3 = {s1}, q4 = {s0, s1} còn F' = {q3, q4}
Hàm chuyển d' cho d-ới bảng sau:
a b
Ta có L(N) = L(M) hay N t-ơng đ-ơng với M
Ví dụ 6:
- Xét Ôtômát không đơn định N có đồ thị chuyển nh- sau :
- Đồ thị chuyển của Ôtômát đơn định M t-ơng ứng là:
q1
q0
0,1
1
{q1} {q0}
1
1
0
0
Trang 7Ng Duc Thuan
Nhận xét: Theo định lý trên : Nếu ngôn ngữ L đ-ợc chấp nhận bởi ôtômat hữu
hạn không đơn định, thì tồn tại một ôtômát hữu hạn đơn định chấp nhận L
2 Ôtômat hữu hạn và văn phạm chính qui:
2.4.1 Định lý : Nếu L là ngôn ngữ chính qui thì tồn tại một ôtômat hữu hạn không
đơn định chấp nhận L
Chứng minh :
Giả sử L đ-ợc sinh ra bởi văn phạm chính qui G = <ồ, D,S,P> Ta xây dựng
ôtômat hữu hạn không đơn định N = < ồ' ,Q, d, q0, F>, trong đó:
- ồ' = ồ, Q= Dẩ {E}, E ẽồẩD;
- q0 = S
- d(E, a) = ặ, "a ẻồ
- d(B,a) chứa tất cả các trạng thái D sao cho B đaDẻP, thêm vào :
d(B,a) chứa E nếu Bđa ẻP
-Nếu có S đe : d(B,a)={S}
E S
=ỡớ ợ
{ }, { , },
Ta chứng minh L(N) = L(G)=L
* L(G) Í L(N)
Lấy w = a1a2 akẻ L và giả sử eạw, lúc đó tồn tại một suy dẫn trong G:
S ├─ a1A1 ├─ a1a2A2 ├─ ├─ a1a2 ak-1Ak-1 ├─ a1a2 ak
ở đây A1, A2, , Ak-1ẻD và do đó tồn tại một dãy qui tắc của p:
S đ a1A1; A1đ a2A2; ; Ak-1đ ak
Theo định nghĩa của d thì :
A1ẻd(S,a1); A2ẻd(A1,a2); ; Ak-1ẻd( Ak-2,ak-1); E ẻd( Ak-1,ak);
Nh- vậy : E ẻd(A,a1a2 ak) hay w ẻ L(N);
Nếu w = e ẻ L thì trong G chứa S đ e và do đó S ẻ F Trong tr-ờng hợp này
d(S,e) ={S} nên eẻ L(N)
* L(N) Í L(G)
Ng-ợc lại, Lấy w = a1a2 ak ẻ L(N) và giả sử eạw, lúc đó tồn tại một dãy trạng
thái S, A1,A2, ,Ak, E sao cho:
A1ẻd(S,a1); A2ẻd(A1,a2); ; Ak-1ẻd( Ak-2,ak-1); E ẻd( Ak-1,ak);
Theo định nghĩa của d ta lại có các qui tắc:
S đ a1A1; A1đ a2A2; ; Ak-1đ ak
Và do đó có dãy suy dẫn:
nếu P không chứa S đe
ng-ợc lại
Trang 8Ng Duc Thuan
S ├─ a1A1 ├─ a1a2A2 ├─ ├─ a1a2 ak-1Ak-1 ├─ a1a2 ak
hay w ẻ L(G);
Nếu w = eẻ L(N) thì tồn tại qui tắc S đeẻP và do đó eẻL(G)
Vậy L(M) = L(G) = L đ.p.c.m
Ví dụ 7: Xét G = < {a,b}, {S,A,B}, S, { S đaA, S đ bB, A đ aA, B đbB,
A đa, B đb}>
Xây dựng Ôtômat hữu hạn không đơn định thừa nhận L(G):
N= <{a,b}, {S,A,B,E}, d, S, {E}>
d(S,a) = {A} d(A,a) = {A,E}
d(S,b) = {B} d(A,b) = ặ
d(B,a) = ặ d(B,b) = {B,E}
d(E,a) = d(E,b) = ặ
L(G) = {ai, bj , i,j ³ 0 }
2.4.2 Định lý : Nếu ngôn ngữ L đ-ợc đoán nhận bởi 1 ôtômát hữu hạn đơn định
thì L là 1 ngôn ngữ chính qui
Chứng minh :
Cho M = < ồ,Q, d, q0, F> là ôtômát hữu hạn đơn định chấp nhận L Ta xây dựng văn phạm chính qui sau :
G = <ồ, D,S,P> ở đây:
S = q0;
D = Q;
P đ-ợc xác định nh- sau:
- Nếu có d(q, a) = p thì P chứa q đ ap
- Nếu có d(q, a) = p ẻF thì P chứa q đ a
Ta sẽ chứng minh : L(G) = L - {e}
* Ta chứng minh L - {e} Í L(G):
S
A
E B
Trang 9Ng Duc Thuan
Lấy w = a1a2 ak ẻ L - {e} ta có :
d(q0, a1) = p1
d(p1, a1) = p2
d(pk-1, ak) = pk ẻ F, và do đó trong P có các qui tắc:
q0đ a1p1 , p1đ a2p2, , pk-1đ ak hay : q0 ├─ a1p1├─ a1a2p2 ├─ ├─a1a2 ak
Suy ra : w = a1a2 akẻ L(G)
* Ta chứng minh L(G) Í L - {e}:
Ng-ợc lại lấy w = a1a2 akẻ L(G), lúc đó tồn tại dãy suy dẫn:
q0 ├─ a1p1├─ a1a2p2 ├─ ├─a1a2 ak
và nh- vậy: q0 đ a1p1 , p1 đ a2p2, , pk-1 đ ak là các qui tắc của P Theo định
nghĩa của d ta có :
p1 = d(q0, a1)
p2 = d(p1, a2)
pk=d(pk-1, ak)
và pkẻ F, do đó w ẻ L(M)= L
Trong tr-ờng hợp eẻL, theo ch-ơng 1, ta có thể xây dựng đ-ợc G' sao cho:
L(G') = L(G) ẩ {e} = L (đ.p.c.m)
Chú ý : L ngôn ngữ chính qui ị Ôtômát hữu hạn không đơn định
í ò
Ôtômát hữu hạn đơn định
2.4.3 Định lý : ( Định lý Pumping cho ngôn ngữ chính qui) Giả sử L là 1 ngôn ngữ
vô hạn đ-ợc đoán nhận bởi 1 ôtômat hữ- hạn đơn định thì tồn tại 1 số tự nhiên m sao cho
"w ẻL có ẵwẵ³m có thể phân tích d-ới dạng w=xyz, ở đây ẵxyẵÊ m, ẵyẵ³ 1 và "i³0,
xyiz ẻL
Chứng minh: Nếu L đ-ợc đoán nhận bởi 1 ôtômat hữu hạn đơn định (dfa):
M =< ồ ,{q0, q1, q2, , qn},d, q0, F>
Chọn m=n+1 "wẻL, ẵwẵ=k³ m, các trạng thái tham gia vào việc đoán nhận w có dạng:
q0, qi, qj, , qj, , qr, , qr, , qf (vì số trạng thái tham gia đoán nhận lớn hơn số trạng thái có đ-ợc của ôtômat nên có ít
nhất 1 trạng thái lặp)
Gọi x, y, z lần l-ợt là các xâu con của w mà:
d*(q0, x) = qr
d*(qr, y) = qr {y là xâu con bé nhất của w thoả d*(qr, y) = qr}
d*(qr, z) = qf
Ta có thể nhận thấy
Trang 10Ng Duc Thuan
ẵxyẵÊ m=n+1, ẵyẵ³ 1
Từ đó suy ra:
d*(q0, xz) = qf
d*(q0, xy2z) = qf
d*(q0, xy3z) = qf Bằng qui nạp có thể chứng minh :
d*(q0, xyiz) =qf , "i ³ 0 (đ,p.c.m)
2.4.4 Hệ quả : Tồn tại 1 ngôn ngữ PNC không đ-ợc đoán nhận bởi 1 ôtômat hữu
hạn không đơn định
Chứng minh: Xét L = {anbn, n > 0}, G = <{a,b}, {S}, {Sđ aSbẵab}>
L = L(G) Nếu L là đ-ợc đoán nhận bởi 1 ôtômat hữu hạn đơn định ịL là ngôn ngữ chính quiịL
thoả định lý pumping:
wi = anbn = xyiz , ẵxyẵÊ m, ẵyẵ=k ³ 1
Chọn n > m ị y chỉ chứa toàn bộ ký tự a Khia i=0, wi = an-kbnẽL ( mâu thuẩn)
Vì vậy L không là ngôn ngữ chính qui
Chú ý : Lớp ngôn ngữ chính qui và lớp nn PNC là phân biệt
2.4.5 Một vài ví dụ minh hoạ:
a Cho ồ = {a, b} Chứng minh rằng
L = {wwR : w ẻồ *} không là ngôn ngữ chính qui
Giả sử L là 1 ngôn ngữ chính qui ị thoả định lý pumping ị$m, ẵwwRẵ³ m ị
wwR = xyiz, ẵxyẵÊ m, ẵyẵ³ 1 Chọn m đủ lớn:
Xét w= ambmị wwR = aa a bb b bb b a aa
ị xyiz với i = 0, wwR = am-kbmbmamẽ L (mâu thuẩn)
ị Vậy L không là ngôn ngữ chính qui
b Cho ồ = {a, b} Chứng minh rằng
L = { w ẻồ * : na(w) < nb(w)} không là ngôn ngữ chính qui
Giả sử L là 1 ngôn ngữ chính qui ị thoả định lý pumping ị$m, ẵwẵ³ m ị
w = xyiz, ẵxyẵÊ m, ẵyẵ³ 1 Chọn n = m, và m đủ lớn
w = a a b b ị wi = xyiz ẻ L
x y z Chọn i ³ 2 ị xyiz ẻ L ị na(wi) > nb(wi) (mâu thuẩn)
Vậy L không là ngôn ngữ chính qui (đpcm)
3 Định lý Kleene
Trang 11Ng Duc Thuan
2.5.1 Định lý : ặ và {e} là các ngôn ngữ chính qui (NNCQ)
Chứng minh : ặ đ-ợc đoán nhận bởi mọi Ôtômat có F = ặ
{e} đ-ợc đoán nhận bởi Ôtômát hữu hạn
M = <{a},{q0, q1}, d, q0, {q0}>
với d(q0, a) = d(q1,a) = q1
2.5.2 Định lý : Với w ẻồ*, thì {w} là NNCQ
Chứng minh : Nếu w = e thì mệnh đề đã đ-ợc chứng minh
- Nếu không w = a0a1 an trong đó a0, a1, , anẻồ, n ³ 0 Xét Ôtômát không đơn định M = < ồ, {q0, q1, , qn+1}, d, q0, {qn+1}>, trong đó:
d(qi, ai) = {qi+1} với i = 0,1, ,n
d(qi, a) = ặ với a ẻồ - {ai}, i = 0,1, ,n
d(qn+1, a) = ặ với a ẻồ
Nh- thế thì L(M) = {w}
2.5.3 Hệ quả : Mọi ngôn ngữ tạo nên từ các ngôn ngữ hữu hạn bằng cách áp dụng
một số hữu hạn lần l-ợt các phép hợp, ghép tiếp và * đều là NNCQ
Chứng minh : Do hệ quả 1.8.1, 1.8.3, 1.8.4,
2.5.4 Định lý (Kleene) :Mọi NNCQ đều có thể nhận đ-ợc từ các ngôn ngữ hữu
hạn bằng cách áp dụng một số hữu hạn lần các phép hợp, ghép tiếp và *
Chứng minh : Giả sử L đ-ợc đoán nhận bởi một Ôtômat hữu hạn đơn định
M = < ồ, {q1,q2, ,qn}, d, q1, F}
Để phân tích các bộ phận hợp thành L(M) ta đ-a ra định nghĩa sau:
Gọi R ij k là tập mọi xâu dẫn trong M từ trạng thái qi đến trạng thái qj mà không đi qua một trạng thái ql nào đó, với l > k ( l-u ý là i,j có thể > k)
Nói cách khác là :
R ij k = { w ẵ qiw╞═ qj và với mọi tiền tố v của w, v ạw, vạe thì qiv╞═ ql với l Êk}
(2.5.4*)
Nh- vậyký hiệu: R ij n = { w ẵ qiw╞═ qj} , vì n là chỉ số cao nhất
nên: L(M) = R ij n
qUjẻF
Vậy định lý đ-ợc chứng minh nếu ta chứng minh đ-ợc Bổ đề sau đây:
2.5.5 Bổ đề : Mỗi R ij k đều có thể nhận đ-ợc từ các ngôn ngữ hữu hạn, bằng cách
áp dụng một số hữu hạn lần các phép hợp, ghép tiếp và *
Chứng minh : từ định nghĩa (2.5.4*) ta thấy, nếu w ẻR ij k thì trong suy dẫn
qiw ╞═ qj:
(1) hoặc là trong M suy dẫn trên không đi qua trạng thái qk, tức là w ẻ k- 1
ij
R (2) hoặc là M có (một số lần) đi qua qk Nh- vậy w bị chia cắt thành nhiều đoạn: