Tải bản đầy đủ (.docx) (15 trang)

Tiểu luận biến đổi từ NFA sang DFA trong automata

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 (198.92 KB, 15 trang )

Giảng viên hướng dẫn:
Học viên thực hiện:
Automata Assignment
Convert NFA to DFA
4/2011
Contents
AUTOMATA
I. DFA – Automata hữu hạn đơn định
1. Định Nghĩa :
Ôtomat hữu hạn đơn định (DFA) là 1 tổ hợp M = (Q, ∑, δ, q
0
, F).
Trong đó Q là tập hữu hạn các trạng thái , ∑ là tập hữu hạn các kí tự đầu vào
gọi
là bảng ký tự, q
0
Q là trạng thái bắt đầu, F là tập hợp con của Q gọi là tập
trạng
thái kết thúc (trạng thái đoán nhận).
Và δ là hàm chuyển đổi trạng thái Q x ∑ → Q.
Một Ôtomat có thể xem là một bộ gồm 5 thành phần :
− Một thanh ghi trong đơn.
2
− Một tập hợp các giá trị cho thanh ghi.
− Một băng đầu vào
− Một đầu đọc băng vào.
− Một tập các lệnh để thực hiện chuyển đổi.
Các trạng thái của 1 DFA miêu tả hình trạng bên trong của máy và thường
biểu thị bằng q
o
,q


1
, q
2
,…,q
n
. Thanh ghi của máy , cũng được gọi là điều khiển hữu
hạn, một trong các trạng thái là giá trị của nó . Tại thời điểm bắt đầu tính toán , giá
trị của thanh ghi là q
0
, trạng thái bắt đầu của DFA .
Đầu vào là một dãy hữu hạn liên tiếp của các thành phần trong bảng chữ ∑.
Băng chứa đầu vào đến khi được tính toán . Băng được chia làm các ô , mỗi ô
chứa giá trị của một ký tự của bảng chữ. Do không có giới hạn về độ dài của xâu
đầu vào nên băng cũng không phải giới hạn về độ dài .
Đầu đọc của băng đọc theo từng ô của xâu vào. Bộ phận chính của máy là đầu
đọc
băng và thanh ghi. Vị trí của đầu đọc băng là ký tự của băng vào được. Trạng thái
hiện tại của Ôtomat được chỉ bởi giá trị của thanh ghi. Trong Ôtomat hữu hạn đơn
định thì việc dịch chuyển trạng thái được quyết định dựa vào ký tự đầu đọc đang
chỉ và trạng thái hiện thời của thanh ghi. Và chỉ có một trạng thái mới được
chuyển đến khi đầu đọc đọc một ký tự và thanh ghi đang chỉ một trạng thái nào
đó. Không có nhiều hơn một chuyển đổi hình trạng khi xử lí với một trạng thái của
thanh ghi và một ký tự đầu vào. Cụ thể một tính toán (hay chuyển đổi) của 1
otomat gồm sự thi hành của 1 cấu trúc tuần tự các bước. Gồm có : Đọc ký tự vào
(ký tự đầu đọc đang chỉ), xem xét trạng thái hiện thời của máy và sau đó quyết
định chuyển trạng thái cùng với dịch chuyển đầu đọc sang phải một ô để đọc kí tự
tiếp theo.
Hình sau miêu tả cho việc chuyển trạng thái của Ôtomat :

Hàm chuyển trạng thái được kí hiệu là δ. Và hàm này có dạng như sau:

δ : Q x ∑ → Q.
3
Hay là δ(q
i
, a) = q
k
.Với q
i
là các trạng thái trong tập Q.
Với DFA nói riêng và các Ôtomat nói chung ta có thể đưa ra các hàm chuyển đổi
dưới dạng bảng tương ứng giữa các kí tự vào và các trạng thái của Q.

2. Ví Dụ :

Ta xét ví dụ sau để hiểu rõ hơn về vấn đề :
Cho một Ôtomat hữu hạn đơn định M có :
Q = {q0, q1}
∑ = {a,b}
F = {q1}
Và các hàm chuyển đổi sau :
δ(q0, a) = q1
δ(q0, b) = q0
δ(q1, a) = q1
δ(q1, b) = q0
Sau đây sẽ là các chuyển đổi và miêu tả về hoạt động của M khi xâu đầu vào là
aba.
q
0
aba → q
1

ba → q
0
a → q
1
.
Ta có là xâu aba được đoán nhận bởi Ôtomat M.
Sau đây là hình miêu tả sự thay đổi hình trạng của M khi xử lí xâu trên:
Hình sau minh họa cho các quá trình chuyển đổi trạng thái của M:
4
3. Giản đồ trạng thái và ngôn ngữ đoán nhận :
a. Định nghĩa :
Giản đồ trạng thái của Ôtomat DFA là đồ thị có hướng G được
đánh nhãn và định nghĩa như sau:
- Các nút của G là các trạng thái trong Q.
- Nhãn của một cung trong G là một ký tự của bảng chữ.
- q
0
là trạng thái bắt đầu, cũng là nút bắt đầu, được kí hiệu >O.
- F là tập các nút đoán nhận, mỗi nút được kí hiệu bởi hình
- Có một cung từ nút qi tới nút qj có nhãn là a nếu δ(qi, a) = qj.
- Với mọi nút qi và một ký tự a trong bảng chữ ∑, tồn tại một cung duy nhất
đi ra từ qi có nhãn a.
Một chuyển đổi của DFA được thể hiện bằng một cung trong giản đồ trạng
thái. Kiểm tra quá trình tính toán của máy theo các trạng thái tương ứng trên giản
đồ sẽ cho ta con đường từ nút qo và đọc xâu vào.
Sau đây là ví dụ về giản đồ trạng thái của một Ôtomat hữu hạn đơn định.
Xét DFA M = (Q, ∑, δ, q
0
, F). Với Q = { q
0

,q
1
,q
2
}, ∑ = {a, b}, F = { q
2
}
Và hàm chuyển đổi δ cho dưới dạng bảng sau :
5
Ta có giản đồ trạng thái như sau :

Giả sử p
w
là một đường từ q
0
đọc xâu vào w và kết thúc tại trạng thái q
w
. Định
lí sau sẽ chứng minh cho chúng ta là chỉ có một con đường duy nhất cho mọi xâu
ω thuộc bảng chữ vào ∑
*
.
b. Định lí :
Coi M = {Q, ∑, δ, q
o
, F} là một Ôtomat hữu hạn đơn định. Xâu ω tạo ra một
đường đi duy nhất p
ω
trong giản đồ trạng thái của M và δ(q
0

, ω) = q
ω
.
* Chứng minh : Ta chứng minh quy nạp theo độ dài của xâu vào.
Nếu xâu có độ dài là 0 thì δ
*
(q
0
, λ) = q
0
, đường đi tương ứng là đường rỗng
bắt đầu và kết thúc đều tại q
0
.
Giả sử giả thiết của ta đúng với mọi xâu có độ dài n hoặc ngắn hơn.
Ta đi chứng minh kết quả đúng với xâu có độ dài n+1. Coi ω = ua là xâu có độ
dài n+1. Theo giả thiết quy nạp thì tồn tại đường đi duy nhất p
u
mà đọc xâu u
và δ
*
(q
o
, u) = q
u
. Đường đi p
ω
được tạo ra bằng cách theo cung nhãn a từ trạng
thái q
u

. Qua đó ta thấy chỉ có một con đường duy nhất từ q
o
đọc xâu ω vì p
u
là con
đường duy nhất đọc xâu u, còn chỉ có duy nhất một cung nhãn a rời q
u
.Trạng thái
kết thúc của đường đi p
ω
được quyết định bởi chuyển đổi δ(q
u
, a).Từ định nghĩa
của hàm chuyển đổi mở rộng ta có δ
*
(q
o
, ω) = δ( δ
*
(q
o
, u), a) vì
ta có δ
*
(q
o
, u) = q
u
, q
ω =

δ(q
u
, a) = δ( δ
*
(q
o
, u),a) = δ
*
(q
o
, ω).
6
c. Hàm chuyển đổi mở rộng của DFA :
Hàm chuyển đổi mở rộng của DFA, kí hiệu δ
*
so với hàm chuyển đổi δ là
một hàm từ Q x ∑
*
→ Q. Việc chuyển đổi của δ
*
được định nghĩa đệ quy theo
độ dài của xâu vào như sau:
- Cơ sở : Nếu length(ω)=0 tức là xâu rỗng ω = λ và δ
*
(q
i
, λ) = q
i
.
Nếu length(ω) = 1, thì ω = a (với a Є ∑

*
) và δ
*
(q
i
, a) = δ(q
i
, a).
- Bước đệ quy : Coi ω là một xâu có độ dài n > 1. Thì ω = ua và chuyển đổi
δ
*
(q
i
, ua) = δ(δ
*
(q
i
, u), a).

d. Ngôn ngữ đoán nhận :
Ngôn ngữ đoán nhận bởi Ôtomat hữu hạn đơn định M là tập các xâu trong ∑
*

được đoán nhận bởi DFA M kí hiệu L(M). Hay là được định nghĩa như sau :
L(M) = {ω Є ∑
*

*
(q
0

, ω) Є F }.
Theo như ví dụ trên thì ngôn ngữ đoán nhận bởi M là :
L(M) = (a U b) *bb(a U b)*.

e. Mở Rộng :
Nếu M = {Q, ∑, δ, q
o
, F} là một DFA thì M' = {Q, ∑, δ, q
o
, Q- F} là một DFA
khác và L(M') = ∑
*
- L(M).

II. NFA – Automata hữu hạn không đơn định
1. Định Nghĩa:
Một Otomat hữu hạn không đơn định (NFA) là M= (Q, ∑, δ, q
o
, F). Trong đó Q
là một tập hơp hữu hạn các trạng thái, ∑ là bảng chữ - tập các ký tự vào, q
0

trạng thái bắt đầu , F là tập các trạng thái kết thúc (hay các trạng thái đoán nhận)
và δ là hàm chuyển đổi trạng thái Q x ∑ → 2
Q
.(Hàm này là sự khác nhau duy nhất
giữa DFA và NFA).
Hình miêu tả như sau:
7



Các thành phần của NFA gần như là giống các thành phần của DFA chỉ khác ở
hàm chuyển đổi về số trạng thái mà Ôtomat có thể chuyển tới khi sử lí một kí tự
đầu
vào. Với DFA thì chỉ có một trạng thái được chuyển tới khi sử lí một kí tự vào từ
một trạng thái cho trước. Còn trong NFA thì có nhiều hơn một trạng thái có thể
đến được từ một trạng thái cho trước khi xử lí một kí tự đầu vào. Và dễ thấy DFA
là một trường hợp đặc biệt của NFA khi nó chỉ đi đến một trạng thái khác khi đọc
một ký tự vào.
III .Sự Tương Đương Giữa DFA Và NFA
Ta sẽ thấy rằng sự mở rộng DFA thành NFA không tăng thêm khả năng đoán
nhận ngôn ngữ. Giả sử L(DFA) và L(NFA) lần lượt trỏ lớp các ngôn ngữ đoán
nhận được bởi các DFA và bởi các NFA .Vì theo định nghĩa một DFA cũng là một
NFA, cho nên
L(DFA) ⊆ L(NFA) (*)
Ta hãy xét theo chiều ngược lại.
Định Lý 2.1: Nếu l là một ngôn ngữ được đoán nhận bởi một ÔHK thì cũng có
một ÔHĐ đoán nhận L.
Nói cách khác L(NFA) ⊆ L(DFA) (**)
Hệ Quả 2.1:L(DFA)=L(NFA)
8
Nói cách khác:lớp các ngôn ngữ đoán nhận bởi các ôtômát hữu hạn đơn định và
lớp các ngôn ngữ đoán nhận bởi các ôtômát hữu hạn không đơn định là một.Gọi
đó là các lớp ngôn ngữ chính qui ( viết tắt là lớp NNCQ ) .
Chứng Minh Đinh Lí:
Giả sử M = ( ∑ , Q , ∂, q
o
, F ) là NFA đoán nhận L .
Thành lập DFA M’ = ( ∑, Q’,∂’ , q’
o

, ,F’ ), trong đó :
Q’ = 2
Q
; F’ là tập mọi trạng thái trong Q’ có chứa một trạng thái cuối nào đó
của M . Mỗi phần tử trong Q’ được kí hiệu bởi [ q
1 ,
q
2
, q
3 ,
, q
k
] với q
1 ,
q
2
, , q
k
Q .Trạng thái đầu q
o
’ = [ q
o
] .Hàm chuyển ∂’ của M’ được thành lập theo công
thức :
∂’ ( [ q
1 ,
q
2
, , q
k

] , a)= (q
1 ,
a) (1)
Ta sẽ chứng minh L(M) = L(M’) .
• Trước hết chứng minh rằng : L(M) L(M’) ,tức là chứng minh rằng
nếu
w L(M) thì w L(M’);
Với w = a
1
a
2
a
n
, với n 0 và có một suy dẫn trong M :
q
0
a
1
a
2
a
n

M
q
1
a
2
a
n


M

M
q
n-1
a
n

M
q
n
với q
n
F (2)
Cũng xâu w đó , đối với M’ sẽ có một suy dẫn :
q’
0
a
1
a
2
a
n

M’
q
1
a
2

a
n

M’

M’
q
n-1
a
n

M’
q’
n
(3)
Ta chứng minh bằng một qui nạp rằng :
Với mọi i , 0 i n , q
i
q’
i
(4)
9
Hình : Các bước chuyển của M và M’

- Cơ sở qui nạp : q
o
q
o
’ bởi định nghĩa q
o

’ = [ q
o
] .
- Bước qui nạp : Giả sử đúng với i , tức là q
i
q’
i

Theo định nghĩa của suy dẫn trực tiếp ta phải có :
q
i+1
( q
i
, a
i+1
) và q’
i+1
(q’
i ,
a
i+1
)
Theo công thức (*) , thì nếu q
i
q’
i
, ắt có :
∂ (q
i
,a

i+1
) ∂( q’
i
, a
i+1
)
Từ đó suy ra q
i
q’
i+1
, tức là (4) cũng đúng với i+1 , kết thúc qui nạp .
Từ (4) đã được chứng minh , suy ra q
n
q’
n
.Nhưng q
n
F , suy ra: q’
n
F’ do
định nghĩa của F’ . Điều đó chứng tỏ w L(M’) .
Bây giờ chứng minh phần ngược lại : L(M’) L(M) , tức là chứng minh rằng
nếu w L(M’) thì w L(M) .
Giả sử có một suy dẫn trong M’ :
q’
o
w
*
M’
q’ với q’ F’

Trước hết hãy chứng minh quy nạp theo độ dài | w| rằng :
10
Với mọi q q’ , tồn tại suy dẫn trong M :
q
o
w
M
q (5)
- Cơ sở quy nạp : Với | w | = 0 , tức w = , do định nghĩa của quan hệ suy dẫn ta có
q’
o

*
M’
q’
o

Mặt khác chỉ có q
o
q’
o
và cũng có q
o

M
q
o
- Bước qui nạp : Giả thiết là (5) đã đúng với các xâu có độ dài | w | - 1 , hãy
chứng minh nó cũng đúng với xâu w
Giả sử w = xa , x ∑

*
, a ∑ và q’
o
xa
*
M’
p’ a
*
M’
q’ , trong đó ∂’( p’, a ) =
q’
Xét một trạng thái bất kì q q’ . Do định nghĩa của thì tồn tại p p’ sao cho q
∂(p , a) . Vậy theo giả thiết qui nạp , tồn tại một suy dẫn trong M q
o
xa
*
M
pa
*
M
q , cho phép kết thúc sự qui nạp .
Trở lại giả thiết w L(M’) , tức là q’
o
w
*
M’
q’ với q’ F’ .
Vì q’ F’ , nên có q q’ sao cho q F .Vận dụng kết quả vừa chứng minh có
ngay q
o

w
*
M
q ; vậy w L(M) ,dẫn đến kết luận L(M’) L(M) .
Kết hợp hai kết quả đã chứng minh : ta có L(M) = L(M’) và định lí được chứng
minh.
IV. Giải thuật để chuyển từ NFA-λ sang loại DFA tương đương.
Lý thuyết:
Ở phần lý thuyết trên chúng ta đã đưa ra 3 loại Automat là DFA, NFA, NFA-
λ. Thấy rằng, mỗi loại sau là tổng quát của các trường hợp trước. Ở đây chúng ta
sẽ xem xét giải thuật để chuyển từ NFA-λ sang loại DFA tương đương.
Xét một NFA-λ ta có như hình vẽ :
11

Trong hình giá trị của t(q
1
,a) = {q
2,
q
3
,q
4
,q
5
} trạng thái q
4
đạt tới khi không xử
lí 1 kí tự nào ở đầu vào.
Hình dung, hàm chuyển đổi t(q
i

,a) có thể chia ra làm 3 thành phần như sau:
- Đầu tiên là tập các trạng thái có thể đến được từ q
i
mà không cần xử lí một kí
tự nào cả
- Sau đó là các trạng thái có thể đến đựơc khi xử lí kí tự a từ các trạng thái
trong tập các trạng thái trên.
- Cuối cùng theo các cung λ từ các trạng thái kết quả trên để sinh ra tập t(q
i
,a).
Hàm t được định nghĩa trong thuật ngữ của hàm chuyển đổi δ và đường đẫn
trong biểu đồ trạng thái, nó đọc một xâu rỗng. Nút q
j
là bao đóng của trạng thái q
i

nếu có một đường từ q
i
→ q
j
mà đọc một xâu rỗng.
Định nghĩa 1: Bao đóng λ-closure của trạng thái q
i
kí hiệu λ-closure(q
i
),
được định nghĩa đẹ quy như sau
i) Cơ sở: Trạng thái q
i
thuộc λ-closure(q

i
) .
ii) Giả thiết đệ quy: Giả sử q
j
thuộc λ-closure(q
i
) . Nếu q
k
thuộc
δ(q
j
,λ) thì q
k
thuộc λ-closure(q
i
)
12
iii) Kết luận : q
j
thuộc vào λ-closure(q
i
) khi và chỉ khi nó có thể tới
được từ q
i
sau một số hữu hạn áp dụng các bước đệ quy
Tập λ-closure(q
i
) có thể được tạo ra theo cách top-down approach trong giải
thuật 4.3.1, nó quyết định dãy liên kết trong ngôn ngữ phi ngữ cảnh. Hàm chuyển
đầu vào có thể tạo ra được từ λ-closure(q

i
) của các trạng thái và hàm chuyển đổi
của NFA-λ.
Định nghĩa 2 : Hàm biến đổi đầu vào t của một NFA-λ M là một hàm từ Q x
∑ → ρ(Q) bởi :
T(q
i
,a)=U λ-closure(q
i
) với q
j
thuộc bao đóng của λ-closure(q
i
) và δ là
hàm chuyển đổi của M
2 . Giải thuật :
Giải thuật , xây dựng biểu đồ trạng thái của máy quyết định tương đương với
một NFA -λ M. Các nút của DFA, gọi là DM cho quyết định tương đương của M,
là tập các nút của M. Nút bắt đầu của DM là bao đóng λ-closure của bất kỳ nút
nào trong các nút bắt đầu của M. Chìa khoá của giải thuật ở bước 2.1 . Nó sinh ra
các nút của DM. Nếu X là nút của DM thì tập Y được tạo ra chứa toàn bộ các
trạng thái có thể tới được bằng cách sử lí kí tự a từ tất cả các trạng thái trong X.
Trong biểu đồ trạng thái của DM thì quan hệ này được thể hiện bằng một cung từ
X → Y với nhãn a. Nút X đuợc làm quyết định bằng cách tạo ra 1 cung từ nó tơi
mọi kí tự trong bảng chữ. Một nút mới được sinh ra trong bước 2.1.1 đựơc thêm
vào tập Q’ và quá trình tiếp tục cho tới khi mọi nts trong Q’ là quyết định được.
Mã giải :
Đầu vào : cho một NFA-λ M=(Q,∑,δ,q
0
,F) vào hàm dịch t của M.

1. Chuẩn bị Q' để λ-closure(q
0
).
2. Repeat
13
2.1. If Có 1 nút X Q’ và một ký tự a với không có cung rời
khỏi X mà được đánh nhãn là a
Then
2.1.1 Cho Y = .
. 2.1.2. If Y Q’, then Q’ := Q’ U {Y}
2.1.3. Thêm một cung từ X vào Y nhãn là a.
Else done := true
Until done
3. Tập các trạng thái đoán nhận của DM là F’ = { X Q’ | X chưá 1 thành
phân q
i
F}
V. Cài đặt thuật toán
14
15

×