这个 NFA 是否正确接受以 00 结尾的输入?

问题描述

在一次讲座中,有人说这个 NFA 接受以两个零结尾或输入=0 的输入: https://ibb.co/9Wt0j7J 。 字母是 {0,1}

但是如果输入是 001,我们会在某些路径上也以接受状态 (z2) 结束,但是在读取最后一个字符时不可能回到另一个状态,那个。这意味着,接受了错误的输入。所以,我的问题是:NFA 真的在不改变任何东西的情况下正确构建吗?如果是,为什么?如果没有其他箭头指向另一个状态,我可以假设我们进入“空(不可见)状态(错误状态,但未明确提及)”或类似的状态吗?

解决方法

是的,它是给定定义的正确 NFA。

但是如果输入是 001,我们会在某些路径上也以接受状态 (z2) 结束,但是在读取最后一个字符时不可能回到另一个状态,那个。这意味着接受了错误的输入。

如果你输入 001,它不会接受它,因为 NFA 会检查所有可能的路径并消除卡住的路径。所以你会在前两个0之后去z2,但是读到1之后就卡住了,被淘汰了。

编辑:

... NFA 接受一个字符串 w,如果有可能的话 下一个状态的选择序列,同时读取 w 的字符并从开始状态转到任何接受状态。

摘自 John E. Hopcroft、Rajeew Motwani、Jeffret D. Ullman 合着的自动机理论、语言和计算简介一书(2006 年,第 59 页)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...