Regex DFA的正则表达式
有人能告诉我所附的DFA是否正确吗 对于字母∑={a,b}的语言,我假设给出DFARegex DFA的正则表达式,regex,finite-automata,automata,dfa,automata-theory,Regex,Finite Automata,Automata,Dfa,Automata Theory,有人能告诉我所附的DFA是否正确吗 对于字母∑={a,b}的语言,我假设给出DFA 我需要DFA来解决这个问题-->A={ε,b,ab}否,原因有多种: 你的自动机bab 您的自动机不接受ab 您的自动机不是DFA,至少在某些严格的定义下是这样的 关于第一点:从q1开始,我们看到b,到q2,到a,到q3,到b,到q4,这是可以接受的。我们看到了bab并接受了它 关于第二点:从q1开始,我们看到a,但没有定义转换。自动机“崩溃”并且无法接受。因此,不接受以a开头的字符串,包括ab 关于第三点:DF
我需要DFA来解决这个问题-->A={ε,b,ab}否,原因有多种:
bab
ab
q1
开始,我们看到b
,到q2
,到a
,到q3
,到b
,到q4
,这是可以接受的。我们看到了bab并接受了它
关于第二点:从q1
开始,我们看到a
,但没有定义转换。自动机“崩溃”并且无法接受。因此,不接受以a
开头的字符串,包括ab
关于第三点:DFA通常需要显示所有状态和转换,包括死状态和永远不会返回任何接受状态的转换。您不会显示自动机中的所有转换和状态
您可以使用Myhill-Nerode定理来确定您的语言的最小DFA有多少个状态。我们注意到,空状态可以附加空字符串、b
或ab
以获得语言中的字符串<代码>a可以附加b
;而b
可以附加空字符串。不能向aa
、bb
或ba
添加任何内容来获取语言中的字符串(因此这些字符串无法区分);但是ab
可以附加空字符串(因此与b
无法区分)
这样确定的等价类对应于最小DFA中的状态。我们的等价类是:
b
a
aa这样的字符串
b
在语言中,因此第二个类将对应于接受状态。我们注意到,aa
不能附加任何内容来获取语言中的字符串,因此该类对应于DFA中的死状态。我们通过观察新符号的附加将我们置于哪个新的等价类来编写这些状态之间的转换:
a
追加到(3)中,因为将a
追加到空字符串中会得到(3)中的a
。追加b
将我们置于(2)中,因为将b
追加到空字符串将给出(2)中的b
a
追加到b
中会产生ba
,这与aa
类似,因为它不是语言中任何字符串的前缀。在b
之后,我们通过一个类似的参数得出(4)a
我们得到aa
,并且在(4)中。追加b
我们得到ab
,这与b
类似,所以我们在(2)中a
和b
都返回到(4)q1 --a--> q3
| /|
b --b--< a
| / |
vv v
q2 -a,b-> q4 \
^ a,b
\_/
我认为这个DFA对于那种语言是正确的
Thnks感谢您如此详细地解释。我现在对DFA有了更好的了解。在上面的DFA中,我可以知道你给我提供了q1(接受ε)、q2(接受b)和q4(接受ab)。所以我相信为了证明接受状态的合理性,我应该在q1、q2和q4上做双圈,对吗?@jon No,只有q1和q2。q1接受空字符串,q2同时接受
b
和ab
。进入状态q3
的唯一方法是查看一个a
,它不在语言中,因此q3
不被接受<代码>q4是一个死状态,语言中的任何字符串都无法访问。谢谢,先生。我想我需要大量的DFA练习。
q s q'
== = ==
q1 a q3
q1 b q2
q2 a q4
q2 b q4
q3 a q4
q3 b q2
q4 a q4
q4 b q4