本文主要是关于图灵可确定,不可确定问题和半确定问题等
本文中可确定或不可确定也翻译为可决定,不可决定,这里我统一用可确定与不可确定
预备知识
可数与不可数集合
可数集合
可数集合:一个集合 M M M称为可数的,当 M M M是空的,或者当有一个满射的函数 c : N → M c:\mathbb{N}\rightarrow M c:N→M存在
- 每一个可数集合的元素都可以被枚举出来
- 每一个有限集合都是可数的
- 对于一个可数的无限集合都存在一个双射函数 c : N → M c:\mathbb{N}\rightarrow M c:N→M
- 所有可数的无限集合和自然数集合 N \mathbb{N} N等势
可数集合举例:
- 有限字母集合 Σ \Sigma Σ所有构成的词的集合 Σ ∗ \Sigma^* Σ∗,例如: { 0 , 1 } ∗ \{0,1\}^* {0,1}∗在卡农顺序下可以枚举为:
ϵ , 0 , 1 , 00 , 01 , 10 , 11 , 000 , 001 , 010 , 011 , 100 , 101 , . . . \epsilon,0,1,00,01,10,11,000,001,010,011,100,101,... ϵ,0,1,00,01,10,11,000,001,010,011,100,101,...
- 哥德尔数Gödelnummer的集合。因为Gödelnummer的词是关于子母集合{0,1}的
- 所有图灵机的集合。因为每个图灵机都可以通过一个Gödelnummer表示
符号
对于二维字母集合 Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1}我们将在卡农顺序下的第i个词表示为 w i w_i wi
对于第i个卡农顺序下的图灵机Gödelnummer我们记为 M i M_i Mi
不可数聚合
定理:自然数集的幂集 P ( N ) \mathcal{P}(\mathbb{N}) P(N)是不可数的
证明:反证法
-
假设 P ( N ) \mathcal{P}(\mathbb{N}) P(N)是可数的
-
那么令 S 0 , S 1 , S 2 , S 3 , . . . S_0,S_1,S_2,S_3,... S0,S1,S2,S3,...为一个 P ( N ) \mathcal{P}(\mathbb{N}) P(N)的枚举
-
我们定义一个二维无限的邻接矩阵 ( A i , j ) i , j ∈ N (A_{i,j})_{i,j\in \mathbb{N}} (Ai,j)i,j∈N
A i , j = { 1 如 果 j ∈ S i 0 其 他 A_{i,j}= \begin{cases} 1& \quad 如果j\in S_i\\ 0& \quad 其他 \end{cases} Ai,j={10如果j∈Si其他
上述两行分别定义对角线集合 S d i a g S_{diag} Sdiag和其补集 S ˉ d i a g \bar S_{diag} Sˉdiag
注:对角线集合 S d i a g S_{diag} Sdiag和其补集 S ˉ d i a g \bar S_{diag} Sˉdiag都是自然数集合的子集,因此在 P ( N ) \mathcal{P}(\mathbb{N}) P(N)存在一个元素 S k , k ∈ N S_k,k\in\mathbb{N} Sk,k∈N使得 S ˉ d i a g = S k \bar S_{diag} = S_k Sˉdiag=Sk
现在有两种情况,都可以导致矛盾:
第
一
种
情
况
:
A
k
,
k
=
1
⇒
D
e
f
.
S
ˉ
d
i
a
g
k
∉
S
ˉ
d
i
a
g
⇒
k
∉
S
k
⇒
D
e
f
.
A
A
k
,
k
=
0
第一种情况: A_{k,k} = 1\overset{Def. \bar S_{diag}}\Rightarrow k\notin \bar S_{diag} \Rightarrow k\notin S_k \overset{Def. A}\Rightarrow A_{k,k}=0
第一种情况:Ak,k=1⇒Def.Sˉdiagk∈/Sˉdiag⇒k∈/Sk⇒Def.AAk,k=0
第
二
种
情
况
:
A
k
,
k
=
0
⇒
D
e
f
.
S
ˉ
d
i
a
g
k
∈
S
ˉ
d
i
a
g
⇒
k
∈
S
k
⇒
D
e
f
.
A
A
k
,
k
=
1
第二种情况: A_{k,k} = 0\overset{Def. \bar S_{diag}}\Rightarrow k\in \bar S_{diag} \Rightarrow k\in S_k \overset{Def. A}\Rightarrow A_{k,k}=1
第二种情况:Ak,k=0⇒Def.Sˉdiagk∈Sˉdiag⇒k∈Sk⇒Def.AAk,k=1
所以不存在 P ( N ) \mathcal{P}(\mathbb{N}) P(N)的枚举,因此不可数
不可确定问题
对角线语言
定义: D = { w ∈ { 0 , 1 } ∗ ∣ w = w i 且 M i 不 接 受 w } D=\{w\in\{0,1\}^*|w=w_i且M_i不接受w\} D={w∈{0,1}∗∣w=wi且Mi不接受w}
换句话说:第i个词 w i w_i wi(卡农顺序下对于 { 0 , 1 } ∗ \{0,1\}^* {0,1}∗)在对角线语言D中,当且仅当第i个图灵机 M i M_i Mi(在卡农顺序下的Gödelnummer)不接受这个词 w i w_i wi。
注:这里图灵机 M i M_i Mi不接受 w w w有两种情况:1.图灵机 M i M_i Mi拒绝了 w w w;2.图灵机 M i M_i Mi对于输入 w w w不停
定理:对角线语言 D D D是不可确定的
证明:反证法
假设对角线语言D是可确定的,则存在一个 M j M_j Mj,可以确定D
对角线语言补集的不可确定性
相似的,对角线补集的定义为 D ˉ = { w ∈ { 0 , 1 } ∗ ∣ w = w i 且 M i 接 受 w } \bar D=\{w\in\{0,1\}^*|w=w_i且M_i接受w\} Dˉ={w∈{0,1}∗∣w=wi且Mi接受w}
定理:对角线语言补集 D ˉ \bar D Dˉ是不可确定的
证明:反证法
假设 D ˉ \bar D Dˉ是可确定的,那么存在一个图灵机 M D ˉ M_{\bar D} MDˉ,确定 D ˉ \bar D Dˉ。可以用图灵机 M D ˉ M_{\bar D} MDˉ构造出可确定对角线语言 D D D的图灵机 M D M_D MD,造成矛盾。
如下构造:
子程序技术
上面的这个证明过程就用到了子程序技术
其具体方法为:
已经有一个被证明是不可确定的语言L’,要求证一个新的语言L不可确定,只要构造运用一个子程序图灵机 M L M_L ML(其课确定语言L)的图灵机也可以确定语言L’
观察:
当一个语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗不可确定时,那么他的补集也不可确定
同样的当一个语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗可确定时,那么他的补集也可确定
停机问题
定义: H = { < M > w ∣ M 在 输 入 为 w 的 时 候 能 停 } H = \{<M>w|M在输入为w的时候能停\} H={<M>w∣M在输入为w的时候能停}
注:停机问题是所有图灵机Gödelnummer < M > <M> <M>加上能使他停的词 w w w的集合
定理:停机问题H是不可确定的
证明:子程序
- 1号子程序根据输入w在卡农顺序下的下标i(也就是找到 w i = w w_i = w wi=w),然后根据下标i得到 M i M_i Mi的Gödelnummer
- 将 < M i > w i <M_i>w_i <Mi>wi作为输入进入2号子程序 M H M_H MH,如果 M i M_i Mi在w_i处不停机则拒绝,如果停机则接受进入3号子程序。(因为 M H M_H MH接受 < M i > w i <M_i>w_i <Mi>wi只是说明 M i M_i Mi在输入 w i w_i wi处停了,接受或拒绝未知,而对于对角线语言补集是只要求能被 M i M_i Mi接受的语言)
- 3号子程序通用图灵机模拟 M i M_i Mi对于输入 w i w_i wi的运行过程。(因为 M H M_H MH接受 < M i > w i <M_i>w_i <Mi>wi,所以 M i M_i Mi对于输入 w i w_i wi会停,当 M i M_i Mi接受 w i w_i wi时,通用图灵机 U U U也会接受,反过来也一样)
正确性证明:
需要证明:
- w ∈ D ˉ ⇒ M D ˉ 接 受 w w \in \bar D \Rightarrow M_{\bar D} 接受w w∈Dˉ⇒MDˉ接受w
-
w
∉
D
ˉ
⇒
M
D
ˉ
拒
绝
w
w \notin \bar D \Rightarrow M_{\bar D} 拒绝w
w∈/Dˉ⇒MDˉ拒绝w
ϵ \epsilon ϵ-停机问题
定义: H ϵ = { < M > w ∣ M 在 输 入 为 ϵ 的 时 候 能 停 } H_\epsilon = \{<M>w|M在输入为\epsilon的时候能停\} Hϵ={<M>w∣M在输入为ϵ的时候能停}
定理: ϵ \epsilon ϵ-停机问题 H ϵ H_\epsilon Hϵ是不可确定的
证明:子程序技术
-
首先判断输入是否是以正确的Gödelnummer开始的,如果不是,则直接拒绝
-
如果输入格式正确,则用该输入构造一个新的图灵机Gödelnummer < M w ∗ > <M^*_w> <Mw∗>,该图灵机有以下特征:
1)如果 M w ∗ M^*_w Mw∗含有输入 ϵ \epsilon ϵ,那么在运行时,它先将词w写在带子上,之后模拟图灵机M在输入为w的行为(这里是使得w在M上停等价于下面 M ϵ M_\epsilon Mϵ接受 M w ∗ M^*_w Mw∗,反之w在M上不停就不接受)
2)如果输入不是 ϵ \epsilon ϵ,那么就无所谓 M w ∗ M^*_w Mw∗的行为(因为证明里不需要)。我们可以设定, M w ∗ M^*_w Mw∗会进入无限循环,也就是不停
-
最后将Gödelnummer < M w ∗ > <M^*_w> <Mw∗>作为输入进入图灵机 M ϵ M_\epsilon Mϵ,然后整个 M H M_H MH输出接受,当且仅当 M ϵ M_\epsilon Mϵ接受
正确性证明:
首先如果输入不符合 < M > w <M>w <M>w这个形式的, M H M_H MH直接拒绝,下面,当输入符合 < M > w <M>w <M>w形式,则需要证明:
< M > w ∈ H ⇒ M H 接 受 < M > w <M>w\in H \quad \Rightarrow \quad M_H 接受<M>w <M>w∈H⇒MH接受<M>w
< M > w ∉ H ⇒ M H 拒 绝 < M > w <M>w\notin H \quad \Rightarrow \quad M_H 拒绝<M>w <M>w∈/H⇒MH拒绝<M>w
莱斯定理
由图灵机计算的偏分方程具有以下形式:
f M : { 0 , 1 } ∗ → { 0 , 1 } ∗ ∪ { ⊥ } f_M:\{0,1\}^*\rightarrow \{0,1\}^*\cup\{\bot\} fM:{0,1}∗→{0,1}∗∪{⊥}
对于确定问题有以下形式:
f M : { 0 , 1 } ∗ → { 0 , 1 , ⊥ } f_M:\{0,1\}^*\rightarrow \{0,1,\bot\} fM:{0,1}∗→{0,1,⊥}
其中0表示拒绝,1表示接受, ⊥ \bot ⊥表示不停
定理内容:
令 R \mathcal{R} R是由图灵机计算的所有偏分方程的集合。
令 S \mathcal{S} S是 R \mathcal{R} R的一个子集,且有 ∅ ⊂ S ⊂ R , S ≠ ∅ , S ≠ R \varnothing\subset \mathcal{S}\subset \mathcal{R},\mathcal{S}\ne\varnothing,\mathcal{S}\ne\mathcal{R} ∅⊂S⊂R,S=∅,S=R
则语言 L ( S ) = { < M > ∣ M 计 算 一 个 来 自 于 S 的 函 数 } L(\mathcal{S}) =\{<M>|\ M 计算一个来自于\mathcal{S}的函数\} L(S)={<M>∣ M计算一个来自于S的函数}是不可确定的
注:莱斯定理只针对于计算函数的图灵机哥德尔编码,不涉及到图灵机的运行时间,运行内容
证明: M L ( S ) M_{L(\mathcal{S})} ML(S)作为 M ϵ M_\epsilon Mϵ的子程序
令u为一般的未定义的函数 u ( w ) ≡ ⊥ u(w)\equiv \bot u(w)≡⊥
u ∉ S u\notin \mathcal{S} u∈/S
令f是 S \mathcal{S} S里的一个函数
令N是一个计算f的图灵机
-
如果输入不是由正确的Gödelnummer组成, M ϵ M_\epsilon Mϵ则拒绝这个输入
-
否则, M ϵ M_\epsilon Mϵ则从输入 < M > <M> <M>中计算图灵机 M ∗ M^* M∗的Gödelnummer:
输入x在 M ∗ M^* M∗上的行为如下:
1)首先 M ∗ M^* M∗在一个事先设计好的路径(Spur)上模拟图灵机M在输入为 ϵ \epsilon ϵ时的行为(如果M不停机,那么 M ∗ M^* M∗就也不停机,那也就是计算的是 u ( w ) ≡ ⊥ u(w)\equiv \bot u(w)≡⊥,那么在之后 M L ( S ) M_{L(\mathcal{S})} ML(S)肯定会输出拒绝)
2)之后 M ∗ M^* M∗模拟图灵机N在输入为x的行为。一旦N停下来,那么 M ∗ M^* M∗也就停下来,并且将N的输出作为 M ∗ M^* M∗的输出。(这里指当输入 ϵ \epsilon ϵ在M上停机了,那么运行N,输入为x,输出自然就是f(x))
-
最后将 < M ∗ > <M^*> <M∗>作为输入进入图灵机 M L ( S ) M_{L(\mathcal{S})} ML(S)中。我们接受当且仅当 M L ( S ) M_{L(\mathcal{S})} ML(S)接受。
正确性证明:
封闭性
当语言L是可确定的,那么它的补集 Σ ∗ − L \Sigma^*-L Σ∗−L也是可确定的
当两个语言 L 1 L_1 L1和 L 2 L_2 L2是可确定的,则
- L 1 ∩ L 2 L_1\cap L_2 L1∩L2可确定
- L 1 ∪ L 2 L1\cup L_2 L1∪L2可确定
可确定的语言集合在交并补下面是封闭的
递归可枚举性与归约
一个语言L被一个图灵机M所确定,当
- 对于任何一个输入M都会停
- M只接受来自于L里的词
一个语言L会被一个图灵机所识别,当
- M接受所有来自于L里的词
- M不接受任何一个不是L里的词
当存在一个图灵机,其可以识别L,那么则称这个语言L是半可确定的(semi-entscheidbar)
递归可枚举性
一个枚举器对于一个语言 L ⊆ Σ ∗ L\subseteq\Sigma^* L⊆Σ∗是一个图灵机的变种,其连接着一个打印机
这个打印机是一个额外的输出带,读取头只能在这个带上向右移动且只能进行写操作。
- 枚举器会由空的工作带开始,并且随着时间会输出来自于L里的所有单词到打印机上
- 输出的词会被一个不来自于 Σ \Sigma Σ分隔符分开
- 枚举器只打印来自于L里的单词
定义:当一个语言L有一个枚举器时,则称L是递归可枚举的
定理:一个语言L是递归可枚举的,当且仅当L是半可确定的
证明:
递归可枚举 → \rightarrow →半可确定
假设L是递归可枚举的且A为其枚举器。如下方式构造一个图灵机M,使其识别语言L:
-
在一条带上模拟这个枚举器A,并把结果输出到带子上(就是接管了打印机的功能)
-
每当有一个单词在带子上打印出来之后,图灵机M就比较这个单词和w,并且当相等时u,输出接受。
正确性:
-
当 w ∈ L w\in L w∈L,则在某一时刻, w w w必然会被打印出来,那么这时候M会输出接受
-
当 w ∉ L w\notin L w∈/L,则w永远都不会被打印出来,M就会不停也就不会输出接受
半可确定 → \rightarrow →递归可枚举
假设L是半可确定的且被图灵机M所识别。如下方式构造一个枚举器A给语言L:
注:因为目的是要将能被图灵机M接受的词输出打印出来,但是对于某些词,M可能无限不停机。因此我们模拟是只运行固定步骤,然后采用多轮次进行模拟,每轮多模拟一个词,这样就解决了无限多个词语无限多步的冲突
在第k轮里(k=1,2,3,…)
-
枚举器A用图灵机M模拟 w 1 , w 2 , . . . , w k w_1,w_2,...,w_k w1,w2,...,wk中每个词,并且每个词只运行k步
-
在模拟过程中每当M接受了某个词,那么枚举器A就会把这个词打印出来
正确性:
很明显,构造出来的这个枚举器只接受来自于L的词。那么需要证明该枚举器是否能打印出所有来自L里的单词。
- 令 w i w_i wi是语言L中的一个单词。那么 w i w_i wi会被图灵机M在有限步骤 t i t_i ti时接受
- 所以,k轮过后( k ≥ m a x { i , t i } k\ge \mathbb{max}\{i,t_i\} k≥max{i,ti}), w i w_i wi在每一轮都会被打印出来
封闭性
当两个语言 L 1 L_1 L1和 L 2 L_2 L2是递归可枚举的,则
- L 1 ∩ L 2 L_1\cap L_2 L1∩L2递归可枚举
- L 1 ∪ L 2 L1\cup L_2 L1∪L2递归可枚举
引理:
当一个语言 L ⊆ Σ ∗ L\subseteq\Sigma^* L⊆Σ∗和其补集 L ˉ : = Σ ∗ − L \bar L:=\Sigma^*-L Lˉ:=Σ∗−L都是递归可枚举时,则 L L L是可确定的
用子程序技术即可证明这个引理
H ˉ \bar H Hˉ和 H ˉ ϵ \bar H_\epsilon Hˉϵ不是递归可枚举的
证:因为停机问题H是递归可枚举的,当 H ˉ \bar H Hˉ也是递归可枚举的,则根据上述引理可推出停机问题是可确定的。然而事实是停机问题不可确定,所以 H ˉ \bar H Hˉ不是递归可枚举的。
同理 H ˉ ϵ \bar H_\epsilon Hˉϵ不是递归可枚举的。
可计算性语言分类
观察:每一个语言L都属于以下四个类别里中的一个
- L可确定的(L和 L ˉ \bar L Lˉ都是递归可枚举的)
- L L L是递归可枚举的,而 L ˉ \bar L Lˉ不是
- L ˉ \bar L Lˉ是递归可枚举的,而 L L L不是
- L L L和 L ˉ \bar L Lˉ都不是递归可枚举的
归约
定义:令 L 1 L_1 L1和 L 2 L_2 L2是两个关于字母集 Σ \Sigma Σ的语言。我们称 L 1 L_1 L1在 L 2 L_2 L2上可归约的( L 1 ≤ L 2 L_1\le L_2 L1≤L2),当存在一个可计算的函数 f : Σ ∗ → Σ ∗ f: \Sigma^*\rightarrow \Sigma^* f:Σ∗→Σ∗,使得对于所有的 x ∈ Σ ∗ x\in \Sigma^* x∈Σ∗满足: x ∈ L 1 ⇔ f ( x ) ∈ L 2 x\in L_1 \Leftrightarrow f(x)\in L_2 x∈L1⇔f(x)∈L2.
即 x ∈ L 1 ⇒ f ( x ) ∈ L 2 ; x ∉ L 1 ⇒ f ( x ) ∉ L 2 x \in L_1 \Rightarrow f(x)\in L_2;x\notin L_1 \Rightarrow f(x)\notin L_2 x∈L1⇒f(x)∈L2;x∈/L1⇒f(x)∈/L2
定理:如果两个语言 L 1 ≤ L 2 L_1\le L_2 L1≤L2
-
L 2 L_2 L2可确定的 ⇒ \quad \Rightarrow \quad ⇒$ L_1$可确定的
-
L 2 L_2 L2递归可枚举的 ⇒ \quad \Rightarrow \quad ⇒ L 1 L_1 L1递归可枚举的
-
L 1 L_1 L1不可确定的 ⇒ \quad \Rightarrow \quad ⇒$ L_2$不可确定的
-
L 1 L_1 L1不是递归可枚举的 ⇒ \quad \Rightarrow \quad ⇒ L 2 L_2 L2不是递归可枚举的
使用子程序技术即可证明:
完全停机问题
定义: H t o t = { < M > ∣ M 在 每 一 个 输 入 都 会 停 } H_{tot} = \{<M>|M在每一个输入都会停\} Htot={<M>∣M在每一个输入都会停}
就是 H t o t H_{tot} Htot里的图灵机不存在对于某个输入会不停
定理: H ˉ t o t \bar H_{tot} Hˉtot和 H t o t H_{tot} Htot都不是递归可枚举的
证明:
已知 H ˉ ϵ \bar H_\epsilon Hˉϵ不是递归可枚举的,那么需要证:
- H ˉ ϵ ≤ H ˉ t o t \bar H_\epsilon \le \bar H_{tot} Hˉϵ≤Hˉtot
- H ˉ ϵ ≤ H t o t \bar H_\epsilon \le H_{tot} Hˉϵ≤Htot
H ˉ ϵ ≤ H ˉ t o t \bar H_\epsilon \le \bar H_{tot} Hˉϵ≤Hˉtot
构造一个可计算的函数 f f f,使得对于 x ∈ Σ ∗ x\in \Sigma^* x∈Σ∗有 x ∈ H ˉ ϵ → f ( x ) ∈ H ˉ t o t ; x ∉ H ˉ ϵ → f ( x ) ∉ H ˉ t o t \quad x\in \bar H_\epsilon \rightarrow f(x)\in \bar H_{tot};\quad x\notin \bar H_\epsilon \rightarrow f(x)\notin \bar H_{tot} x∈Hˉϵ→f(x)∈Hˉtot;x∈/Hˉϵ→f(x)∈/Hˉtot,构造方式如下:
令 w w w是 H ˉ ϵ \bar H_\epsilon Hˉϵ的一个输入
-
当 w w w不是哥德尔数时,直接令 f ( w ) = w f(w) = w f(w)=w
-
当 w = < M > w=<M> w=<M>对于一个图灵机M,则令 f ( w ) : = < M ϵ ∗ > f(w):=<M_\epsilon^*> f(w):=<Mϵ∗>是图灵机 M ϵ ∗ M_\epsilon^* Mϵ∗的哥德尔数,并且该图灵机有以下行为:
M ϵ ∗ M_\epsilon^* Mϵ∗忽略它的输入直接模拟M在输入为 ϵ \epsilon ϵ时的行为
正确性证明:
-
w ∈ H ˉ ϵ ⇒ f ( w ) ∈ H ˉ t o t w\in \bar H_\epsilon \Rightarrow f(w)\in \bar H_{tot} w∈Hˉϵ⇒f(w)∈Hˉtot
-
w ∉ H ˉ ϵ ⇒ f ( w ) ∉ H ˉ t o t w\notin \bar H_\epsilon \Rightarrow f(w)\notin \bar H_{tot} w∈/Hˉϵ⇒f(w)∈/Hˉtot
首先当w不是哥德尔数时,满足 w ∈ H ˉ ϵ w\in \bar H_\epsilon w∈Hˉϵ和 f ( w ) ∈ H ˉ t o t f(w)\in \bar H_{tot} f(w)∈Hˉtot
当 w = < M > w=<M> w=<M>是一个图灵机的哥德尔数时,
H ˉ ϵ ≤ H t o t \bar H_\epsilon \le H_{tot} Hˉϵ≤Htot
构造一个可计算的函数 f f f,使得对于 x ∈ Σ ∗ x\in \Sigma^* x∈Σ∗有 x ∈ H ˉ ϵ → f ( x ) ∈ H t o t ; x ∉ H ˉ ϵ → f ( x ) ∉ H t o t \quad x\in \bar H_\epsilon \rightarrow f(x)\in H_{tot};\quad x\notin \bar H_\epsilon \rightarrow f(x)\notin H_{tot} x∈Hˉϵ→f(x)∈Htot;x∈/Hˉϵ→f(x)∈/Htot,构造方式如下:
令 w w w是 H ˉ ϵ \bar H_\epsilon Hˉϵ的一个输入。令 w ′ w' w′是来自于 H t o t H_{tot} Htot的任意一个输入。
-
当w不是一个有效的哥德尔数时,令 f ( w ) = w ′ f(w) = w' f(w)=w′
-
当 w = < M > w=<M> w=<M>是一个有效的哥德尔数时,则令 f ( w ) : = < M ′ > f(w):=<M'> f(w):=<M′>,图灵机 M ′ M' M′在长度为 l l l的输入x时如下运行:
首先 M ′ M' M′模拟在 l l l步骤内模拟输入 ϵ \epsilon ϵ在M上面的行为。当M在这 l l l步内停下来,那么 M ′ M' M′就进入无线循环;否则M没有在这 l l l步内停下来则 M ′ M' M′停止
正确性证明:
-
w ∈ H ˉ ϵ ⇒ f ( w ) ∈ H t o t w\in \bar H_\epsilon \Rightarrow f(w)\in H_{tot} w∈Hˉϵ⇒f(w)∈Htot
-
w ∉ H ˉ ϵ ⇒ f ( w ) ∉ H t o t w\notin \bar H_\epsilon \Rightarrow f(w)\notin H_{tot} w∈/Hˉϵ⇒f(w)∈/Htot
首先当w不是哥德尔数时,满足 w ∈ H ˉ ϵ w\in \bar H_\epsilon w∈Hˉϵ和 f ( w ) = w ′ ∈ H t o t f(w) = w'\in H_{tot} f(w)=w′∈Htot
当 w = < M > w=<M> w=<M>是一个图灵机的哥德尔数时,