正则表达式 0*1*1+11*0*1 DFA

Regular expression 0*1*1+11*0*1 DFA

下面的自动机会接受表达式“0*1*1+11*0*1”吗?

由于表达式生成 以'1' 结尾的字符串,我相信自动机会接受它。

但是,我发现其中一个参考文献中的答案与此不同。有人可以解释一下吗?

注意:+表示或操作。

没有。您的 DFA 等同于表达式 (0*1+)+

您指定的表达式需要至少三个 1 才能被接受。将其分解成多个部分

0*
1*
1+ <-- Required at least once
1  <-- Required
1*
0*
1 <-- Required

与您的表达式等效的 DFA 需要表示如下所示:

使用 Regex visualizer 创建的图像,它允许您从正则表达式生成这些图表。

更新: 如果 + 表示或者,这会改变一些事情。您原来的 DFA 仍然不等效。您错过了如果接受的字符串以 1 开头,则需要至少再跟一个 1 才能被接受。表达式的 DFA 如下所示:

通过将 0*1*1|11*0*1 输入可视化工具生成。