【问题标题】:Why is E(dfa) a decidable language?为什么 E(dfa) 是可判定语言?
【发布时间】:2014-04-10 05:58:21
【问题描述】:
我不明白为什么图灵机 T,在没有标记接受状态时接受并在标记接受状态时拒绝:
E(dfa) = {| A 是一个 DFA 并且 L(A) = 空集(没有符号)}
E(dfa) 是一种可判定的语言。
证明:如果通过 > 沿着 DFA 的箭头移动从起始状态达到接受状态,则 DFA 接受某个字符串。为了测试这种情况,我们可以设计一个 >TM T,它使用类似于示例 3.23 中使用的标记算法。
T= "在 input 上,其中 A 是一个 DFA:
1.标记A的开始状态。
2. 重复直到没有新的状态被标记:
3. 标记任何有从任何状态进入它的转换的状态
已经标记。
4.如果没有标注accept状态,accept;否则,拒绝。”
这对我来说似乎倒退了。谁能解释一下?
谢谢。
【问题讨论】:
标签:
language-agnostic
programming-languages
dfa
turing-machines
decidable
【解决方案1】:
我相信您的困惑是由于在不同的上下文中使用了“接受”和“拒绝”这两个词。在高层次上,很容易避免这种混淆,因为您可以将图灵机 T 定义为不引用 DFA A 自己接受的过程和拒绝。
L(T) 是 { A | L(A) 为空}。这与您的问题中定义的 E(dfa) 相同,但使用 L(T) 可以更明确地表明我们在这里处理两种不同的语言,一种恰好是用术语定义的另一个。
如果我们从高层到低层工作,我们可以说:
- 只要 L(A) 为空,L(T) 就接受 A。
- 但是我们如何判断 L(A) 是否为空呢?当 A 拒绝所有字符串时,L(A) 为空。
- 我们如何知道一个字符串在 A 中被拒绝了?它不会以接受状态结束。
我们现在也可以很容易地从低到高工作:
- 如果提供给 A 的字符串未以接受状态结束,则会被拒绝。
- 如果所有字符串都被 A 拒绝,则 L(A) 为空。
- 如果 L(A) 为空,则 L(T) 接受 A。
现在你的证明更详细地说明了 T 如何决定是否接受 A,但我认为你的困惑更多地围绕着多重接受和拒绝的用法。从广义上讲,您可以说 T 接受 A 且当 A 拒绝所有内容。