「 图灵机识别语言是否为空 」不可判定
所有证明都偷自 《计算理论导引》(Micheal Sipser)
\[E_{TM} = \{ \lang M \rang ~|~ L(M) = \empty \} \]$ E_{TM}$ 是不可判定的,证明思路还是反证,假设存在 \(R~decide~E_{TM}\),用 \(R\) 构造 \(S\) 使得 \(S~decide~A_{TM}\)
这里构造的思路关键在于消除不停机的情况,若对于 \(\lang M, w \rang\) 构造 \(S'\) 直接用 \(R\) 判定 \(M\):
\[S'(\lang M, w\rang ) = \begin{cases} M~reject~w & if~R(\lang M\rang) = accept \\ M~accept~w~or~loop & if~R(\lang M\rang) = reject \end{cases} \]这里 \(R~reject~M\) 时是无法确定 \(M(w)\) 的状态的,因而这是一种相对失败的构造
如前面所说,我们为了消除不停机的情况,构造 \(M_w\):
\[M_w(x) = \begin{cases} reject & if ~x\ne w \\ M(w) & otherwise \end{cases} \]注意对比观察 \(M_w\) 是如何过滤不停机情况的:
- 若 \(M~accept~w\),那么 \(M_w~accept~x\) 当且仅当 \(x=w\)
- 若 \(M~doesn't~accept~w\),那么 \(M_w~reject\) 所有输入
由此可以构造 \(S\):
\[S = \begin{cases} accept & if~R(\lang M_w \rang ) = reject \\ reject & if~R(\lang M_w \rang ) = accept \end{cases} \]这样 \(S\) 就判定 \(A_{TM}\) 了,故而矛盾