将Kleene Star应用于FSM

时间:2019-02-28 03:51:00

标签: regex automata

在我看到的将Kleene星应用于现有FSM的所有示例中,我看到创建了一个新的接受和起始状态,并且存在从所有接受状态到该状态的ε过渡,以及从新状态的ε过渡。到原始的开始状态。我的问题是为什么我们需要一个新的状态?我们不能只是将原始开始状态设为接受状态(如果尚未接受)并通过epsilon转换将其链接到所有接受状态吗?

谢谢!

吉尔

1 个答案:

答案 0 :(得分:0)

因为原始的开始状态可能已经发生自我转变。考虑使用DFA语言L = a*b

A -a-> A
A -b-> B

B作为接受状态。

如果您使状态A接受并添加了过渡B -ε-> A,则该语言现在将接受单词aa不是L*的成员,所以这个新的DFA不是L*,而是另外一个东西。

相反,我们添加了一个新的开始状态,接受状态C

C -ε-> A
A -a-> A
A -b-> B
B -ε-> C

a不再是此εNDFA接受的单词。这种语言是L*