L = { <M> | M is a Turing machine over {0, 1}, and <M>||<M> (not in) L(M)}
如何证明L无法识别?有什么想法吗?
我已经证明L compliment
是可识别的:
Set Turing machine to J
1. Run J on input <M>||<M>
2. TM J accepts then accept, it reject the reject.
<M>||<M> is the concatenation of the encoding of the Turing machine.
答案 0 :(得分:1)
您可以减少此问题的(对角线)接受问题。我尝试使用你自己的符号
D = { <M> | M is a Turing machine over {0, 1}, and <M> (not in) L(M)}
假设要修复机器M的编码,并考虑一个新的程序,它接受输入字符串w并接受它以便<M> in L(M)
(因此它具有一个常量行为,独立于输入字符串,并且仅依赖于<M>
)。
以前的程序可以在<M>
中以参数化和有效的方式构建,也就是说,我们有一个总可计算函数h,以便前一个程序有代码
h(<M>)
。在形式上,我在这里使用smn定理,但由于我不确定你对它有信心,所以我不想提及它。
现在问题是h(<M>) is in L
。
如果<M> in D
,那么通过构建,机器h(<M>)
不接受任何字符串,特别是不接受h(<M>)||h(<M>)
,所以h(<M>)
在L。
相反,如果是<M> not in D
,那么通过构造,机器h(<M>)
会接受任何字符串,特别是它接受h(<M>)||h(<M>)
,所以h(<M>)
不在L中。
如果我们有办法决定L,我们就有办法决定D,我们知道D不是可判定的(事实上,它是有效的,与L类似)。