【发布时间】:2011-05-09 16:09:53
【问题描述】:
我有一个关于将正则表达式转换为非确定性有限状态自动机的问题:
将 (a*|b*)* 转换为 NFA。我的尝试如下:
我是不是完全不合时宜?还是有些地方?
NB E => ε
【问题讨论】:
标签: regex compiler-construction finite-automata nfa
我有一个关于将正则表达式转换为非确定性有限状态自动机的问题:
将 (a*|b*)* 转换为 NFA。我的尝试如下:
我是不是完全不合时宜?还是有些地方?
NB E => ε
【问题讨论】:
标签: regex compiler-construction finite-automata nfa
您的 NFA 与 (a*|b*)* 匹配相同的语言,所以答案是正确的。
但是,有许多 NFA 匹配相同的语言,在您的情况下,可以删除至少三个 epsilon 箭头。不过,它不会比您的建议更正确。
也可以简化正则表达式(a*|b*)*,而不改变语义。例如。 (a|b)* 等价于 (a*|b*)*。如果你仔细想想,FA 可以这么简单:
【讨论】: