我們用5元組(q
,∑,δ
,q0,f)(
q,∑,
δ,q0
,f
)定義確定性有限自動機
q q
是狀態的有限集
∑' role="presentation" style="position: relative;">∑
∑是字母表
δ δ
是轉移函式,對映關係為q×
∑→q q×∑
→qq0q
0表示開始狀態f⊆
q f⊆q
是accept狀態集
既然有了以上定義,接下來定義乙個dfa
m m
accepts字串
w' role="presentation" style="position: relative;">w
w,其中:w=
w1w2
...w
n,wi∈∑w
=w1w
2...
wn,w
i∈
∑, r
0,r1
,...
,rn r0,
r1,.
..,r
n是q
q狀態集元素的乙個排列:r0
=q0' role="presentation" style="position: relative;">r0=
q0r0
=q0δ
(ri,
wi+1
)=ri
+1,i
=0,.
..,n−1δ
(ri,
wi+1
)=ri
+1,i
=0,.
..,n
−1
rn∈frn
∈f
a a
是乙個包含所有有限自動機
m' role="presentation" style="position: relative;">m
maccepts的字串的集合,即a=a=
,那麼a
a就是m
' role="presentation" style="position: relative;">m
m的語言,記作l(
m)=al(
m)=a
。對此,我們稱
m m
recognizes
a' role="presentation" style="position: relative;">a
a。注意:乙個有限自動機可能會accepts很多字串,但它只能recognizes乙個語言。如果這個有限自動機不接受任何字串,那它仍然recognizes乙個語言,the empty language
∅ ∅
。如果乙個語言可以被某個有限自動機recognizes,那麼這個語言被稱為正則語言regular language。 設
a a
和b' role="presentation" style="position: relative;">b
b都是正則語言
1. union並: a∪
b=a ∪b
=2. concatenation 連線: aº
b=a ºb
=3. star: a∗
= a∗=
以上三種regular operation都是封閉(closed)的。在另幾篇文章中會證明封閉性。
有限自動機
我們在學習有限自動機之前,我們可以先簡單了解一下,有限狀態機 fsm 學習軟考,大家應該對編譯器和直譯器都不陌生,其實編譯器就是用fsm做詞法分析 這些詞是不是很熟悉 那麼什麼是狀態呢?什麼優勢狀態機呢?我們學習的時候,不想學了,就說自己沒有狀態,其實轉態在我們生活中,轉態隨處可見,計算機也是。所謂...
有限狀態自動機
有限自動機是更一般化的狀態轉化圖。分為確定有限自動機 dfa 和不確定有限自動機 nfa m s,f,so,z 其中 下圖為乙個確定的有限狀態自動機 m s,f,so,z 其中 下圖為乙個不確定的有限狀態自動機 說了半天其實它們的本質區別就在於s0,確定的有限狀態自動機的s0是唯一確定的。而不確定的...
有限狀態自動機
有限自動機是更一般化的狀態轉化圖。分為確定有限自動機 dfa 和不確定有限自動機 nfa m s,f,so,z 其中 下圖為乙個確定的有限狀態自動機 m s,f,so,z 其中 下圖為乙個不確定的有限狀態自動機 說了半天其實它們的本質區別就在於s0,確定的有限狀態自動機的s0是唯一確定的。而不確定的...