对这个NFA的句子感到困惑

时间:2018-04-24 18:23:24

标签: nfa automaton

" 在这些情况下,与这些状态相对应的NFA存在的线程只会死亡"在我的教科书中意味着什么?

1 个答案:

答案 0 :(得分:1)

考虑具有状态A, B, C, D,输入字母{0}的非确定性有限自动机,以及由

给出的转移函数
canGoFrom(A, 0) = {B, C}
canGoFrom(B, 0) = {}
canGoFrom(C, 0) = {D}
canGoFrom(D, 0) = {}

也就是说,它看起来有点像这样:

    A
   / \
  B   C
       \
        D

所有边缘指向下方且标签为0。假设D是接受状态。

假设您现在想要检查自动机是否接受输入字符串00

您从单个线程开始,读头指向第一个0,并处于开始状态A。当您读取第一个零时,NFA可以进行两次转换,并且必须立即进行所有可能的转换,因此NFA存在的线程分为两个线程:一个现在处于状态{ {1}},另一个处于州B

现在自动机必须消耗第二个零。因为存在的第二个线程C,它很高兴地从canGoFrom(C, 0) = {D}转换到接受状态C,而不会进一步分裂。然而,存在的第一个线程D,也就是说,它无处可去。在这种情况下,NFA存在的第一个线程就会消亡。它不再对决定输入是否被接受做出任何贡献。

如果存在的所有线程都死亡,则不接受输入。

这里,存在的第二个线程达到了接受状态canGoFrom(B, 0) = {},因此输入被接受。