答案 0 :(得分:3)
不,原因有多种:
bab
ab
关于第一点:从q1
开始,我们看到b
,转到q2
,查看a
,转到q3
,查看{{ 1}},然后转到正在接受的b
。我们看到了q4
并接受了它。
关于第二点:从bab
开始,我们看到q1
但没有定义过渡。自动机“崩溃”并且无法接受。因此,不接受以a
开头的字符串,包括a
。
关于第三点:通常要求DFA显示所有状态和转换,包括永不导致任何接受状态的死状态和转换。您不会显示所有转场,也不会显示自动机中的所有状态。
您可以使用Myhill-Nerode定理来确定您的语言的最小DFA状态。我们注意到空状态可以附加空字符串ab
或b
来获取语言中的字符串; ab
可附加a
个;并且b
可以附加空字符串。没有任何内容可以附加到b
,aa
或bb
以获取语言中的字符串(因此这些字符无法区分);但是ba
可以附加空字符串(因此与ab
无法区分)。
如此确定的等价类对应于最小DFA中的状态。我们的等价类是:
b
b
a
我们注意到aa
在语言中,因此第二个类将对应于接受状态。我们注意到b
无法附加任何内容来获取语言中的字符串,因此该类对应于DFA中的死亡状态。我们通过查看新符号附加到哪个新等价类来编写这些状态之间的转换:
追加aa
会将我们放入(3),因为将a
附加到空字符串会产生{3}中的a
。附加a
会将我们放入(2),因为将b
附加到空字符串会产生b
,这是(2)
追加b
会将我们放入(4),因为a
追加到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
\_/
或以表格形式:
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
答案 1 :(得分:0)