Language agnostic 为什么E(dfa)是一种可判定语言?

Language agnostic 为什么E(dfa)是一种可判定语言?,language-agnostic,programming-languages,dfa,turing-machines,decidable,Language Agnostic,Programming Languages,Dfa,Turing Machines,Decidable,我不明白为什么图灵机t,在未标记接受状态时接受,在标记接受状态时拒绝: E(dfa)={| A是dfa,L(A)=空集(没有符号)} E(dfa)是一种可判定语言 证明:DFA接受一些字符串iff,通过>沿着DFA的箭头移动,从开始状态到达接受状态是可能的。为了测试这种情况,我们可以设计一个>TM T,它使用与例3.23中使用的标记算法类似的标记算法 T=“输入时,其中A是DFA: 1.标记A的开始状态。 2.重复此步骤,直到没有标记新状态: 3.标记从任何状态进入的任何状态的转换 已经标记了。

我不明白为什么图灵机t,在未标记接受状态时接受,在标记接受状态时拒绝:

E(dfa)={| A是dfa,L(A)=空集(没有符号)}

E(dfa)是一种可判定语言

证明:DFA接受一些字符串iff,通过>沿着DFA的箭头移动,从开始状态到达接受状态是可能的。为了测试这种情况,我们可以设计一个>TM T,它使用与例3.23中使用的标记算法类似的标记算法

T=“输入时,其中A是DFA: 1.标记A的开始状态。 2.重复此步骤,直到没有标记新状态: 3.标记从任何状态进入的任何状态的转换 已经标记了。 4.如果未标记接受状态,则接受;否则,拒绝。“

对我来说,这似乎是倒退。有人能解释一下吗


谢谢。

我相信你的困惑是因为在不同的上下文中使用了“接受”和“拒绝”这两个词。在较高的层次上,很容易避免这种混淆,因为您可以定义图灵机T,以不引用DFA a自己进行接受和拒绝的过程

L(T)是{A | L(A)是空的}。这与您在问题中定义的E(dfa)相同,但使用L(T)更明确地表明,我们在这里处理两种不同的语言,一种语言恰好是根据另一种语言定义的

如果我们从高层次到低层次工作,我们可以说:

  • 每当L(A)为空时,L(T)接受A
  • 但是我们如何确定L(A)是否为空呢?当A拒绝所有字符串时,L(A)是空的
  • 我们如何知道字符串被拒绝?它不会以接受状态结束
我们现在也可以很容易地从低到高:

  • 如果给定给的字符串未以接受状态结束,则将拒绝该字符串
  • 如果A拒绝所有字符串,则L(A)为空
  • 如果L(A)为空,则L(T)接受A

现在你的证明更加详细了,关于T如何决定是否接受a,但我认为你的困惑更多地围绕着接受和拒绝的多种用法。从广义上讲,你可以说T接受iff A拒绝一切。

奇妙的解释;非常感谢。