有限狀態機

2021-09-24 09:50:02 字數 1142 閱讀 6411

有限狀態機 在計算機中是乙份可以運動的**。

這份**有 有限個狀態,裡面的變數只能有 有限個狀態,比如:

// 定義列舉型別,共 9 種狀態

typedef enumstate;

state cur_s = s1;

// 列舉型別的變數 cur_s 就只有 有限個狀態(9個)。

另外有限狀態機能從外部接受訊號和資訊輸入,接受後會綜合考慮當前自己的狀態和使用者輸入的資訊跳轉到另乙個狀態。

有限狀態機分為 moore 和 mealy 型。

moore:輸出只與當前狀態有關(與輸入無關)。

用 c 實現乙個簡單的有限狀態機,最好的取材是位址。

xx省 xx市 xx區 xx街道 xx號

如果在 輸入省前 先輸入 市 ,狀態機就歸零,在輸入街道前 輸入號也是如此。

簡單起見,重在理解。

把上面的位址 換為 一串數字,要按照順序輸入 41739364 才能到達狀態 s9,結束程式。

看一下**吧,思想實現大概就是這樣。

#include// 倆個巨集定義,想少寫點**,為了可讀性您可以補上。

#define s(n) // 如果輸入匹配,狀態加一

#define than else // 否則,狀態回到 s1

typedef enumstate;

void print(state str) // 列印函式,提示也可以不用

int main(int argc, const char *ar**)

if( cur_s == s9 )

puts("部落格位址正確哦, "), break;

}return 0;

}

如果只使用 第乙個巨集 s(n) ,輸入數字不對應時,還可以在原狀態一直輸入下乙個狀態;如果倆個巨集一起使用,那麼中途只要有乙個數字匹配不上,狀態機的狀態初始化,需要又從頭開始輸入。

有限狀態機

有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...

有限狀態機

以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...

有限狀態機

需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...