如何建立具有个状态的DFA示例,而等效的NFA具有个状态。显然,DFA的状态集应包含NFA的状态集的所有子集,但我不知道如何开始。有什么建议可以使我走上正确的道路吗?
如何建立具有个状态的DFA示例,而等效的NFA具有个状态。显然,DFA的状态集应包含NFA的状态集的所有子集,但我不知道如何开始。有什么建议可以使我走上正确的道路吗?
Answers:
该标准的例子是语言过字母表的所有字大小的是不包含所有不同的字母。有一个NFA接受具有个状态(如果允许多个起始状态,则为个状态)的:首先猜测一个字母,该字母丢失,然后(通过 -move)进入具有自循环的接受状态除以外所有字母。A n L n + 1 n a ϵ A
任何DFA都需要至少个状态。使用Myhill-Nerode定理可以看出这一点。令是两个不同子集,并且单词分别包含所有字母和仅字母。不失一般性,假设,令。然后而。2 Ñ 小号1,s ^ 2甲瓦特(小号1),瓦特(š 2)s ^ 1,小号2一个∈ 小号1 ∖ 小号2瓦特= 瓦特(甲- 一个)瓦特(š 1)瓦特∉ 大号瓦特(小号2)瓦特∈ 大号
这是爱丁堡Mark V. Lawson Heriot-Watt大学的“有限自动机”一书中的练习,第68页:
令。证明语言可以被具有个状态的不确定自动机识别。证明任何能识别这种语言的确定性自动机必须至少具有个状态。这个例子表明,从非确定性自动机到相应的确定性自动机的状态数量的指数增长有时是不可避免的。
我猜你的意思是,最佳 DFA具有个状态。也许这不会让您获得个状态,但是它是。
摘自Kushilevitz和Nisan在练习12.6中提出的“通信复杂性”:
“对于某些常数[非负整数],请考虑(有限)语言。”
本书继续要求您证明可以找到使用状态的可识别的co-NFA ,并且对于DFA ,您不能做得比状态更好。
这是一个较晚的答案,但显然没有人提供最佳解决方案。取,等,其中 此NFA一个两字母的字母具有个状态,只有一个初始状态和一个最终状态,其等效最小DFA具有个状态。