不接受以“101”结尾的字符串的 NFA

问题描述

不接受以“101”结尾的字符串的NFA是什么?

解决方法

有很多 NFA(实际上是无穷多)有效。这是一个简单的:

     /0-\      /1-+--------+--------+
     \  |      \  |        1        1
      \ V       \ V        |        |
----->[q0]--1-->[q1]--0-->[q2]--1-->q3
       ^                  |  ^      |
       |                  |  |      |
       \-------------0----/  \--0---/

这个 NFA 恰好也是一个完全确定性的 DFA。没关系。此 DFA 的工作原理是跟踪三个最近遇到的输入符号。如果最近遇到的三个是 000 或 100,则机器将最终处于状态 q0。如果最近遇到的三个是 111、011 或 001,则机器将最终处于状态 q1。如果最近遇到的三个是 010 或 110,则机器将最终处于状态 q2。如果最近遇到的三个是 101,则机器将在 q3 中结束。这些都是看到的最后三个符号的所有可能性,并且每个符号都根据语言定义正确地使机器处于接受或不接受状态。