可判定性读书笔记 (2)

「 图灵机识别语言是否为空 」不可判定

所有证明都偷自 《计算理论导引》(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\) 是如何过滤不停机情况的:

  1. 若 \(M~accept~w\),那么 \(M_w~accept~x\) 当且仅当 \(x=w\)
  2. 若 \(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}\) 了,故而矛盾

上一篇:JavaScript的Promise对象


下一篇:写一个Promise实现