" 在这些情况下,与这些状态相对应的NFA存在的线程只会死亡"在我的教科书中意味着什么?
答案 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) = {}
,因此输入被接受。