正则表达式0(0 + 1)* 0 + 1(0 + 1)* 1的DFA是多少?

时间:2013-01-02 13:15:26

标签: theory regular-language automata dfa computation-theory

这是我画的DFA -

MyDFA

是否正确?
我感到困惑,因为q4状态对于相同的输入符号有2个不同的转换,违反了DFA的规则,但我想不出任何其他解决方案。

2 个答案:

答案 0 :(得分:4)

您的DFA不正确。
你的DFA完全错误所以我不评论

RE的DFA:

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

语言说明:如果字符串以0开头,则应以0结尾,如果字符串以1开头,则应以1结尾。因此有两个最终状态(状态-5,状态-4)。

state-4:接受1(1 + 0)*1
state-5:接受0(1 + 0)*0
state-1:开始状态。

DFA

DFA

编辑

+正则表达式中的运算符

(0 + 1)* = (1 + 0)*这是由10组成的任何字符串,包括空字符串^

此处+表示联盟,如果它出现在两个RE:和A U B = B U A之间(类似地)=> (0 + 1) = (0 + 1)

plus +的含义取决于它出现的语法:如果表达式是 + +是上标的),这意味着一个{{1}如果a,则a+b表示联盟操作+a

b,其中包含a+ : { a, aa, aaa, aaa.....}语言的a个字符串。

答案 1 :(得分:0)

我认为您应该先从0开始

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

enter image description here