RE 到 NFA Thompson 的构造步骤 ((c|a)b*)*

RE to NFA Thompson's construction steps ((c|a)b*)*

我试图通过使用 thompsom 的构造将 ((c|a)b*)* 转换为 nfa,但我理解了一些错误,因为结果不是它应该的结果。如果您能指出我的错误,我将非常高兴。 汤普森的构造规则:

步骤 2:括号优先,所以我创建了 c|a

第3步:然后我创建了b*

第 4 步:然后我组合 c|a 和 b* 来创建 (c|a)b*

第 5 步:最后我创建了 ((c|a)b*)*

与正确解的不同之处在于,在最后一个nfa中(示例中没有显示步骤,最后状态重新编号)没有s9。所以 S8 ε-transists 到 S5 和 S5 ε-transists 到 S10。如果 b* 没有 S9 状态但由于规则 2 需要它,这对我来说是有意义的。所以我想我在连接过程中犯了一个错误。提前谢谢你。

规则2说什么都不能进入S11,这里不相关。连接时(步骤 4),S8 和 S9 应该已经合并。

来自维基百科,

The concatenation expression st is converted to