2016-04-12 142 views
2

我正在寫一個簡單的有限狀態機,並意識到有些情況下事件可以將狀態轉換爲多個可能的結果。基本上,從狀態A,如果事件E發生了,狀態可能是C或者D.有限狀態機:一個狀態到多個狀態

我目前使用在這裏寫JavaScript的有限狀態機代碼:https://github.com/jakesgordon/javascript-state-machine

從文檔我不看到一個明顯的方式,使這成爲可能。更重要的是,我覺得這可能是我原創設計中的流程。

實質上,在有限狀態機中,應該存在發生轉換的情況,並且基於多個狀態之一(1到多個)的邏輯結果,或者應該是我們檢查邏輯以查看哪個轉換需要發生(1到1)?

+0

流量還是瑕疵?其實,我不明白你的問題。在有限狀態機(DFA,NFA)中,基於輸入符號,顯然可能有許多狀態轉換。 –

+0

對不起,這是一個錯字。基本上我假設所有的狀態機都是確定性的,即給定一個狀態和一個事件,只有一個可能的狀態是結果。在我最初的設計中,有一種情況是給定一個狀態和一個事件,結果可能是兩種狀態之一。這基本上是不可能的,因爲它是爲DFA編寫的,所以我使用的庫是不可能的。 – beichenfan

回答

3

恭喜,您剛剛發現了non-deterministic finite state machines!這些想法類似於確定性狀態機的想法,除了在給定相同輸入符號的狀態下可能有多種方式轉換。這是如何實現的沒有具體說明(隨機性,用戶輸入,分支並一次運行等等)。

+1

謝謝!這是我的基本問題。你知道NFA有哪些流行的JS庫嗎? – beichenfan

+1

@ beichenfan不,我不知道。但是,由於NFA的具體細節沒有定義,因此無法構建通用NFA庫。所以你必須決定你真正想要什麼;例如,如果你想要隨機性,我肯定有一個不錯的馬爾可夫鏈庫。 – JesseTG