我正在学习计算机科学专业的高级理论课程,并负责设计 NFA。如果我没记错的话,如果 NFA 中的任何路径可以获取字符串并进入接受状态,则 NFA 接受输入。我理解并且可以很好地创建 DFA,并且理解 NFA 需要表达在等效 DFA 中明显更大的问题。但我对 NFA 接受某些东西的具体程度感到有些困惑。
例如,我的一个作业问题如下:
为 {wxw^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 几乎接受任何非空二进制字符串,那么它是否满足这个问题?我只是对如果它以某种方式接受某些东西,它应该被接受的概念感到困惑。或者我应该以某种方式只接受条件而不接受其他方式来构建它?如果我不理解这一点,感谢您的帮助和澄清。