有限狀態機(finite-state machine, fsm),又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。
狀態儲存關於過去的資訊,就是說:它反映從系統開始到現在時刻的輸入變化。
轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。
動作是在給定時刻要進行的活動的描述。有多種型別的動作:
l 進入動作:在進入狀態時進行
l 退出動作:在退出狀態時進行
l 輸入動作:依賴於當前狀態和輸入條件進行
l 轉移動作:在進行特定轉移時進行
圖1 開關門狀態圖
fsm(有限狀態機)可以使用上面圖 1 那樣的狀態圖來表示,此外還可以使用多種型別的狀態轉移表。下面展示最常見的表示:當前狀態(b)和條件(y)的組合指示出下乙個狀態(c)。完整的動作資訊可以只使用腳注來增加。
狀態轉移表
當前狀態 →
條件 ↓
狀態 a
狀態 b
狀態 c
條件 x…
……條件 y…
狀態 c
…條件 z…
……
除了建模這裡介紹的反應系統之外,有限狀態自動機在很多不同領域中是重要的,包括電子工程
、 語言學
、電腦科學
、哲學、生物學
、數學和邏輯學
。有限狀態機是在自動機理論
和計算理論
中研究的一類自動機。在電腦科學中,有限狀態機被廣泛用於建模應用行為、硬體電路系統設計、軟體工程,編譯器、網路協議、和計算與語言的研究。
有限狀態機有兩個不同的群組:接受器/識別器和變換器。
圖2 接受器 fsm:解析單詞"nice"
接受器和識別器(也叫做序列檢測器)產生乙個二元輸出,說要麼「是」要麼「否」來回答輸入是否被機器接受。所有fsm的狀態被稱為要麼接受要麼不接受。在所有輸入都被處理了的時候,如果當前狀態是接受狀態,輸入被接受,否則被拒絕。圖2中的例子展示了接受單詞 "nice"的有限狀態機。
開始狀態通常用「沒有起點的箭頭」指向它來表示,如圖3左邊的圓。
接受狀態是機器符合了設定條件後的狀態,它通常表示為雙重圓圈。如圖3左邊的圓,它確定二進位制
輸入是否包含偶數個 0,s
1(它也是開始狀態)指示已經輸入了偶數個0的狀態。
圖3乙個檢測二進位制數具有奇數或者偶數個0的狀態機
變換器基於當前狀態和輸入生成輸出。它們用於控制應用。常分為兩種型別:moore機和mealy機。
摩爾型有限狀態機(moore machine)是只使用進入動作的有限狀態機,就是說輸出只依賴於狀態。moore 模型的好處是行為的簡單性。
圖1的例子展示了乙個電梯門的moore機。這個狀態機識別兩個命令:「command_open」和「command_close」。在狀態「opening」中的進入動作 (e: opendoor)開啟電機開門,在狀態「closing」中的進入動作以反方向開啟電機關門。它們通知外部世界(比如其他狀態機)情況:「門開著」或「門關著」。
公尺利型有限狀態機(mealy machine)是基於它的當前狀態和輸入生成輸出的有限狀態自動機
(更精確的叫有限狀態變換器
)。與輸出只依賴於機器當前狀態的摩爾有限狀態機
不同,它的輸出與當前狀態和輸入都有關。
圖4 變換器fsm:mealy 模型例子
只使用輸入動作的fsm,就是說輸出依賴於輸入和狀態。mealy機的使用經常導致狀態數目的簡約。在圖4中的例子展示了實現同上面 moore 機同樣行為的mealy 機。有兩個輸入動作(i:):「開啟電機關門如果 command_close 下達」和「反向開啟電機開門如果 command_open 下達」。
有限狀態機
以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...
有限狀態機
需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...
有限狀態機
有限狀態機 在計算機中是乙份可以運動的 這份 有 有限個狀態,裡面的變數只能有 有限個狀態,比如 定義列舉型別,共 9 種狀態 typedef enumstate state cur s s1 列舉型別的變數 cur s 就只有 有限個狀態 9個 另外有限狀態機能從外部接受訊號和資訊輸入,接受後會綜...