在我看到的将Kleene星应用于现有FSM的所有示例中,我看到创建了一个新的接受和起始状态,并且存在从所有接受状态到该状态的ε过渡,以及从新状态的ε过渡。到原始的开始状态。我的问题是为什么我们需要一个新的状态?我们不能只是将原始开始状态设为接受状态(如果尚未接受)并通过epsilon转换将其链接到所有接受状态吗?
谢谢!
吉尔
答案 0 :(得分:0)
因为原始的开始状态可能已经发生自我转变。考虑使用DFA语言L = a*b
A -a-> A
A -b-> B
以B
作为接受状态。
如果您使状态A
接受并添加了过渡B -ε-> A
,则该语言现在将接受单词a
。 a
不是L*
的成员,所以这个新的DFA不是L*
,而是另外一个东西。
相反,我们添加了一个新的开始状态,接受状态C
:
C -ε-> A
A -a-> A
A -b-> B
B -ε-> C
a
不再是此εNDFA接受的单词。这种语言是L*
。