自动播放不以01结尾的字符串。
我无法获得带有alphabet = {0,1}的Automata的正则表达式,它生成不以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)*
或类似的事情。你知道我可以测试正则表达式吗?
答案 0 :(得分:2)
你至少应该提出这个DFA:
然后使用here描述的步骤来解决正则表达式。
R1 = 1R1 + 0R2 + λ
R2 = 0R2 + 1R3 + λ
R3 = 1R1 + 0R2
其余的留给你作为练习。
答案 1 :(得分:1)
正如我在评论中所说,你在第一次尝试时非常接近。这应该有效:
(0+1)*(00+10+11)+0+1+ε
或者,在程序员方言中,
^([01]*(00|10|11)|0|1|)$
编辑:谢谢nhahtdh,我确实有。