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

NFA that does not accept strings ending "101"

不接受以“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 结束。这些是看到的最后三个符号的所有可能性,并且每个符号都根据语言定义正确地使机器处于接受或不接受状态。