状态机和多个状态

Dty*_*Dty 15 computer-science

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

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

wjl*_*wjl 27

如果您假设称为确定性有限自动机(DFA)的"典型"类型的有限状态机(FSM),那么所有回答"否"的答案都是正确的,它们在任何给定时间只能有一个活动状态.

但是,这不是唯一的FSM类型,并且没有充分的理由在所有情况下都限制自己使用这种类型的机制.还有非确定性有限自动机(NFA),它可以同时处于任意数量的状态.

这不仅仅是学术性的,甚至不仅仅是解析(因为维基百科链接可能意味着):NFA实际上非常简单且非常有用,并且在硬件和软件实现中都在实践中使用.

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

  • 虽然这不是“状态机的传统定义”,但我实际上认为这是一个更好的答案。谢谢你。 (2认同)