人工智慧 自動機模型

2021-09-07 09:32:42 字數 2350 閱讀 4815

這是一類智慧型的演算法,沒有什麼固定的模式,就是乙個演算法思想,可以給我們一些有價值的指導,當我們想要做一些相關工作的時候,可以擴寬我們的視野,開啟我們的腦洞,借鑑其中的原理。我不想多說裡面的什麼數學和公式,只要你懂裡面的思想會遷移到實際的應用中就很不錯,更好的則是在其基礎上形成自己的思維,需要用的話,就像什麼神經網路一樣,最好使用現成的框架。

簡介

有限狀態機,(英語:finite-state machine, fsm),又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。

狀態儲存關於過去的資訊,就是說:它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給定時刻要進行的活動的描述。有多種型別的動作:

進入動作(entry action):在進入狀態時進行

退出動作:在退出狀態時進行

輸入動作:依賴於當前狀態和輸入條件進行

轉移動作:在進行特定轉移時進行

通俗的介紹

接下來來說說理解,首先從名字上來看,機指的是演算法 狀態則就是狀態 有限表示其中狀態是有限個數的。具體在模型上來看,有限狀態機應該是這樣的

這是乙個簡單的例子,在乙個情境中存在三種狀態,兩種動作,圓圈表示就是的是狀態,狀態之間的箭頭表示狀態的轉移,而箭頭上的表示對應的觸發條件,例如在1狀態如果發生b則狀態變化為2,自己到自己的箭頭表示狀態不變化。

下面可以有乙個更加通俗的小圖例

這是乙個遊戲ai的狀態自動機模型,表示了ai在過程中的不同狀態轉換,雖然沒有標誌條件,但是看起來是不是更有意思了。

概念及加深理解

其在任意時刻都處於有限狀態集合中的某一狀態。當有乙個觸發動作時可以從當前狀態轉換到另乙個狀態,或者仍然保持在當前狀態。任何乙個fsm都可以用狀態轉換圖來描述,圖中的節點表示fsm中的乙個狀態,有向加權邊表示輸入字元時狀態的變化。如果圖中不存在與當前狀態與輸入字元對應的有向邊,則fsm將進入「消亡狀態(doom state)」,此後fsm將一直保持「消亡狀態」。狀態轉換圖中還有兩個特殊狀態:狀態1稱為「起始狀態」,表示fsm的初始狀態。狀態6稱為「結束狀態」,如果乙個流程適用狀態機來擬合,當達到結束狀態後則表示該過程與模型擬合

在圖例中,我們的狀態機初始是在狀態1,這是人為初始設定的,而後根據我們箭頭上的轉移條件,我們可以看到隨著狀態的不斷變化.如果達到了狀態6,一切卻停止了,因為無論施加什麼條件都不能使狀態發生變化,我們的狀態機也結束了。

適用範圍

這種基本原理決定了它是適用物件必須是包含多種狀態的,但狀態這是乙個描述而且沒有那麼嚴格,可以是協議互動中不同的狀態,也可以是有其中ai人物的狀態,也可以是乙個字串中字元的狀態。fsm的作用主要是描述物件在它的生命週期內所經歷的狀態序列,以及如何響應來自外界的各種事件。而我們使用它,常用的功能也就是兩點:

這裡有幾個小例子,乙個是tcp協議狀態機,大家應該都有所耳聞,三次握手什麼的計算機網路課上 協議課上都是主菜

注意的地方

雖然我我們有用過狀態機,但是也遇到過不少,無論是其他人的**中,還是某些部落格上,我只說說在理解時或者是實現時容易導致的問題『

1.注意狀態的變化

這樣的乙個圖可以很明顯的展示你要做的工作,哪怕是比較複雜的邏輯,過了一段時間你在看也不會煩,因為這個圖已經表明了一切,不需要你再去思考太多

2.實現方案

這個列表已經這麼明顯了,就是乙個矩陣,對於條件的判斷和轉移我們可以使用if 也可以使用switch語句,甚至可以malloc乙個矩陣然後定義好其中的元素。

拋除上邊的不說,如何定義乙個狀態轉移結構,方法也很多,甚至我們可以不需要定義特殊的結構,就使用乙個變數來表示當前狀態,其他的所有輸入判斷未嘗不可以使用乙個大迴圈來解決。當然在你有一定基礎的情況下,採用鍊錶的結構類似於【當前狀態,【條件,下一狀態】集合】這也不是不可以。

有關於一些介面的設計

還包含了c**的示意實現

動機模型 模型 元胞自動機

我們一直對複雜系統抱有敬畏之心,總覺得複雜系統 於複雜的設計。但實際上如果我們去了解 stephen wolfram 史蒂芬 沃爾夫勒姆 的著作 a new kind of science 之後,也許會有不一樣的視角和答案。a new kind of science 一書中,最關鍵的就是這5個字 簡...

AC自動機及字尾自動機

ac自動機是一種基於trie樹的演算法,其本質和kmp上的處理很相似。trie樹結構 kmp轉移思路 ac自動機組要由三個部分組成 trie樹的建立 fail指標的匹配 對ac自動機的詢問 每次建立自動機會有一次初始化 ac自動機類 struct node node結構體 struct ac voi...

字尾自動機 序列自動機綜合

好像序列自動機還沒有寫過 串長為n的串共有n 1個節點,除了串中的n個節點,還有乙個空的根節點放在串首。每個節點至多有26條出邊,每條邊連向它之後的第乙個字元。串中的任意乙個子串行對應了一條根到某個節點的路徑。且每條路徑對應乙個不同的子串行。每個節點的parent是這個字母上一次出現的位置。更新只要...