通俗易懂理解有限狀態自動機 FSA 的表示和原理

2021-10-09 13:23:44 字數 1170 閱讀 8153

有限狀態自動機(fsa),通常的作用就是用一種更加直觀的方式來表示正則化表示式。

fsa識別字串的原理

用乙個例子來解釋fsa(以下簡稱自動機)的有向圖表達形式。我們把羊的語言(叫聲)抽象為:baaa…! 用正則化表示式可以表示為 / baa+!/,那麼如何用fsa來表示羊的語言呢,下面看一張圖。

上圖就是用fsa表示的羊的語言,該fsa是用有向圖來表示的,有向圖由兩個集合組成,節點的集合和連線兩節點弧線的集合,節點表示狀態,弧線表示進入下乙個狀態的條件。圖中,q0表示初始狀態,q4表示終極狀態(或接收狀態)

我們知道有向圖可以用矩陣來表示,狀態轉移表其實就是乙個矩陣,同樣以識別羊的語言為例子,如上圖即為用狀態轉移表表示的fsa,同樣有4個狀態,0為初始狀態,4為終極狀態。

用有向圖表示fsa時,其識別字串的工作原理如下:把待識別的字串放在乙個「帶子」(tape)上,該帶子有若干單元格,每個單元格可以放乙個字元,如下圖:

fas從初始狀態q0開始,依次識別帶子上的字元,若識別到的字元與此時狀態到下個狀態的弧上的字元相同,則進入下乙個狀態,相應的帶子上的待識別字元也向後移動乙個,這樣依次識別,當到達終極狀態(接收狀態)時,識別完成。

下面分析一下不能夠成功完成識別的情況。不能成功完成識別分為三種情況:

(1)在帶子上識別到的字元與對應的弧上的字元不匹配,則不能進入下乙個狀態,識別失敗。

(2)帶子上的字元已經讀完,依然沒有讀到整個需要的字串。

(3)自動機在某一種非終極狀態停住了。

出現這三種情況都稱為fsa拒絕(reject)接收輸入字串,即沒能成功識別。

依然是上面的例子,用狀態轉移表表示的fsa如下:

狀態轉移表中表示了識別的各種狀態,它的工作過程簡單來說就是從初始狀態轉移到終極狀態。如圖,從初始狀態0開始,如果遇到b,則進入下乙個狀態1,如果遇到a和!則表示轉移失敗,定義4為終極狀態(用4後面加乙個「:」表示),當轉移到狀態4時,識別成功。

有限狀態自動機

有限自動機是更一般化的狀態轉化圖。分為確定有限自動機 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是唯一確定的。而不確定的...

有限狀態自動機

背景提要 星期三的時候,xw交給我乙個點燈的任務 大意是乙個玩意單擊的時候如何如何,長按又如何如何,雙擊又如何如何,幾種狀態分別執行不同的操作。這就導致了一種情況 在機器第一次檢測到按鈕被按下時,我們無法做出論斷 我們不知道這是一次雙擊還是長按還是單擊,我們只能靜觀其變,見機行事。但是按鈕被按下時,...