2013-02-10 16 views
12

ステートマシンの伝統的な定義を使用すると、マシンレコードが同時に複数のステートになることができますか?たとえば、Userモデルをお持ちの場合、ユーザーはsubscriberと同時にpromotional_periodの状態になることができますか?ステートマシンと複数ステート

私はそれをするのが理にかなっているのかどうかは分かりませんが、私の質問は - ステートマシンで可能なのですか?より一日ウィキペディアquothが

答えて

5

番号ステートマシンは、一度に状態を持っています。です。

組み合わせ状態は、subscriber_and_promotional_periodのような別の状態で実行できます。これは通常の方法です。

+0

これは多くのFSM実装の場合に当てはまりますが、これは非決定論的有限オートマトンの分野全体を無視するので、これは全体の話ではありません。詳細は私の答えを見てください。 – wjl

+0

しかし、複数状態FSMは1状態FSMと同等ではありませんか? –

4

「有限状態機械(FSM)または有限状態オートマトン(複数:オートマトン)、または単に状態マシンは、するために使用される計算の数学的モデルでありますマシンは一度に1つの状態にしかなれず、ある時点での状態は1つだけです。現在の状態と呼ばれる。 "

+0

これはFSM実装の一般的なケースですが、全体的な話ではありません。同じウィキペディアの記事から、「決定論的(DFA)オートマトンと非決定論的(NFA、GNFA)オートマトンの間にはさらに別の区別があります」決定論的オートマトンでは、与えられた状態に対して、1つ、複数の遷移、または全く遷移しない可能性があります。 – wjl

13

finite state machines(FSMs)のdeterministic finite automata(DFAs)と呼ばれる「標準」タイプを想定している場合にのみ、「いいえ」と回答するのは正しいです。

しかし、これはFSMの唯一のタイプではなく、すべての場合にこのタイプのメカニズムに制限する正当な理由はありません。 nondeterministic finite automata(NFAs)もありますが、これは同時に複数の状態にすることができます。

NFAsは実際には非常に単純で信じられないほど有用であり、ハードウェア実装とソフトウェア実装の両方で実際に使用されています(ウィキペディアのリンクが意味するように)。

基本的には、NFAを設計するには、DFAと同じように行いますが、「現在の状態」を持ち、入力を使用して「次の状態」を計算する代わりに、「現在の状態セット」を使用します入力は「次の状態集合」を計算する。ハードウェア(例えば、VHDLで実装されたFPGA)では、これは文字通り同時に行うことができる。 (シングルスレッド)ソフトウェアでは、これは通常、マシンの各「ステップ」内の現在の状態を反復するだけで実行されます。

+1

「国家機械の伝統的な定義」ではありませんが、私は実際にこれをより良い答えと考えています。ありがとうございました。 – flybear

0

Petri netsは、複数の「状態」を同時に可能にする状態マシンの一般化です。

関連する問題