有限状态机如何实现最小和最大命中

时间:2016-04-01 09:19:19

标签: algorithm fsm

我正在尝试实施fsm,而且一切正常。我可以输入字符串,看看它们是否有效以及所有这些东西。

然而,正则表达式(fsms)具有此功能,您可以指定某个字符可能出现的次数,例如{2,4}会接受“aa”和“aaa”而不是“aaaaa”和“aaaaa”一个“

我可以想象在边缘上有一个计数器可以计算它们被击中的次数,并且在计数器达到一定数量后使用它来拒绝任何字符,但是你不能以这种方式实现最小值,因为它总会阻止第一个字符(除非最小值为0)。

有谁知道实现此功能的方法? 它也必须适用于像{1,99999999999}

这样的大数字

1 个答案:

答案 0 :(得分:0)

据我了解,这种约束不能在有限状态机中动态实现; FSM的某些部分必须进行静态扩展。在您的示例中,对于a{2,3},必须构建三个不同的单独FSM,一个接受aa,第二个接受aaa,第三个接受aaaa;然后,必须通过一些空转换在最终的FSM中做出替代。这样做的原因是FSM本身不存储其当前状态达到的路径,这意味着无法检查模式a{i,j}的paremeterized形式。