二、非確定型有窮自動機(nfa)
三、具有ε轉移的有窮自動機(ε-nfa)
四、小結
說一說我對自動機的個人理解,僅供參考
自動機是描述多狀態系統的一種方法。比如指標式鐘錶就是一種多狀態系統,它有12x60x60個狀態,秒針沒走一格,就切換到下乙個相鄰的狀態。 同時,自動機是表示語言的另一種形式,具體見下面的分析
自動機的組成
多狀態系統一定有且只有乙個初態,至少有乙個終態。規定自動機未獲得任何輸入時的狀態是初態(狀態轉換從初態開始);終態是人為指定的,即使達到某個終態了,也可以繼續接受輸入並轉換到自己、其他終態或非終態
對於某些狀態,無論輸入什麼,都不能驅動其最終轉換到終態(經過任意多次狀態轉換都不行),這種狀態稱它為死狀態。
對多狀態系統進行抽象:
有若干狀態
存在若干輸入
狀態間存在由輸入驅動的轉移
有乙個特殊的初始態
有若干特殊的終結態
和語言的聯絡:除了之前介紹的文法外,自動機是表示語言的另一種形式。
語言說白了就是一些字串的集合,只要設計乙個"系統",可以把某些字串從世界上無窮多的字串中提取出來,就可以說這個"系統"能表示語言。
我們把字串拆開為乙個個字元,每個字元作為乙個輸入。自動機從初始態開始,受到每乙個字元的輸入不停進行狀態轉移,當字串全部輸入後,如果自動機處於某個終結狀態,我們就說自動機接受了這個字串。所有自動機接受的字串的集合稱為這個自動機描述的語言
自動機的分類:基於狀態轉移規則形式上的不同進行分類
給出dfa m=(
q,∑,
δ,q0
,f
)m =(q,∑,δ,q_0,f)
m=(q,∑
,δ,q
0,f
)給出nfa m=(
q,∑,
δ,q0
,f),
x是∑上
的乙個字
符串
m=(q,∑,δ,q_0 , f),x是∑上的乙個字串
m=(q,∑
,δ,q
0,f
),x是
∑上的一
個字串
ε-closure(q)
:有ε-nfa,對於狀態q,它的ε-closure(q)是:
形式化定義:
q在ε-closure(q)中;
若p在ε-closure(q)中,則δ(p,ε)也都在ε-closure(q)中;
重複2,直到ε-closure(q)中狀態不再增加為止。
進一步地,對於狀態集p的ε-closure( p),我們規定:ε-closure( p) = ∪ε-closure(q),也就是所有元素的ε-closure並起來
從轉移圖上看,就是從狀態q出發,沿著標有ε的有向邊所能達到的一切狀態所構成的集合(包括狀態q本身)
擴充轉移函式
δ
^\hat
δ^:擴充套件為對映 2q×
∑∗→2
q2^q×∑^*→2^q
2q×∑∗→
2q,定義如下:
δ
^\hat
δ^(q,ε)=ε-closure(q),
δ
^\hat
δ^(q,wa)=ε-closure( p), p = ∪δ^
\cup \hat
∪δ^(r,a),r∈δ
^\hat
δ^(q,w)(q∈q, a∈∑, w∈∑*)
給出ε-nfa m=(
q,∑,
δ,q0
,f
)m=(q,∑,δ,q_0 , f)
m=(q,∑
,δ,q
0,f
),它接受的語言定義為:
有窮自動機
problem description adfa 證明 adfa是可判定的。實驗方法 編寫乙個演算法 程式,對於任意給定的輸入,可以判定adfa。input 有多個測試序列,測試結束於測試檔案結束 每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第...
實驗三 有窮自動機
實驗三 有窮自動機 一 實驗目標 1 掌握有窮狀態自動機的概念 2 掌握有窮狀態自動機的儲存及表示方法 3 掌握有窮狀態自動機與正則式之間的關係。二 實驗要求 1 輸入正規式 2 構造該正規式的有窮狀態自動機 3.以五元組形式輸出。三 演算法 參見教材的轉換規則。練習 a b abb l l d 1...
有窮狀態自動機
有窮狀態自動機 fa finite automaton 是乙個五元組 m q,q0,f q 狀態的非空有窮集合.q q,q稱為m的乙個狀態.輸入字母表.狀態轉移函式,有時又叫作狀態轉換函式或者移動函式,q q,q,a p.q0 m的開始狀態,也可叫作初始狀態或啟動狀態.q0 q.f m的終止狀態集合...