转换RE - > NFA

时间:2011-05-09 16:09:54

标签: regex compiler-construction finite-automata nfa

我有一个关于将正则表达式转换为非确定性有限状态自动机的问题:

将(a * | b *)*转换为NFA。我的尝试如下:

enter image description here

我完全没有了吗?还是有点吗?

NB E => ε

1 个答案:

答案 0 :(得分:3)

您的NFA与(a*|b*)*的语言相同,所以答案是正确的。

但是,有许多NFA符合相同的语言,在您的情况下,可以删除至少三个epsilon箭头。不过,它不会比你的建议更正确。

还可以简化正则表达式(a*|b*)*,而无需更改语义。例如。 (a|b)*相当于(a*|b*)*。如果你考虑一下,FA就可以这么简单:

Finite Automaton equivalent to (a|b)*