狀態機

狀態機是一種用於設計算法的數學抽象。狀態機讀取一組輸入,並根據這些輸入改變到不同的狀態。

狀態是系統在等待執行轉換時所處狀態的描述。轉換是在滿足條件或接收到事件時要執行的一組操作。在狀態圖中,圓圈代表每個可能的狀態,箭頭代表狀態之間的轉換。

檢視最終狀態,您可以瞭解導致該狀態的一系列輸入。

有兩種基本的狀態機型別

確定性有限狀態機

這種型別允許任何允許的輸入只有一個可能的轉換。這就像 `if` 語句一樣,其中 `if x then doThis else doThat` 是不可能的。計算機必須執行兩種選擇中的一種

非確定性有限狀態機

給定某個狀態,一個輸入可以導致多個不同的狀態。

圖 1:確定性有限狀態機。

The machine transitions from state 1 to state 2 for input X and from state 1 to state 3 for input Y

圖 1 中,狀態開始於狀態 1;給定輸入“X”,狀態變為狀態 2,或者給定輸入“Y”,狀態變為狀態 3。

圖 2:非確定性有限狀態機。

The machine may remain in state 1, transitioning to itself, or may transition from state 1 to state 2 for input X

圖 2 中,給定輸入“X”,狀態可以保持不變或變為狀態 2。

請注意,任何 正則表示式都可以由狀態機表示。