状态图/有限状态机是否适合对调查问卷进行建模

Ste*_*n S 5 graph-theory state-machine statechart

在此输入图像描述

我想对上面的调查问卷进行建模,我认为它是一个有向无环图。

我一直在关注的两个库是:

我遇到的几个问题是:

  1. 调查问卷依赖于先前的状态,例如先前问题的答案用于转换到另一个状态(问题)。我认为“外部国家”可以解决这个问题对吗?

  2. 如果我处于 Q6 并且我想过渡到上一个问题,那么根据之前的答案,这可能是 Q1、Q4 或 Q5。我想我可以使用堆栈在调查问卷进行时推送每个状态,然后弹出以返回到之前的状态。

这一切听起来可行吗?或者有更好的方法来模拟这个问题吗?

use*_*222 1

该问题的解决方案可以通过扩展状态机来建模。您不一定需要一个分层的。您显示的状态和转换可以使用常规状态机来寻址,但“内存”部分可以使用扩展状态机来正确寻址。

简而言之,您的图表保持不变,只是在每次转换时添加了扩展状态的更新。例如,您的扩展状态可以是{A1, A2. ..., A6, H},其中Ax代表 的答案QxH是机器经历过的状态的历史记录。当您从 Q1 转换到 Q2 时,您还会更新A1到答案H[A1]。你为所有人都这样做Q。到达 Q6 时,您已拥有编写守卫所需的所有信息,以根据先前状态的历史记录和答案来决定过渡到何处。

因此,总结一下您问题的答案:是的,外部状态可以有利可图地使用,在这种情况下,保存状态历史记录的堆栈将解决您的问题,正如您的直觉一样。当然,您还可以使用状态图库,因为状态图概括了扩展状态机。

作为附加组件,我还将我自己的扩展状态机库添加到您已经提到的优秀库中: https: //github.com/brucou/state-transducer

您会发现那里有一个与您刚才描述的问题非常相似的演示。它还涉及多步骤调查问卷,但复杂的是它包含错误路径。