Ste*_*n S 5 graph-theory state-machine statechart
我想对上面的调查问卷进行建模,我认为它是一个有向无环图。
我一直在关注的两个库是:
我遇到的几个问题是:
调查问卷依赖于先前的状态,例如先前问题的答案用于转换到另一个状态(问题)。我认为“外部国家”可以解决这个问题对吗?
如果我处于 Q6 并且我想过渡到上一个问题,那么根据之前的答案,这可能是 Q1、Q4 或 Q5。我想我可以使用堆栈在调查问卷进行时推送每个状态,然后弹出以返回到之前的状态。
这一切听起来可行吗?或者有更好的方法来模拟这个问题吗?
该问题的解决方案可以通过扩展状态机来建模。您不一定需要一个分层的。您显示的状态和转换可以使用常规状态机来寻址,但“内存”部分可以使用扩展状态机来正确寻址。
简而言之,您的图表保持不变,只是在每次转换时添加了扩展状态的更新。例如,您的扩展状态可以是{A1, A2. ..., A6, H},其中Ax代表 的答案Qx,H是机器经历过的状态的历史记录。当您从 Q1 转换到 Q2 时,您还会更新A1到答案H和[A1]。你为所有人都这样做Q。到达 Q6 时,您已拥有编写守卫所需的所有信息,以根据先前状态的历史记录和答案来决定过渡到何处。
因此,总结一下您问题的答案:是的,外部状态可以有利可图地使用,在这种情况下,保存状态历史记录的堆栈将解决您的问题,正如您的直觉一样。当然,您还可以使用状态图库,因为状态图概括了扩展状态机。
作为附加组件,我还将我自己的扩展状态机库添加到您已经提到的优秀库中: https: //github.com/brucou/state-transducer。
您会发现那里有一个与您刚才描述的问题非常相似的演示。它还涉及多步骤调查问卷,但复杂的是它包含错误路径。