确定状态时具有指数状态的NFA


10

如何建立具有个状态的DFA示例,而等效的NFA具有个状态。显然,DFA的状态集应包含NFA的状态集的所有子集,但我不知道如何开始。有什么建议可以使我走上正确的道路吗?2nn


这个问题还不清楚。通常,任何给定的常规语言都有无限多个等效的DFA,而任何给定的常规语言都有无限多个等效的NFA。如果您想要具有个状态的最小 DFA ,这甚至总是不可能的,因为不同的NFA可以识别相同的语言并具有不同数量的状态,但对应于相同的最小DFA。此外,如果您只想考虑“最小” NFA,这将变得更加有趣……2n
Patrick87

2
帕特里克(Patrick),我认为OP意味着最小DFA大于最小NFA指数级的示例。
Yuval Filmus 2012年

@ Patrick87我不是在寻找算法。我想要的只是一对机器的示例:具有个状态的DFA 和具有个状态的NFA 接受相同的语言。 n2nn
saadtaame 2012年

@saadtaame:这很简单:采用任何DFA并添加足够的状态以达到。有趣的示例是最小等效DFA具有相同状态的示例。2n
拉斐尔

1
请注意,有关DFA最小化Wikipedia文章引用了适当的示例(尽管您必须自己弄清楚小型NFA)。
拉斐尔

Answers:


18

该标准的例子是语言过字母表的所有字大小的是包含所有不同的字母。有一个NFA接受具有个状态(如果允许多个起始状态,则为个状态)的:首先猜测一个字母,该字母丢失,然后(通过 -move)进入具有自循环的接受状态除以外所有字母。A n L n + 1 n a ϵ ALAnLn+1naϵA

任何DFA都需要至少个状态。使用Myhill-Nerode定理可以看出这一点。令是两个不同子集,并且单词分别包含所有字母和仅字母。不失一般性,假设,令。然后而。2 Ñ 小号1s ^ 2瓦特小号1瓦特š 2s ^ 1小号2一个小号1小号2瓦特= 瓦特- 一个瓦特š 1瓦特大号瓦特小号2瓦特大号L2nS1,S2Aw(S1),w(S2)S1,S2aS1S2w=w(Aa)w(S1)wLw(S2)wL


10

这是爱丁堡Mark V. Lawson Heriot-Watt大学的“有限自动机”一书中的练习,第68页:

令。证明语言可以被具有个状态的不确定自动机识别。证明任何能识别这种语言的确定性自动机必须至少具有个状态。这个例子表明,从非确定性自动机到相应的确定性自动机的状态数量的指数增长有时是不可避免的。n1(0+1)1(0+1)n1n+12n


10

我猜你的意思是,最佳 DFA具有个状态。也许这不会让您获得个状态,但是它是。2n2nΩ(2n)

摘自Kushilevitz和Nisan在练习12.6中提出的“通信复杂性”:

“对于某些常数[非负整数],请考虑(有限)语言。”cLc={www{0,1}c}

本书继续要求您证明可以找到使用状态的可识别的co-NFA ,并且对于DFA ,您不能做得比状态更好。LcO(c)Ω(2c)


另外,第二部分的证明“要求”通信复杂性,因此这可能不适合您的目的。
蒂莫西·孙

感谢您的回答!您所说的联合NFA是什么意思?
saadtaame 2012年

基本上,在NFA的定义中用“拒绝”切换“接受”。也就是说,如果所有可能的路径均未导致拒绝状态,则表示您接受,否则就拒绝。
蒂莫西·孙

实际上,从Myhill-Nerode很容易遵循下界。(实际上,您可以获得类似。)但是我的共同NFA使用状态。2c(c+1)2cΘ(c2)
Yuval Filmus 2012年

在这方面,有限的语言有些无聊。另请参阅此处
拉斐尔

9

这是一个较晚的答案,但显然没有人提供最佳解决方案。取,等,其中 此NFA一个两字母的字母具有个状态,只有一个初始状态和一个最终状态,其等效最小DFA具有个状态。A={a,b}Qn={0,1,,n1}An=(Qn,A,En,{0},{0})

En={(i,a,i+1)0in1}{(n1,a,0)}{(i,b,i)1in1}{(i,b,0)1in1}}
n2n

3
非常聪明!该自动机接受的语言是,其中由所有最多包含字母词组成。W n 1 a n 1(an+aWn1b)Wn1an1
Yuval Filmus 2013年

2
@ yuval-filmus这个例子不是我的。我想提供参考,但此刻我不记得在哪里看到它。
J.-E.
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.