Java教程

可判定性读书笔记 (2)

本文主要是介绍可判定性读书笔记 (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}\) 了,故而矛盾

这篇关于可判定性读书笔记 (2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!