为什么不能简化NFA的Kleene闭合结构?

时间:2017-01-01 15:15:08

标签: parsing lexer nfa kleene-star

大多数来源,例如http://www.cs.may.ie/staff/jpower/Courses/Previous/parsing/node5.html,都表明Kleene闭包是用4个节点构建的。

为什么不能用2来构建,如下所示?

enter image description here

1 个答案:

答案 0 :(得分:5)

为了在连接两个NFA时获得正确的结果,您需要确保两个组件:

  1. 结束状态没有转换;或

  2. 没有转换到开始状态。

  3. 正常的汤普森建筑确保了两者。

    没有这样的限制,组合不起作用。例如,对于您的构造,a*b*的NFA也接受ababab,这是错误的。