ĐAI H C VINHỌ
KHOA CNTT
Biên so n: ạ HOÀNG DANH LONG
K50-CNTT
Ch ng IIươ
ÔTÔMÁT H U H N VÀ BI U TH C Ữ Ạ Ể Ứ
CHÍNH QUYI. ÔTÔMÁT HỮU HẠN (FA : Finite Automata)
Tại mỗi thời điểm, hệ thống có thể được xác định ở
một trong số hữu hạn trạng thái (states).
Mỗi trạng thái của hệ thống tại mỗi thời điểm sẽ thay
đổi tùy thuộc vào INPUT
Ôtômát hữu hạn (FA) được chia thành 2 loại: đơn
định (DFA) và không đơn định (NFA).
DFA có khả năng nhận dạng ngôn ngữ dễ dàng hơn
NFA, nhưng thay vào đó thông thường kích thước của
nó lại lớn hơn so với ôtômát hữu hạn không đơn định
tương đương.Ôtômát h u h n đ n đ nh - DFA ữ ạ ơ ị
(Deterministic Finite Automata)
Một cách hình thức ta định nghĩa ôtômát hữu hạn đơn
định là bộ gồm năm thành phần (Q, Σ, δ, q
thái p trên input a thì có một
cung nhãn a từ đỉnh q đến
đỉnh p trong sơ đồ chuyển.
Trạng thái khởi đầu q
0
nhãn
"Start".Các trạng thái kết
thúc trong F được chỉ ra
bằng hai vòng tròn. Minh họa
DFA đang ở trạng thái q đọc ký hiệu nhập a trên băng, chuyển sang
trạng thái được xác định bởi hàm chuyển δ(q, a), rồi dịch đầu đọc
sang phải một ký tự.
Nếu δ(q, a) chuyển đến một trong những trạng thái kết thúc thì DFA
chấp nhận chuỗi được viết trên băng input phía trước đầu đọc,
nhưng không bao gồm ký tự tại vị trí đầu đọc vừa dịch chuyển đến.
Trong trường hợp đầu đọc đã dịch đến cuối chuỗi trên băng và DFA
chuyển đến trạng thái kết thúc, thì DFA mới chấp nhận toàn bộ chuỗi
trên băng.Ngôn ng đ c ch pữ ượ ấ nh n b i DFAậ ở
Một chuỗi x được chấp nhận bởi ôtômát
Ví d (ti p)ụ ế
Kiểm tra chuổi w = 110101 có thuộc ngôn ngữ do otomat sinh ra hay
không?
δ(q0, 1) = q1, δ(q1, 1) = q0, δ(q0, 0) = q2,
δ(q2, 1) = q3; δ(q3, 0) = q1, δ(q1, 1) = q0 ∈ F
(Hay δ(q0, 110101) = δ(q1, 10101) = δ(q0, 0101) = δ(q2, 101) = δ(q3,
01) = δ(q1, 1) = q0 ∈ F)
Vậy 110101 thuộc L(M). Ta có thể chứng minh rằng L(M) là tập mọi
chuỗi có số chẵn số 0 và số chẵn số 1.
Kiểm tra chuỗi
110101
Vẽ sơ đồ chuyển
Kiểm tra chuỗi
1101?Hàm chuy n tr ng thái m ể ạ ở
r ngộ
Ta định nghĩa hàm chuyển δ như một
ánh xạ từ Q × Σ* → Q với ý nghĩa δ(q,
w) là trạng thái DFA chuyển đến từ trạng
thái q trên chuỗi w. Một cách hình thức,
ta định nghĩa :
1. δ(q, ε) = q
2. δ(q, wa) = δ(δ (q, w), a), với mọi chuỗi
w và ký hiệu nhập a.Gi i thu t mô ph ng ho t đ ng c a m t DFA ả ậ ỏ ạ ộ ủ ộ
đặc biệt của NFA (với số trạng thái để chuyển là
1)Đ nh nghĩaị
ôtômát hữu hạn không đơn định NFA là một bộ 5
thành phần (Q, Σ, δ, q
0
, F) trong đó Q, Σ, q
0
và F có ý
nghĩa như trong DFA,
nhưng δ là hàm chuyển ánh xạ từ Q × Σ → 2
Q
.
2
Q
= tập hợp tất cả các tập hợp con của tập A được
gọi là tập lũy thừa (power set) của A và xác định bởi
2
Q
.
Giả sử A = { 1, 2, 3 }
Thì 2
A
0
, w) có chứa ít nhất một
trạng thái trong F }
VD. Xét NFA M ({q
0
, q
1
, q
2
, q
3
, q
4
}, {0, 1},
δ, q
0
, {q
2
, q
4
}) với hàm chuyển như sau :Ví d (ti p)ụ ế
Kiểm tra chuỗi w = 01001.
Đọc 0 δ(q0, 0) = {q0, q3};.
1
}) với hàm chuyển δ
như sau :δ (q
0
, 0) = {q
0
, q
1
},δ (q
0
,1) = {q
1
},
δ (q
1
, 0) = ∅,δ(q
1
, 1) = {q
0
, q
1
}
Xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q
0
], F’)
chấp nhận L(M)
Tập trạng thái Q’ : chứa tất cả các tập con của {q
0
, q
], 1) = [q
1
] ; δ’([q
1
], 0) = ∅, δ’([q
1
], 1) = [q
0
, q
1
],
δ’(∅, 0) = δ’(∅, 1) = ∅ ,
δ’([q
0
, q
1
],0) = [q
0
, q
1
]. ( vì δ({q
0
, q
1
},0) = δ(q
0
, 0) ∪ δ(q
1
, 0) =
{q
phần tử đó giao với F khác rỗng.
F’ = {[q
1
], [q
0
, q
1
]}δ’
0 1
[q
0
] [q
0
, q
1
] [q
1
]
[q
1
] ∅ [q
0
, q
1
]
[q
0
Ta mở rộng mô hình NFA cho phép các phép chuyển trên
nhãn rỗng ε.
Ví dụ:
Sơ đồ chuyển của một NFA với ε-dịch chuyển :
Đ nh nghĩaị
Một cách hình thức ta định nghĩa NFA với ε-dịch
chuyển là bộ 5 thành phần (Q, Σ, δ, q
0
, F) với tất cả
các thành phần có ý nghĩa như trên, nhưng hàm
chuyển δ là ánh xạ từ Q × (Σ ∪ {ε}) → 2
Q
.
Khái niệm δ(q, a) gồm tất cả các trạng thái p sao cho
có phép chuyển nhãn a từ q tới p, trong đó a là một ký
hiệu thuộc Σ hoặc là ε.
Ta sử dụng ε-CLOSURE(q) để xác định tập tất cả các
đỉnh p sao cho có đường đi từ q tới p với nhãn ε.
Vd: ε-CLOSURE(q
0
Cho NFAε M ({q0, q1, q2}, {0, 1, 2}, δ, q0, {q2}) với
hàm chuyển δ như sau :
Xét chuỗi nhập w = 012 có thuộc vào ngôn ngữ L(M)
hay không?
δ
Input
Trạng thái 0 1 2
ε
q0 q0
∅ ∅
q1
q1
∅
q1
∅
q2
q2
∅ ∅
q2
∅
Ta cần tính δ*(q
0