为什么E(dfa)是一种可判断的语言?

时间:2014-03-07 07:32:07

标签: language-agnostic programming-languages dfa turing-machines decidable

我不明白为什么Turing Machine T,ACCEPTS在没有接受状态时被标记,并在接受状态被标记时拒绝:

  

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

     

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

     

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

     

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

这似乎是我的倒退。谁能解释一下呢?

谢谢。

1 个答案:

答案 0 :(得分:4)

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

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

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

  • L( T )只要L( A )为空,就接受A.
  • 但我们如何确定L( A )是否为空?当 A 拒绝所有字符串时,L( A )为空。
  • 我们如何知道 A 中的字符串被拒绝了?它不会以接受状态结束。

我们现在也可以很容易地从低到高工作:

  • 如果提供给 A 的字符串未以接受状态结束,则会被拒绝。
  • 如果 A 拒绝所有字符串,则L( A )为空。
  • 如果L( A )为空,则L( T )接受 A

现在你的证据更详细地说明 T 如何决定是否接受 A ,但我认为你的困惑更多地围绕着多重接受和拒绝的使用。非常广泛地说,您可以说 T 接受 A iff A 拒绝所有内容。