繁体   English   中英

不以01结尾的字符串的自动机正则表达式

[英]Regular Expression for Automata for Strings that do not end in 01

不以01结尾的字符串的自动机。

我无法获得带有字母= {0,1}的自动机的正则表达式,该正则表达式生成不以01结尾的字符串。

这是状态图:

状态图

我使用Matthew McClintock的Visual Automata Simulator工具获得了此状态图,因此我测试了一些字符串,例如空字符串e,“ 0”,“ 1”,“ 00”,“ 10”,“ 11”和那些不以01结尾,似乎可行。

您能帮我获得正则表达式吗? 我没有对计算机自动机理论进行正式介绍,因此我几乎不了解dfa,nfa的概念,因此该术语对我来说有点奇怪。

我试图获得正则表达式,其中一个是:

(0 + 1)*(00 + 10 + 11)

但我不确定这是否正确。

然后根据该图,我尝试了以下操作:

1 *(00 * 1 + 0 + 0 * 1)* + 1(00 * 1 + 0 * 1)*

或类似的东西。 您知道我可以测试正则表达式吗?

您至少应该提出以下DFA:

然后使用此处描述的步骤来求解正则表达式。

R1 = 1R1 + 0R2 +       λ
R2 =       0R2 + 1R3 + λ
R3 = 1R1 + 0R2

剩下的作为练习留给您。

正如我在评论中所说,您的第一次尝试非常接近。 这应该工作:

(0+1)*(00+10+11)+0+1+ε

或者,以程序员的方言,

^([01]*(00|10|11)|0|1|)$

编辑:谢谢nhahtdh,的确是我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM