如果以下DFA中的最终状态和非最终状态互换了,那么新的DFA将接受字母{a,b}中的以下哪种语言?
(A)不以ab结尾的所有字符串的集合
(B)以a或ab开头的所有字符串的集合
(C)不包含子字符串ab的所有字符串的集合,
(D)由正则表达式b * aa *(ba)* b *描述的集合答案: (A)
解释:
看起来,通过交换最终状态和非最终状态而获得的DFA将是给定常规语言的补充。因此,为了证明一个字符串族被L的补码接受,我们将依次证明它被L拒绝。
(A) 。不以ab结尾的所有字符串的集合–可以通过查看最终状态上的b标记为入射边以及它们之前的标记为边来证明该语句正确。给定DFA的补码将具有前两个状态作为最终状态。第一状态没有任何b标记的边缘,在其之前具有标记的边缘。同样,第二最终状态没有任何这样的b标记的边。同样,可以证明给定DFA接受的所有字符串都以a结尾。现在,L∪complement(L)=(a + b)∗,L应该是所有以ab结尾的字符串的集合,而complement(L)应该是所有不以ab结尾的字符串的集合。 [正确的]
(B) 。以a或ab开头的所有字符串的集合–此语句不正确。为了证明我们只需要证明存在以a或ab开头的字符串,该字符串就被给定的DFA接受。给定的DFA接受String abaab,因此其补语不会接受。 [不正确]
(C) 。设置不包含子串AB的所有字符串的-为了证明这个说法不对,我们需要显示一个字符串存在不包含子串AB,且不受当前DFA接受。因此,它会被其补充所接受,这使该说法是错误的。此DFA不接受String aba。 [不正确]
(D)。正则表达式b ∗ aa ∗(ba)∗ b ∗ –字符串abaaaba描述的集合不被给定的DFA接受,因此被其com接受
此解决方案由vineet purswani提供。
这个问题的测验