如何证明NFA中的DFA可以具有指数级的状态?


20

所有非确定性有限自动机都可以转化为等效的确定性有限自动机。但是,确定性有限自动机仅允许每个符号从状态指向一个箭头。因此,其状态应为NFA状态集的成员。这似乎表明,DFA的状态数可以根据NFA的状态数成指数增长。但是,我想知道如何实际证明这一点。


7
这是一个合理的问题,结构并不完全明显,但仍然可能是一个作业问题。因此,了解您想知道的原因会很有帮助。

这里有一些构造但似乎应该在纸上某个地方。不知道裁判。我也想不到有这样一种构造,即NFA在其活动状态下以二进制计数,并且仅在大约跃迁之后才接受...?2n
vzn 2012年

Answers:


15

将NFA转换为另一个NFA但不对DFA执行此操作的操作是逆向操作(将所有箭头指向相反的方向,并将初始状态与接受状态互换)。由转化的自动机识别的语言是反转语言LR={un1u0u0un1L}

因此,一个想法是寻找一种具有非对称结构的语言。展望未来,应通过检查仅需要n + O 1 状态的前符号来识别该语言。向后,应该保留最后n个状态的内存,这需要A n + O 1 个状态,其中A是字母大小。nn+O(1)nAn+O(1)A

我们正在寻找一种形式为的语言,其中M n由长度为n的单词组成,S是字母表的重要组成部分,M '不提供任何进一步的约束。我们不妨选择最简单的字母A = { a b }(单例字母不会,并且在那里不会得到较小的NFA),并且M ' = A。非平凡的S意味着S = { a }。至于MnSMMnnSMA={a,b}M=ASS={a},我们要求它与 S不相关(因此,反向语言的DFA将需要保留 S的内存):取 M n = A nMnSSMn=An

因此,令。可以由具有n + 2个状态的简单DFA识别。Ln=(a|b)na(a|b)n+2

dfa

取反可得到NFA,它可识别LnR=(a|b)a(a|b)n

恩法

识别 L R n最小DFA至少具有2 n +1 状态。这是因为长度的所有单词2 Ñ + 1必须在DFA达到不同的状态。(换句话说,它们属于不同的迈希尔-Nerode等价类。)为了证明这一点,取两个不同的话ü v Ñ + 1,并让ķ是它们的不同(位置û ķv ķ)。不失一般性,我们假设ü ķLnR2n+12n+1u,vAn+1kukvk v k = b。然后 ü b ķ大号ř Ñ v b ķ大号ř Ñ b ķ为区分扩展 Ù v)。如果 u v在DFA中识别出 L R n的状态相同,那么 u b k v b k也会相同uk=avk=bubkLnRvbkLnRbkuvuvLnRubkvbk,这是不可能的,因为一个导致了接受状态,而另一个则没有。

致谢:Wikipedia中引用了此示例,但未作任何解释。本文引用了我尚未阅读的一篇文章,该文章提供了更紧密的界限:
Leiss,Ernst(1981),“布尔自动机对常规语言的简洁表示”,理论计算机科学 13(3):323–330,doi:10.1016 / S0304-3975(81)80005-9


逻辑答案:DFA中的状态用作内存(用于存储一些信息,例如开关风扇开关),因此可以使用等效NFA中的状态组合来表示DFA中单个状态中可以表示的内容。这就是NFA相较于同等DFA具有更少状态的原因。现在,如果你有在一组状态Q然后设置的所有可能组合的Q电集2 ñ,因此,如果我们反向的NFA ň状态成等价的DFA,则DFA将包括最多的 2 ñ状态。- 是否有意义?nQQ2nn2n
Grijesh Chauhan 2014年

1
@GrijeshChauhan这不是问的问题。是的,很容易看到,对于具有个州的每个NFA ,最多都有2 个n个州的DFA 。但是在这里我们要看到达到边界,即对于任何n都有一个n状态NFA,这样最小的等效DFA 至少具有2 n个状态(或与其接近,这里我证明边界2 n 1)。n2nnn 2n2n1
吉尔斯(Gilles)'所以

嗯...阅读了两次您的答案并从评论“但现在我们希望看到界限已达到”之后,我本来可以理解。谢谢。
Grijesh Chauhan 2014年

8

考虑的语言以下家族: Ln={x1,x2,,xk#xk+1:i{1,,k} with xi=xk+1}

的字母为{ 1 n }Ln{#,1,,n}

有一个具有状态的NFA 可以识别语言L n。它有n个副本。在第i个副本中,我们猜测最后一个字母是i,然后检查我们的猜测。用3个状态构造这样的副本很简单。唯一的不确定性是处于初始状态。O(n)Lnnii3

但是,由于DFA必须记住{ 1 n }的子集,因此没有DFA能够识别状态少于2 O n )的Ln2O(n){1,,n}

我很确定Sipser的书有这个例子。


Siper的书中的结构产生的DFA的状态恰好为2 ^ n。如果NFA的状态集为Q,则DFA的状态集为Pow(Q),以便模拟NFA迁移所处的所有可能的“平行”状态。标准文本中用于此目的的构造清楚地表明了指数状态的可能性,在我看来,这不是研究水平。不过可能适合作为参考要求。
洛根·梅菲尔德,2012年

8

另一个例子是所有缺少一个字母符号的单词的语言。如果字母的大小为,则NFA可以“猜测”起始状态,因此接受具有n个状态的语言。另一方面,使用Nerode定理,很容易看出该语言的最小DFA大小为2 nnn2n

此示例还显示,NFA在互补作用下可能导致指数爆炸。确实,众所周知,包含字母的所有符号的所有单词的语言所用的任何NFA(甚至无上下文语法)必须具有指数级的状态。


1
σΣ(Σσ)

ΣnO(n2)2n2n

该示例的要点是爆燃与功率机组的构造完全匹配。确实存在一个具有相同爆破效果的二进制示例,但是更加复杂。
Yuval Filmus

是的,这是一个很好的例子。
6005

1
O(nlogn)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.