2016-04-12 16 views
2

私はシンプルな有限状態機械を書いており、イベントが複数の可能な結果に状態を取ることができる状況があることに気付きました。イベントEが発生した場合、基本的に、状態Aから、状態は、CまたはD有限状態マシン:複数の状態への1つの状態

のいずれかである私は現在、ここに書かれたJavascriptの有限状態マシンコードを使用しています:https://github.com/jakesgordon/javascript-state-machine

私がいない文書からこれを可能にする明白な方法を見てください。もっとそうです、私はおそらくこれが私のオリジナルデザインの流れなのかもしれません。

本質的に、有限状態機械では、遷移が起こり、いくつかの論理結果に基づいて複数の状態(1対多)の状態になるか、またはどの遷移が起こる必要があるか(1対1)?

+0

フローまたは欠陥?実際、私はあなたの質問を理解していません。有限状態マシン(DFA、NFA)では、明らかに、入力シンボルに基づいて状態からの多くの遷移が存在する可能性がある。 –

+0

申し訳ありませんが、それはタイプミスでした。基本的には、私はすべての状態機械が決定論的であるという仮定の下にあった、すなわち、状態と事象が与えられれば、結果として可能な状態は1つだけである。私の元のデザインでは、状態とイベントが与えられ、2つの可能な状態のうちの1つが結果になる状況がありました。これはDFAのために書かれて以来、私が使っていたライブラリを使うことは基本的に不可能でした。 – beichenfan

答えて

3

おめでとう、あなたはちょうどnon-deterministic finite state machinesを発見しました!このアイデアは、同じ入力記号が与えられた状態から遷移するための複数の方法が存在することを除いて、決定論的状態マシンのものと同様である。これが実際にどのように行われるかは特定されていません(ランダム性、ユーザー入力、ブランチアウト、まとめての実行など)。

+1

ありがとう!それが私の基本的な質問でした。あなたはNFAにとって有名なJSライブラリを知っていますか? – beichenfan

+1

@beichenfanいいえ、私はしません。しかし、NFAの詳細は定義されていないため、汎用NFAライブラリを作成する方法はありません。だから、あなたが本当に望むものを決める必要があります。たとえば、ランダム性が必要な場合は、どこかにまともなマルコフ連鎖ライブラリがあると確信しています。 – JesseTG

関連する問題