状态机和多个状态

时间:2013-02-10 01:30:56

标签: computer-science

使用传统的状态机定义,状态机记录可以同时处于多个状态吗?例如,如果我有User模型,那么用户可以同时处于subscriberpromotional_period状态吗?

注意,我不是在问这样做是否有意义,我的问题是 - 是否可以使用状态机。

4 个答案:

答案 0 :(得分:23)

如果您假设finite state machines(FSM)称为deterministic finite automata(FSA),只能有一个活动状态,那么说“不”的所有答案都是正确的在任何给定的时间。

然而,这不是唯一的FSM类型,并且没有充分的理由在所有情况下都限制自己使用这种类型的机制。还有nondeterministic finite automata(NFA),可以同时处于任意数量的状态。

这不仅仅是学术性的,甚至不是解析(正如维基百科链接可能暗示的那样):NFA实际上非常简单且非常有用,并且在硬件和软件实现中都在实践中使用。

基本上,要设计NFA,你就像DFA一样,但不是使用“当前状态”并使用输入来计算“下一个状态”,而是拥有“当前状态集”并使用用于计算“下一状态集”的输入。在硬件中(例如,用VHDL实现的FPGA),这可以在字面上同时完成。在(单线程)软件中,通常只需迭代机器每个“步骤”中的当前状态即可完成。

答案 1 :(得分:4)

没有。状态机一次只有一个状态。

组合状态可以使用其他状态完成,例如subscriber_and_promotional_period。这是通常的做法。

答案 2 :(得分:3)

维基百科再过一天:

“有限状态机(FSM)或有限状态自动机(复数:自动机),或简称为状态机,是用于设计计算机程序和时序逻辑电路的计算的数学模型。它被认为是一个抽象机器,可以处于有限数量的状态之一。机器一次只处于一种状态;它在任何给定时间处于的状态称为当前状态。“< / p>

所以,没有。

答案 3 :(得分:0)

Petri nets是状态机的概括,允许多个同时发生的状态&#39;。