形式語言自動機(3) 三種有窮自動機

2021-09-28 18:08:49 字數 1976 閱讀 4201

二、非確定型有窮自動機(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的終止狀態集合...