文章目錄
- 3.1.1 開始狀態
- 3.1.2 接受狀態
- 3.2.1 Moore機
- 3.2.2 Mealy機
1 定義
有限狀態機器(finite-state machine, FSM),又稱有限狀態自動機,簡稱狀態機器,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。
2 概念和術語
狀態儲存關於過去的資訊,就是說:它反映從系統開始到現在時刻的輸入變化。
轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。
動作是在給定時刻要進行的活動的描述。有多種類型的動作:
l 進入動作:在進入狀態時進行
l 退出動作:在退出狀態時進行
l 輸入動作:依賴於目前狀態和輸入條件進行
l 轉移動作:在進行特定轉移時進行
圖1 開關門狀態圖
FSM(有限狀態機器)可以使用上面圖 1 那樣的狀態圖來表示,此外還可以使用多種類型的狀態跳躍表。下面展示最常見的表示:目前狀態(B)和條件(Y)的組合指示出下一個狀態(C)。完整的動作資訊可以只使用腳註來增加。
狀態跳躍表 |
目前狀態 → 條件 ↓ |
狀態 A |
狀態 B |
狀態 C |
條件 X |
… |
… |
… |
條件 Y |
… |
狀態 C |
… |
條件 Z |
… |
… |
… |
除了建模這裡介紹的反應系統之外,有限狀態自動機在很多不同領域中是重要的,包括電子工程、
語言學、電腦科學、哲學、生物學、數學和邏輯學。有限狀態機器是在自動機理論和計算理論中研究的一類自動機。在電腦科學中,有限狀態機器被廣泛用於建模應用行為、硬體電路系統設計、軟體工程,編譯器、網路通訊協定、和計算與語言的研究。
3 分類
有限狀態機器有兩個不同的群組:接受器/辨識器和變換器。
3.1 接受器和辨識器
圖2 接受器 FSM:解析單詞"nice"
接受器和辨識器(也叫做序列檢測器)產生一個二元輸出,說要麼“是”要麼“否”來回答輸入是否被機器接受。所有FSM的狀態被稱為要麼接受要麼不接受。在所有輸入都被處理了的時候,如果目前狀態是接受狀態,輸入被接受,否則被拒絕。圖2中的例子展示了接受單詞 "nice"的有限狀態機器。
3.1.1 開始狀態
開始狀態通常用“沒有起點的箭頭”指向它來表示,3左邊的圓。
3.1.2 接受狀態
接受狀態是機器符合了設定條件後的狀態,它通常表示為雙重圓圈。3左邊的圓,它確定二進位輸入是否包含偶數個 0,S1(它也是開始狀態)指示已經輸入了偶數個0的狀態。
圖3一個檢測位元具有奇數或者偶數個0的狀態機器
3.2 變換器
變換器基於目前狀態和輸入產生輸出。它們用於控制應用。常分為兩種類型:Moore機和Mealy機。
3.2.1 Moore機
摩爾型有限狀態機器(Moore machine)是只使用進入動作的有限狀態機器,就是說輸出只依賴於狀態。Moore 模型的好處是行為的簡單性。
圖1的例子展示了一個電梯門的Moore機。這個狀態機器識別兩個命令:“command_open”和“command_close”。在狀態“Opening”中的進入動作 (E: Opendoor)開啟電機開門,在狀態“Closing”中的進入動作以反方向開啟電機關門。它們通知外部世界(比如其他狀態機器)情況:“門開著”或“門關著”。
3.2.2 Mealy機
米利型有限狀態機器(Mealy machine)是基於它的目前狀態和輸入產生輸出的有限狀態自動機(更精確的叫有限狀態變換器)。與輸出只依賴於機器目前狀態的摩爾有限狀態機器不同,它的輸出與目前狀態和輸入都有關。
圖4 變換器FSM:Mealy 模型例子
只使用輸入動作的FSM,就是說輸出依賴於輸入和狀態。Mealy機的使用經常導致狀態數目的簡約。在圖4中的例子展示了實現同上面 Moore 機同樣行為的Mealy 機。有兩個輸入動作(I:):“開啟電機關門如果 command_close 下達”和“反向開啟電機開門如果 command_open 下達”。