【发布时间】:2015-04-18 22:10:46
【问题描述】:
我正在学习高级理论课程,主修计算机科学,并负责设计 NFA。如果我没记错的话,如果 NFA 中的任何路径可以获取字符串并进入接受状态,则 NFA 接受输入。我理解并且可以很好地创建 DFA,并且理解 NFA 需要表达在等效 DFA 中明显更大的问题。但我对 NFA 接受某些东西的具体程度感到有些困惑。
例如,我的一个作业问题如下:
给出 {w x w^R | 的 NFA x ∈ {0, 1}∗, w ∈ {0, 1}^2},
如果我正确地解释了这个,w^R 是字符串 w 的倒数,x 是任意长度的二进制字符串,w 是“00”、“01”、“10”、“11”。
所以本质上 NFA 会接受一个以 w 开头的字符串,有一些字符串 x,然后以 w 的倒数结尾。
我已经正确设计了,尽管在之前的作业中为此设计了非常大的 DFA,但我确定的练习是告诉我 NFA 在某些情况下比 DFA 更易于使用。我想出了这样的答案:
http://s1056.photobucket.com/user/pcd132/media/Untitled_zps4317347c.jpg.html
这个 NFA 接受几乎任何非空二进制字符串,那么它是否满足这个问题?我只是对“如果它以某种方式接受某些东西,它应该被接受”的概念感到困惑。或者我应该以某种方式只接受条件而不接受其他方式来构建它?如果我不理解这一点,感谢您的帮助和澄清。
【问题讨论】:
标签: complexity-theory automata dfa nfa computability