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

时间:2014-10-23 04:00:49

标签: regex automata dfa

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

我无法获得带有alphabet = {0,1}的Automata的正则表达式,它生成不以01结尾的字符串。

这是状态图:

State Diagram

我使用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)*

或类似的事情。你知道我可以测试正则表达式吗?

2 个答案:

答案 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,我确实有。