通用图灵机
对一个多带图灵机进行编码,假设我们对图灵机的编码满足:
- 每一段字符串 α ∈ { 0 , 1 } ∗ \alpha \in\{0,1\}^* α∈{0,1}∗表示某一图灵机(对于无效的编码 α \alpha α,图灵机总是拒绝)
- 每个图灵机被无限长的字符串(每个字符串可含有任意多个无效状态)
T
M
:
M
=
(
Q
,
∑
,
Γ
,
δ
,
q
0
,
q
a
c
c
e
p
t
,
q
r
e
j
e
c
t
)
∑
=
{
0
,
1
}
δ
:
Q
×
Γ
k
→
Q
×
Γ
k
×
{
L
,
R
,
S
}
k
a
→
表示当前状态的
k
带标志组成的列向量,
b
→
表示将要写的
k
带标志组成的列向量
D
→
表示
k
个指针的移动方向
a
→
,
b
→
∈
Γ
k
;
D
→
∈
{
L
,
R
,
S
}
k
δ
:
{
(
q
1
,
a
→
,
q
2
,
b
→
,
D
→
)
}
TM:M=(Q,\sum,\Gamma,\delta,q_0,q_{accept},q_{reject})\\ \sum=\{0,1\}\\ \delta:Q\times \Gamma ^k\rightarrow Q\times \Gamma^k\times\{L,R,S\}^k\\ \overrightarrow{a}表示当前状态的k带标志组成的列向量,\overrightarrow{b}表示将要写的k带标志组成的列向量\\ \overrightarrow{D}表示k个指针的移动方向\\ \overrightarrow{a},\overrightarrow{b}\in\Gamma^k;\overrightarrow{D}\in \{L,R,S\}^k \\ \delta:\{(q_1,\overrightarrow{a},q_2,\overrightarrow{b},\overrightarrow{D})\}
TM:M=(Q,∑,Γ,δ,q0,qaccept,qreject)∑={0,1}δ:Q×Γk→Q×Γk×{L,R,S}ka表示当前状态的k带标志组成的列向量,b表示将要写的k带标志组成的列向量D表示k个指针的移动方向a,b∈Γk;D∈{L,R,S}kδ:{(q1,a,q2,b,D)}
编码图灵机
M
M
M用时
O
(
1
)
O(1)
O(1)
定理1 通用图灵机停机
存在一个多带图灵机 u u u,对所有 x ∈ { 0 , 1 } ∗ , u ( x , α ) = M α ( x ) , x 时输入 , α 是程序 x\in \{0,1\}^*,u(x,\alpha)=M_\alpha (x),x时输入,\alpha是程序 x∈{0,1}∗,u(x,α)=Mα(x),x时输入,α是程序,并且,如果 M α M_\alpha Mα在输入 x x x时 T T T步内停机,那么 u ( x , α ) u(x,\alpha) u(x,α)会在 O M ( T log T ) O_M(T\log T) OM(TlogT)步内停机
更弱的结论: O M ( T 2 ) O_M(T^2) OM(T2)步内停机
P r o o f w e a k e r v i s i o n Proof\ weaker\ vision Proof weaker vision
根据引理3.9,我们知道一个多带图灵机可在 O ( T 2 ) O(T^2) O(T2)内转化为一个单带图灵机。
UTM 有三个带子,第一个模拟M的工作带,第二个编码程序,第三个储存M现在的状态
对于单带图灵机 M M M的每一步,UTM u 将
- 读取 M M M工作带上的标志 O ( 1 ) O(1) O(1)
- 读取 M M M现在的状态 q q q O ( l o g 2 Q ) = O M ( 1 ) O(log_2 Q)=O_M(1) O(log2Q)=OM(1)
- 扫描程序带(M的描述),来找到转移函数 δ 1 ( q 1 , a ) \delta_1(q_1,a) δ1(q1,a) O M ( 1 ) O_M(1) OM(1)
- 更新M工作带上的标识,如果需要的话,移动指针 O ( 1 ) O(1) O(1)
- 更新 M M M现在的状态为 q 2 q_2 q2(原为 q 1 q_1 q1) O M ( 1 ) O_M(1) OM(1)
每一步都需要 O M ( 1 ) O_M(1) OM(1)步,即通用图灵机和单带图灵机的差别是常数级的,而单带图灵机模拟多带图灵机是 O ( T 2 ) O(T^2) O(T2)的,则在 O M ( T 2 ) O_M(T^2) OM(T2)内停机
O ( 1 ) 与 O m ( 1 ) O(1)与O_m(1) O(1)与Om(1):
- O ( 1 ) : ∃ c , ∃ N , ∀ n ≥ N , ∣ f ( n ) ∣ ≤ c O(1):\exists c,\exist N,\forall n\ge N,|f(n)|\le c O(1):∃c,∃N,∀n≥N,∣f(n)∣≤c
- O M ( 1 ) : ∀ M , ∃ c , ∃ N , ∀ n ≥ N , ∣ f ( n ) ∣ ≤ c O_M(1):\forall M,\exists c,\exist N,\forall n\ge N,|f(n)|\le c OM(1):∀M,∃c,∃N,∀n≥N,∣f(n)∣≤c,即这里的c与M有关, c = c ( M ) c=c(M) c=c(M)
P r o o f 4.1 Proof\ 4.1 Proof 4.1
假设 k k k时 M α M_\alpha Mα工作带的数目, Γ \Gamma Γ时字母表。我们假定 u u u使用字母表 Γ k \Gamma^k Γk, u u u移动纸带,而不是移动指针。然而,模拟需要 O ( T 2 ) O(T^2) O(T2)的时间(移动纸带就需要 O ( T ) O(T) O(T)的时间)
因此,我们认为 u u u的平行带为双向无限的(双向纸带可被单带模拟,相差常数级),。
接着,我们将
u
u
u的每一条平行的纸带划分为多个区域,标记为:
R
0
,
L
0
,
R
1
,
L
1
,
⋯
,
R
⌈
l
o
g
2
T
⌉
,
L
⌈
l
o
g
2
T
⌉
∣
R
i
∣
=
∣
L
i
∣
=
2
i
+
1
R_0,L_0,R_1,L_1,\cdots,R_{\lceil log_2T\rceil},L_{\lceil log_2T\rceil}\\ |R_i|=|L_i|=2^{i+1}
R0,L0,R1,L1,⋯,R⌈log2T⌉,L⌈log2T⌉∣Ri∣=∣Li∣=2i+1
我们约定:
-
每个区域只有三个状态:空的,满的或者时半满的
-
L i ∪ R i L_i\cup R_i Li∪Ri中的缓冲符号的数目只能为 2 i + 1 2^{i+1} 2i+1,也就是说
R i 为空, L i 为满 R i 为满, L i 为空 R i 为半满, L i 为半满 R_i 为空,L_i为满\\ R_i为满,L_i为空\\ R_i为半满,L_i为半满\\ Ri为空,Li为满Ri为满,Li为空Ri为半满,Li为半满
只有这三种情况。
纸带左右移是对称的,考虑左移:
- 找到最小的 i 0 i_0 i0,使得 R i 0 R_{i_0} Ri0不为空,(等价的,找到最小的 i 0 i_0 i0,使得 L i 0 L_{i_0} Li0不为满)
- 将 R i 0 R_{i_0} Ri0最左边的不为缓冲符号的符号移动到位置0,然后将 R i 0 R_{i_0} Ri0中剩余的 2 i 0 − 1 2^{i_0}-1 2i0−1个非缓冲符号移动到 R 0 , R 1 , ⋯ , R i 0 − 1 R_0,R_1,\cdots,R_{i_0-1} R0,R1,⋯,Ri0−1,刚好能填一半( ∑ k = 0 i 0 − 1 2 k + 1 = 2 1 + 2 2 + ⋯ + 2 i 0 = 2 i 0 + 1 − 2 \sum^{i_0-1}_{k=0}2^{k+1}=2^1+2^2+\cdots+2^{i_0}=2^{i_0+1}-2 ∑k=0i0−12k+1=21+22+⋯+2i0=2i0+1−2)
- 左边是对称的,令 j j j是从 i 0 − 1 i_0-1 i0−1到0,移动一半的 ∣ L 0 ∣ + ∣ L 1 ∣ + ⋯ + ∣ L i − 1 ∣ − 1 |L_0|+|L_1|+\cdots+|L_{i-1}|-1 ∣L0∣+∣L1∣+⋯+∣Li−1∣−1个非缓冲符号到 L i 0 L_{i_0} Li0,原0位置占据了 L 0 L_0 L0的一半。我们可以计算总共移动了 1 2 ( 2 1 + 2 2 + ⋯ + 2 i 0 ) − 1 = 2 i 0 − 2 \frac12 (2^1+2^2+\cdots+2^{i_0})-1=2^{i_0}-2 21(21+22+⋯+2i0)−1=2i0−2个元素,刚好占一半
- 移动完成后,
R
0
,
L
0
,
R
1
,
L
1
,
⋯
,
R
i
0
−
1
,
L
i
0
−
1
R_0,L_0,R_1,L_1,\cdots,R_{i_0-1},L_{i_0-1}
R0,L0,R1,L1,⋯,Ri0−1,Li0−1是半满的,
R
i
0
R_{i_0}
Ri0要么空要么半满,
L
i
0
L_{i_0}
Li0要么满要么半满
当我们以指标
i
0
i_0
i0完成一次操作后,那么接下来的
2
i
0
−
1
2^{i_0}-1
2i0−1次的移动指标不会超过
i
0
i_0
i0(因为
i
0
i_0
i0以内都是半满的,所以需要移动这么多次才会再遇到
i
0
i_0
i0操作),因此,最多有
1
2
i
0
\frac{1}{2^{i_0}}
2i01次操作会以指标
i
0
i_0
i0进行移动。
i
n
d
e
x
(
i
)
⟺
第
i
次操作的指标
k
∑
i
=
1
T
O
(
2
i
n
d
e
x
(
i
)
)
{
1
≤
i
≤
T
:
i
n
d
e
x
(
i
)
=
j
}
=
k
∑
j
=
0
l
o
g
2
T
O
(
2
j
)
⋅
T
2
j
=
k
∑
j
=
0
l
o
g
2
T
O
(
T
)
=
k
O
(
T
l
o
g
2
T
)
=
O
M
(
T
l
o
g
2
T
)
index(i) \Longleftrightarrow 第i次操作的指标\\ k\sum^{T}_{i=1} O(2^{index(i)})\ \{1\le i\le T:index(i)=j\}\\ =k\sum^{log_2\ T}_{j=0} O(2^{j})\cdot \frac{T}{2^j}\\ =k\sum^{log_2T}_{j=0}O(T)=kO(Tlog_2T)=O_M(Tlog_2T)
index(i)⟺第i次操作的指标ki=1∑TO(2index(i)) {1≤i≤T:index(i)=j}=kj=0∑log2 TO(2j)⋅2jT=kj=0∑log2TO(T)=kO(Tlog2T)=OM(Tlog2T)
引理2 几乎所有语言不可判定
P r o o f Proof Proof
l a n g u a g e s = 2 ℵ 0 = ℵ 1 languages = 2^{\aleph_0}=\aleph_1 languages=2ℵ0=ℵ1
而 { L ⊆ { 0 , 1 } ∗ } , T M s = ℵ 0 \{L\subseteq \{0,1\}^*\},TMs=\aleph_0 {L⊆{0,1}∗},TMs=ℵ0
引理 3 L f l i p L_{flip} Lflip不可判定
L f l i p = { α : M α d o e s n o t a c c e p t α } L_{flip}=\{\alpha:M_\alpha\ does\ not\ accept\ \alpha\} Lflip={α:Mα does not accept α},证明这个语言是不可被判定的(对角线化)
P r o o f : Proof: Proof: 假设 L f l i p L_{flip} Lflip可被判定,则设可判定它的图灵机为 M β M_\beta Mβ,即 L ( M β ) = L f l i p L(M_\beta)=L_{flip} L(Mβ)=Lflip
情况1:
若 β ∈ L f l i p \beta \in L_{flip} β∈Lflip,根据定义,那么 M β M_\beta Mβ没有接收 β \beta β,又因为被判定了(要么接收要么拒绝,不存在死循环),那么 M β M_\beta Mβ拒绝了 β \beta β,则 β ∉ L ( M β ) \beta \notin L(M_\beta) β∈/L(Mβ),矛盾。
情况2:
若 β ∉ L f l i p \beta\notin L_{flip} β∈/Lflip,根据定义, M β M_\beta Mβ接收了 β \beta β,那么 β ∈ L ( M β ) = L f l i p \beta \in L(M_\beta)=L_{flip} β∈L(Mβ)=Lflip,矛盾。
图灵停机问题
L h a l t = { ( α , x ) : M α 会在输入 x 时停下 } L_{halt}=\{(\alpha,x):M_\alpha\ 会在输入x时停下\} Lhalt={(α,x):Mα 会在输入x时停下},是否可判定?
显然,对于某一类的程序,是可判定的,但这个语言表示是否存在一种通用的算法解决图灵停机问题。
费马大定理:
( ∀ n ≥ 3 ) ( ∀ a , b , c ≥ 1 ) ( a m + b m ≠ c m ) (\forall n\ge 3)(\forall a,b,c\ge 1)(a^m+b^m\ne c^m) (∀n≥3)(∀a,b,c≥1)(am+bm=cm),如果可以找到反例,即不停地循环,直到找到这个等式,那么它成立,当且仅当 ( M α , ϵ ) ∉ L h a l t (M_\alpha,\epsilon)\notin L_{halt} (Mα,ϵ)∈/Lhalt。这个问题是困难的。
定义4 归约
(reduction)
设 L 1 , L 2 ⊆ { 0 , 1 } ∗ L_1,L_2\subseteq\{0,1\}^* L1,L2⊆{0,1}∗,如果有一个从 L 1 L_1 L1到 L 2 L_2 L2的归约,就写作 L 1 ≤ L 2 L_1\le L_2 L1≤L2( L 2 L_2 L2不会比 L 1 L_1 L1简单),因此存在一个TM M : { 0 , 1 } ∗ → { 0 , 1 } ∗ M:\{0,1\}^*\rightarrow\{0,1\}^* M:{0,1}∗→{0,1}∗(当输入x时, M M M总会停止,并且输出一段字符串 M ( x ) M(x) M(x)),,有
- ( ∀ x ∈ L 1 ) ( M ( x ) ∈ L 2 ) (\forall x\in L_1)(M(x)\in L_2) (∀x∈L1)(M(x)∈L2)
- ( ∀ x ∉ L 1 ) ( M ( x ) ∉ L 2 ) (\forall x \notin L_1)(M(x)\notin L_2) (∀x∈/L1)(M(x)∈/L2)
即若 L 1 ≤ L 2 L_1\le L_2 L1≤L2,且如果 L 2 L_2 L2可判定,那么 L 1 L_1 L1也是可判定的,它的逆否:如果 L 1 L_1 L1不可判定,那么 L 2 L_2 L2也不可判定。
如果 x ∈ L 1 x\in L_1 x∈L1,则 M ( x ) ∈ L 2 M(x)\in L_2 M(x)∈L2,所以 M 2 M_2 M2接收 M ( x ) M(x) M(x)
如果 x ∉ L 1 x\notin L_1 x∈/L1,则 M ( x ) ∉ L 2 M(x)\notin L_2 M(x)∈/L2,所以 M 2 M_2 M2不接收 M ( x ) M(x) M(x)
更为完整的定义:
归约是将一个问题的算法转化为另一个问题,使用归约的原因:
- 把一个新问题归约到已知问题的算法上
- 证明某些问题是不可判定的。
归约的例子:
映射归约(Mapping reduction)
L 1 ≤ m L 2 L_1\le_m L_2 L1≤mL2,即在先前的定义中的,经过函数映射。
图灵归约(Turing reduction)
L 1 ≤ T L 2 L_1\le_T L_2 L1≤TL2
多项式时间的映射归约(Karp reduction)
L 1 ≤ p L 2 L_1\le_p L_2 L1≤pL2
多项式时间的图灵归约(Cook reduction)
例子:
1.可以计算 x 2 x^2 x2,如何计算 x y xy xy?
x
y
=
(
x
+
y
)
2
−
x
x
−
y
2
2
xy=\frac{(x+y)^2-x^x-y^2}{2}
xy=2(x+y)2−xx−y2,是图灵归约
,这个公式需要调用三次,而在映射归约中只能调用一次,且需返回结果
2.最大匹配问题,可归约为最大流问题
在匹配前后新加源和汇,并均连接起来,每个点,边的容量都为1。是映射归约
(只调用了一次,且调用完后直接返回结果)
定义4.1 映射归约
令 L 1 , L 2 ⊆ { 0 , 1 } ∗ L_1,L_2\subseteq\{0,1\}^* L1,L2⊆{0,1}∗,若存在一个可计算的函数映射: ϕ : { 0 , 1 } ∗ → { 0 , 1 } ∗ \phi:\{0,1\}^*\rightarrow \{0,1\}^* ϕ:{0,1}∗→{0,1}∗,且 的 x ∈ L 1 的x\in L_1 的x∈L1当且仅当 ϕ ( x ) ∈ L 2 \phi(x)\in L_2 ϕ(x)∈L2,我们说 L 1 L_1 L1是映射归约到 L 2 L_2 L2的,记作 L 1 ≤ m L 2 L_1\le_m L_2 L1≤mL2 (映射是多对一的)
- ∀ L , L ≤ m L \forall L,L\le_m L ∀L,L≤mL
- L 1 ≤ L 2 ⟺ L 1 ‾ ≤ m L 2 ‾ L_1\le L_2 \Longleftrightarrow \overline{L_1}\le_m \overline{L_2} L1≤L2⟺L1≤mL2
- 可传递:若 L 1 ≤ m L 2 , L 2 ≤ M L 3 ,则 L 1 ≤ m L 3 L_1\le_m L_2,L_2\le_M L_3 ,则L_1\le_mL3 L1≤mL2,L2≤ML3,则L1≤mL3
映射归约将直接返回结果,即不能对结果做运算
定义4.2 神谕图灵机
(Oracle Turing Machine)
一个语言 L L L的神谕k带图灵机,是一个k带图灵界,拥有两个额外的状态 q a s k , q r e s p o n s e q_{ask},q_{response} qask,qresponse,前k-1条带子是输入和工作带,最后一条带子是神谕带。
当进入 q a s k q_{ask} qask状态时,以下操作将在一步内完成:
- 写在神谕带上的字符串 z z z会被擦除
- 如果 z ∈ L z\in L z∈L,标志1将会写到神谕带的最左端,否则将会写0
- 神谕带的指针将移到最左边
- 进入到 q r e q u e s t q_{request} qrequest状态
类似地,我们可以定义一个拥有神谕(oracle)函数 f f f的TM
定义 4.3 图灵归约
令
L
1
,
L
2
⊆
{
0
,
1
}
∗
L_1,L_2\subseteq\{0,1\}^*
L1,L2⊆{0,1}∗,如果存在一个神谕图灵机,拥有
L
2
L_2
L2的神谕,这个神谕可判定
L
1
L_1
L1,则
L
1
L_1
L1 是可图灵归约到
L
2
L_2
L2的,记作
L
1
≤
T
L
2
L_1\le_T L_2
L1≤TL2
KaTeX parse error: Expected 'EOF', got '&' at position 2: &̲Let\ L_1,L_2\su…
即可以任意次调用结果,也可以对结果进行变换。
性质
- 对任意可判定的语言 L 1 , L 2 L_1,L_2 L1,L2,我们有 L 1 ≤ T L 2 L_1\le_T L_2 L1≤TL2
- 如果 L 1 ≤ T L 2 , L 2 ≤ T L 3 L_1\le_T L_2,L_2 \le_T L_3 L1≤TL2,L2≤TL3,那么 L 1 ≤ T L 3 L_1\le_T L_3 L1≤TL3
- 对于任意语言 L L L, L ≤ T L , L ≤ T L ‾ L\le_T L,L\le_T\overline{L} L≤TL,L≤TL
- 如果 L 1 ≤ m L 2 L_1\le _m L_2 L1≤mL2,那么 L 1 ≤ T L 2 L_1\le_T L_2 L1≤TL2
实际上,映射归约是比较特殊的图灵归约
定理5 L h a l t L_{halt} Lhalt不可判定
P r o o f Proof Proof:
我们将证明 L f l i p ≤ L h a l t L_{flip}\le L_{halt} Lflip≤Lhalt,假定 L h a l t L_{halt} Lhalt可被TM M h a l t M_{halt} Mhalt判定,我们将证明 L f l i p L_{flip} Lflip是可判定的,就产生了矛盾
构造一个TM M f l i p M_{flip} Mflip:
以输入 ( α , α ) (\alpha,\alpha) (α,α)运行 M h a l t M_{halt} Mhalt:
- 如果 M h a l t M_{halt} Mhalt 拒绝 ( α , α ) (\alpha,\alpha) (α,α),那么 M f l i p M_{flip} Mflip接收 α \alpha α
- 如果 M h a l t M_{halt} Mhalt接收 ( α , α ) (\alpha,\alpha) (α,α),以输入 α \alpha α模拟 M α M_\alpha Mα(使用一个UTM,并不直接运行,而是一种直接模拟),然后反转输出,那么很容易确认 M f l i p M_{flip} Mflip接收 L f l i p L_{flip} Lflip,矛盾。
令 L a c c e p t = { ( α , x ) : M α 接收 x } L_{accept}=\{(\alpha,x):M_\alpha 接收x\} Laccept={(α,x):Mα接收x}
引理 6 L a c c e p t L_{accept} Laccept不可判定
P r o o f Proof Proof
我们将证明 L h a l t ≤ L a c c e p t L_{halt}\le L_{accept} Lhalt≤Laccept,假定 L a c c e p t L_{accept} Laccept是可判定的为矛盾的,例如:存在一个TM M a c c e p t M_{accept} Maccept判定 L a c c p e t L_{accpet} Laccpet,我们构造一个TM M h a l t M_{halt} Mhalt,它可以判定 L h a l t L_{halt} Lhalt:
- 以 ( α , x ) (\alpha,x) (α,x)作为输入,构造一个新的TM M β M_\beta Mβ,用来模拟输入 x x x时的 M α M_\alpha Mα,并且无论 M α M_\alpha Mα何时停止,总是接收(如果 M α M_\alpha Mα死循环, M β M_\beta Mβ也死循环),输出为 ( β , x ) (\beta,x) (β,x),合并了拒绝和接收的状态。
- 以 ( β , x ) (\beta,x) (β,x)作为输入,运行 M a c c e p t M_{accept} Maccept,然后转发它的输出,显然 M h a l t M_{halt} Mhalt可判定 L h a l t L_{halt} Lhalt
“显然”的解释:
- ( α , x ) ∈ L h a l t (\alpha,x)\in L_{halt} (α,x)∈Lhalt,那么 M α M_\alpha Mα在输入 x x x时停机,根据 M β M_\beta Mβ的定义,它一定接收 x x x,那么 M h a l t M_{halt} Mhalt将接收 ( α , x ) (\alpha,x) (α,x)
- ( α , x ) ∉ L h a l t (\alpha,x)\notin L_{halt} (α,x)∈/Lhalt,那么根据 M b e t a M_{beta} Mbeta的定义,在输入 x x x时,死循环,但 M β M_\beta Mβ不是图灵机,只是一种直接的映射,那么它仍会输出 ( β , x ) (\beta,x) (β,x),那么 M a c c e p t M_{accept} Maccept将拒绝 ( α , x ) (\alpha,x) (α,x)
引理 7 L e m p t y 不可判定 L_{empty}不可判定 Lempty不可判定
L e m p t y = { < M > : M 不接收任何输入 , 例如: L ( M ) = ∅ } L_{empty}=\{<M>:M 不接收任何输入,例如:L(M)=\varnothing\} Lempty={<M>:M不接收任何输入,例如:L(M)=∅}
P r o o f Proof Proof
我们将证明 L h a l t ≤ h e m p t y L_{halt}\le h_{empty} Lhalt≤hempty,假定 L e m p t y L_{empty} Lempty可被一个TM M e m p t y M_{empty} Mempty判定,我们可以导出一个矛盾:
我们可构建一个TM M h a l t M_{halt} Mhalt:
以 ( α , x ) (\alpha,x) (α,x)作为输入
- 构造一个新的TM
M
β
M_{\beta}
Mβ,它输入是
y
∈
{
0
,
1
}
∗
y \in\{0,1\}^*
y∈{0,1}∗,它将
- 以输入 x x x模拟 M α M_\alpha Mα
- 如果上一步停止了,总是接受 y y y
显然, L ( M β ) = ∅ L(M_{\beta})=\varnothing L(Mβ)=∅ ,如果 M α M_\alpha Mα没有在输入 x x x时停止;否则 L ( M β ) = { 0 , 1 } ∗ L(M_\beta)=\{0,1\}^* L(Mβ)={0,1}∗
- 以 β \beta β为输入运行 M e m p t y M_{empty} Mempty,并且反转输出(如果拒绝,则接收;如果接收,则拒绝),
我们可以确认 M h a l t M_{halt} Mhalt可判定 L h a l t L_{halt} Lhalt,矛盾。
情况1:如果 M α M_\alpha Mα停止了,那么 β ∈ { 0 , 1 } ∗ \beta\in \{0,1\}^* β∈{0,1}∗,那么 M e m p t y M_{empty} Mempty总是拒绝,反转后,总是接受
情况2:如果 M α M_\alpha Mα没有停止,则 β = ∅ \beta = \varnothing β=∅,那么 M e m p t y M_{empty} Mempty总是接收,反转后,总是拒绝
那么 M h a l t M_{halt} Mhalt就判定了 L h a l t L_{halt} Lhalt
定理 8 L r e g u l a r L_{regular} Lregular不可判定
L r e g u l a r = { < M > : M 是一个图灵机,且 L ( M ) 是一个正则语言 } L_{regular}=\{<M>:M是一个图灵机,且L(M)是一个正则语言\} Lregular={<M>:M是一个图灵机,且L(M)是一个正则语言},它是不可判定的
P r o o f Proof Proof
假定 L r e g u l a r L_{regular} Lregular是可被TM M r e g u l a r M_{regular} Mregular判定的,我们可以证明 L a c c e p t L_{accept} Laccept是可判定的,从而导出矛盾.
以 ( α , x ) (\alpha,x) (α,x)作为输入,构造一个TM M a c c e p t M_{accept} Maccept:
- 构造一个TM
M
b
e
t
a
,
β
=
β
(
α
,
x
)
M_{beta},\beta=\beta(\alpha,x)
Mbeta,β=β(α,x),并且
M
β
M_\beta
Mβ的输入表示为
y
y
y
- 如果 y ∈ { 0 n 1 n : n ≥ 0 } y\in\{0^n1^n:n \ge 0\} y∈{0n1n:n≥0},直接接收
- 否则,用 x x x模拟 M α M_\alpha Mα,则 M β M_\beta Mβ接收 y y y 当且仅当 M α M_\alpha Mα接收 x x x
- 以 β \beta β运行 M r e g u l a r M_{regular} Mregular,转发它的输出,( L r e g u l a r L_{regular} Lregular是判定的语言,则要么接收要么拒绝)
情况1:如果 ( α , x ) ∉ L a c c e p t (\alpha,x)\notin L_{accept} (α,x)∈/Laccept,即 M α M_\alpha Mα不接受 x x x,那么是1的第二种情况,则 M β M_\beta Mβ不接收 y y y,那么唯一接受的语言集合 L ( M β ) = { 0 n 1 n : n ≥ 0 } L(M_\beta)=\{0^n1^n:n\ge 0\} L(Mβ)={0n1n:n≥0}(它不是正则语言),那么 M r e g u l a r M_{regular} Mregular拒绝 β \beta β, M a c c e p t M_{accept} Maccept也拒绝 β \beta β
情况2:如果 ( α , x ) ∈ L a c c e p t (\alpha,x)\in L_{accept} (α,x)∈Laccept,那么 L ( M β ) = { 0 , 1 } ∗ L(M_\beta)=\{0,1\}^* L(Mβ)={0,1}∗,那么 M r e g u l a r M_{regular} Mregular接收 β \beta β, M a c c e p t 也接收 M_{accept}也接收 Maccept也接收 β \beta β,那么 L a c c e p t L_{accept} Laccept是可判定的,矛盾了。
引理 9 L e q u a l L_{equal} Lequal不可判定
L e q u a l = { ( < M 1 > , < M 2 > ) : M 1 和 M 2 是图灵机,且 L ( M 1 ) = L ( M 2 ) } L_{equal}=\{(<M_1>,<M_2>):M_1和M_2是图灵机,且L(M_1)=L(M_2)\} Lequal={(<M1>,<M2>):M1和M2是图灵机,且L(M1)=L(M2)}
P r o o f Proof Proof
假定 L e q u a l L_{equal} Lequal是可被 M e q u a l M_{equal} Mequal判定的,将其归约到 L e m p t y L_{empty} Lempty上,即证明 L e m p t y L_{empty} Lempty是可判定的,从而导出矛盾。
以 < M > <M> <M>作为输入,构造一个TM M e m p t y M_{empty} Mempty:
- 以输入 ( < M > , < M 0 > ) (<M>,<M_0>) (<M>,<M0>)运行 M e q u a l M_{equal} Mequal,其中 L ( M 0 ) = ∅ L(M_0)=\varnothing L(M0)=∅,那么 M 0 M_0 M0立刻拒绝,只有当 M M M也只接受 ∅ \varnothing ∅时才会接受
- 转发输出。
显然, M e m p t y M_{empty} Mempty可判定 L e m p t y L_{empty} Lempty,因为输入的 M M M只接受空集时, M e m p t y M_{empty} Mempty才接受。
定义10 语言的非平凡性质
性质P是关于一个可被图灵机识别的语言的性质(语言),如果有 L ( M ) = L ( N ) L(M)=L(N) L(M)=L(N),那么 P P P包含 < M > <M> <M>当且仅当 P P P 包含 < N > <N> <N>( P ⊆ { 0 , 1 } ∗ P\subseteq\{0,1\}^* P⊆{0,1}∗)
性质是非平凡
的,如果存在一个
T
M
α
TM_\alpha
TMα,其中
α
∈
P
\alpha \in P
α∈P,且存在
T
M
β
TM_\beta
TMβ,其中
β
∉
P
\beta \notin P
β∈/P
定理 11 米饭理论
(rice theorem)
任何关于可被图灵机识别的语言的非平凡性质都是不可判定的
P r o o f Proof Proof
不失一般性,假设 ∅ ∉ P \varnothing\notin P ∅∈/P,可产生矛盾:假定 P P P可被图灵机 M P M_P MP判定
既然 P P P是非平凡的,任取 β ∈ P \beta\in P β∈P(因为 ∅ ∉ P \varnothing\notin P ∅∈/P,那么空图灵机(总是拒绝的图灵机)不在P里)。
构造一个图灵机 M a c c e p t M_{accept} Maccept如下:
-
对于输入 ( α , x ) (\alpha,x) (α,x),构造 TM M γ M_\gamma Mγ,又构造 γ = γ ( α , x ) \gamma=\gamma(\alpha,x) γ=γ(α,x)如下:
-
用输入 x x x模拟 M α M_{\alpha} Mα,直到 M α M_\alpha Mα接收 x x x,否则死循环。
-
以输入 y y y模拟 M β M_{\beta} Mβ, M γ M_\gamma Mγ接收当且仅当 M β M_\beta Mβ接收
注意到,当 M α M_\alpha Mα接收 x x x时, M γ = M β M_\gamma=M_\beta Mγ=Mβ,当死循环时, M γ M_\gamma Mγ也死循环
-
-
以 γ \gamma γ运行 M P M_P MP,接收当且仅当 M P M_P MP接收。
可以断定 M a c c e p t M_{accept} Maccept可判定 L a c c e p t L_{accept} Laccept
情况1: ( α , x ) ∈ L a c c e p t (\alpha,x)\in L_{accept} (α,x)∈Laccept,则 L ( M γ ) = L ( M β ) L(M_{\gamma})=L(M_\beta) L(Mγ)=L(Mβ),那么 M P M_P MP接收 γ \gamma γ
情况2: ( α , x ) ∉ L a c c e p t (\alpha,x)\notin L_{accept} (α,x)∈/Laccept,则 L ( M γ ) = ∅ L(M_{\gamma})=\varnothing L(Mγ)=∅,那么 M P M_P MP不接收 γ \gamma γ
Post Correspondence Problem
定义多米诺牌 [ a a b ] [\frac{a}{ab}] [aba]
对一组多米诺牌 { [ b c a ] , [ a a b ] , [ c a a ] , [ a b c c ] } \{[\frac{b}{ca}],[\frac{a}{ab}],[\frac{ca}{a}],[\frac{abc}{c}]\} {[cab],[aba],[aca],[cabc]}是否存在一个划分,满足这样的牌
P C P PCP PCP问题是为了确定是否每一组多米诺牌都有一个匹配。
形式化的,一个PCP的实例为:
P
=
{
[
t
1
b
1
]
,
[
t
2
b
2
]
,
⋯
,
[
t
k
b
k
]
}
P=\{[\frac{t_1}{b_1}],[\frac{t_2}{b_2}],\cdots,[\frac{t_k}{b_k}]\}
P={[b1t1],[b2t2],⋯,[bktk]}
其中
t
i
,
b
i
∈
∑
∗
t_i,b_i\in \sum^*
ti,bi∈∑∗,一个匹配是两排一样的片段
i
1
,
i
2
,
⋯
,
i
l
i_1,i_2,\cdots,i_l
i1,i2,⋯,il,其中
t
i
1
t
i
2
⋯
t
i
l
=
b
i
1
b
i
2
⋯
b
i
l
t_{i_1}t_{i_2}\cdots t_{i_l}=b_{i_1}b_{i_2}\cdots b_{i_l}
ti1ti2⋯til=bi1bi2⋯bil,(可以不全用,可以重复用)那么语言为
P
C
P
=
{
<
P
>
:
P
有一个匹配
}
PCP=\{<P>:P 有一个匹配\}
PCP={<P>:P有一个匹配}
其中 < P > <P> <P>表示一组多米诺骨牌的编码
定理12 PCP问题是不可判定的
思路:归约 L a c c e p t L_{accept} Laccept到 P C P PCP PCP
对于任意 α , x \alpha,x α,x,构造一个 P C P PCP PCP
对于实例 P α , x P_{\alpha,x} Pα,x,认为 M α M_\alpha Mα接收 x x x当且仅当 P α , x P_{\alpha,x} Pα,x有一个匹配
截图:对于一个单带图灵机运行时的某一状态,记录下来:
#
a
0
a
1
a
2
q
i
a
3
a
4
a
5
a
6
#
\#a_0a_1a_2q_ia_3a_4a_5a_6\#
#a0a1a2qia3a4a5a6#
那么我们需要拼出这样一个匹配:
#
q
0
w
0
w
1
⋯
w
n
−
1
⏟
s
n
a
p
s
h
o
t
1
#
w
0
′
q
1
w
1
⋯
w
n
−
1
⏟
s
n
a
p
s
h
o
t
2
#
⋯
#
⏟
m
a
n
y
s
n
a
p
s
h
o
t
s
#
⋯
q
a
c
c
e
p
t
⋯
#
⏟
l
a
s
t
s
n
a
p
s
h
o
t
\underbrace{\#q_0w_0w_1\cdots w_{n-1}}_{snapshot1}\underbrace{\#w'_0q_1w_1\cdots w_{n-1}}_{snapshot2}\underbrace{\#\cdots\#}_{many\ snapshots}\underbrace{\#\cdots q_{accept}\cdots\#}_{last\ snapshot}
snapshot1
#q0w0w1⋯wn−1snapshot2
#w0′q1w1⋯wn−1many snapshots
#⋯#last snapshot
#⋯qaccept⋯#
P r o o f Proof Proof
归约 L a c c e p t L_{accept} Laccept到 P C P PCP PCP,因为 L a c c e p t L_{accept} Laccept是不可判定的,那么我们可以得到PCP 是不可判定的,即假设PCP是可判定的,推导出 L a c c e p t L_{accept} Laccept也是可判定的,从而导出矛盾
对于一个 T M α TM_\alpha TMα,输入 w w w,构造一个PCP实例 P = P ( α , x ) P=P(\alpha,x) P=P(α,x),有
- 如果 M α M_\alpha Mα接收 w w w,那么 P ∈ P C P P\in PCP P∈PCP
- 如果 M α M_\alpha Mα不接受 w w w,那么 P ∉ P C P P\notin PCP P∈/PCP
即若 P ∈ P C P , 则 ( α , x ) ∈ L a c c e p t P\in PCP,则(\alpha,x)\in L_{accept} P∈PCP,则(α,x)∈Laccept
作三个假设:
- M M M永不会尝试将自己的指针移动到带子的最左端(即 ⊳ \rhd ⊳处),每一步均会左移和右移,不会停留。
- 如果 w = ϵ w=\epsilon w=ϵ(是空串),用 ⊔ \sqcup ⊔替代 w w w
- 修改一下PCP,规定一个匹配必须以 [ t 1 b 1 ] [\frac{t_1}{b_1}] [b1t1]开始
对于假设3,我们用另一个语言描述
M
P
C
P
=
{
<
P
>
:
P
∈
P
C
P
,
且
∃
以
[
t
1
b
1
]
为开始的匹配
}
MPCP=\{<P>:P\in PCP,且\exist 以[\frac{t_1}{b_1}]为开始的匹配\}
MPCP={<P>:P∈PCP,且∃以[b1t1]为开始的匹配}
那么我们的目标是:
- L a c c e p t ≤ m M P C P L_{accept}\le_m MPCP Laccept≤mMPCP
- M P C M ≤ m P C P MPCM \le_m PCP MPCM≤mPCP
令 M α = ( Q , ∑ , Γ , δ , q 0 , q a c c e p t , q r e j e c t ) M_\alpha = (Q,\sum,\Gamma,\delta,q_0,q_{accept},q_{reject}) Mα=(Q,∑,Γ,δ,q0,qaccept,qreject),构造 P ′ = P ′ ( α , w ) P'=P'(\alpha,w) P′=P′(α,w), P ′ ∈ M P C P P'\in MPCP P′∈MPCP,当且仅当 M α M_{\alpha} Mα接收 w w w。
第一部分(初始状态):
输入 [ # ⋯ # q 0 w 1 w 2 ⋯ w n # ] [\cfrac{\#\cdots}{\#q_0w_1w_2\cdots w_n\#}] [#q0w1w2⋯wn##⋯]到 P ′ P' P′作为第一张多米诺牌, q 0 q_0 q0在指向的指标前面
第二部分(右移)
对任意 a , b ∈ Γ ∗ a,b\in \Gamma^* a,b∈Γ∗,任意 q 0 , r ∈ Q q_0,r\in Q q0,r∈Q
如果 δ ( q , a ) = ( r , b , R ) \delta(q,a)=(r,b,R) δ(q,a)=(r,b,R),(分别是下一状态,写的字符,右移)且 q ≠ q r e j e c t q\ne q_{reject} q=qreject,将 [ q a b r ] [\cfrac{qa}{br}] [brqa]输入到 P ′ P' P′
第三部分
如果 δ ( q , a ) = ( r , b , l ) \delta(q,a)=(r,b,l) δ(q,a)=(r,b,l),将 [ c q a r c b ] [\cfrac{cqa}{rcb}] [rcbcqa]输入到 P ′ P' P′,对任意 c ∈ Γ c\in \Gamma c∈Γ
第四部分(处理没被指过的标志):
对任意 a ∈ Γ ∪ { # } a\in \Gamma\cup\{\#\} a∈Γ∪{#},将 [ a a ] [\frac{a}{a}] [aa]放入 P ′ P' P′
一个例子(用来展示前四步的用意)
Γ = { 0 , 1 , 2 , ⊔ } , w = 0100 \Gamma = \{0,1,2,\sqcup\},w =0100 Γ={0,1,2,⊔},w=0100
从状态 q 0 q_0 q0开始, δ ( q 0 , 0 ) = ( q 7 , 2 , R ) \delta(q_0,0)=(q_7,2,R) δ(q0,0)=(q7,2,R)
那么
$ Part1\ \ [\frac{t_1}{b_1}]=[\frac{#}{#q_00100}] $
P a r t 2 [ t 2 b 2 ] = [ q 0 0 2 q 7 ] Part2\ [\frac{t_2}{b_2}]=[\frac{q_0 0}{2q_7}] Part2 [b2t2]=[2q7q00]
P a r t 4 [ 0 0 ] [ 1 1 ] [ 2 2 ] [ ⊔ ⊔ ] [ # # ] Part4\ \ [\frac{0}{0}]\ [\frac{1}{1}]\ [\frac{2}{2}]\ [\frac{\sqcup}{\sqcup}]\ [\frac{\#}{\#}] Part4 [00] [11] [22] [⊔⊔] [##]
第五部分
放入 [ # # ] , [ # ⊔ # ] [\frac{\#}{\#}],[\frac{\#}{\sqcup\#}] [##],[⊔##](用来处理空格)
第六部分
对任意 a ∈ Γ a\in \Gamma a∈Γ,在P’放入 [ a q a c c e p t q a c c e p t ] , [ q a c c e p t a q a c c e p t ] [\frac{aq_{accept}}{q_{accept}}],[\frac{q_{accept}a}{q_{accept}}] [qacceptaqaccept],[qacceptqaccepta],用来收缩
第七部分
放入 [ q a c c e p t # # # ] [\frac{q_{accept}\#\#}{\#}] [#qaccept##]
至此构造完成,断言 M α M_\alpha Mα接收 w w w当且仅当 P ′ ∈ M P C P P'\in MPCP P′∈MPCP
⟹ \Longrightarrow ⟹(充分性):
用 S i S_i Si表示一张截图
则 # S 1 # S 2 # ⋯ # S l # \#S_1\#S_2\#\cdots\# S_l\# #S1#S2#⋯#Sl#,可以用七种牌拼出来
⟸ \Longleftarrow ⟸(必要性):
考虑相邻的两个configuration(配置,即截图) S i , S i + 1 S_i,S_{i+1} Si,Si+1,有如下可能
- S i = S i + 1 S_i =S_{i+1} Si=Si+1
- 如果 S i S_i Si包含 q a c c e p t q_{accept} qaccept, S i + 1 S_{i+1} Si+1是由 S i S_i Si收缩得来,即使用了第六种牌
- 如果 S i S_i Si不含 q a c c e p t q_{accept} qaccept,且 S i ≠ S i + 1 S_i\ne S_{i+1} Si=Si+1,那么 S i + 1 S_{i+1} Si+1是一个从 S i S_i Si得到的有效转移,即处于运行阶段
最终,我们可以用一个小技巧得到 M P C P ≤ m P C P MPCP \le_m PCP MPCP≤mPCP:
令 u = u 1 u 2 ⋯ u n u=u_1u_2\cdots u_n u=u1u2⋯un为一段长度为 n n n的字符串
定义:
∗
u
=
∗
u
1
∗
u
2
∗
⋯
∗
u
n
u
∗
=
u
1
∗
u
2
∗
⋯
∗
u
n
∗
∗
u
∗
=
∗
u
1
∗
u
2
∗
⋯
∗
u
n
∗
*u=*u_1*u_2*\cdots *u_n\\ u*=u_1*u_2*\cdots *u_n*\\ *u*=*u_1*u_2*\cdots *u_n*\\
∗u=∗u1∗u2∗⋯∗unu∗=u1∗u2∗⋯∗un∗∗u∗=∗u1∗u2∗⋯∗un∗
如果
P
′
=
{
[
t
1
b
1
]
,
[
t
2
b
2
]
,
⋯
,
[
t
n
b
n
]
}
P'=\{[\frac{t_1}{b_1}],[\frac{t_2}{b_2}],\cdots,[\frac{t_n}{b_n}]\}
P′={[b1t1],[b2t2],⋯,[bntn]}
则令 P = { [ ∗ t 1 ∗ b 1 ∗ ] , [ ∗ t 1 b 1 ∗ ] , [ ∗ t 2 b 2 ∗ ] , ⋯ , [ ∗ t k b k ] , [ ∗ ⊳ ⊳ ] } P=\{[\frac{*t_1}{*b_1*}],[\frac{*t_1}{b_1*}],[\frac{*t_2}{b_2*}],\cdots,[\frac{*t_k}{b_k}],[\frac{*\rhd}{\rhd}]\} P={[∗b1∗∗t1],[b1∗∗t1],[b2∗∗t2],⋯,[bk∗tk],[⊳∗⊳]},则显然必须以第一张牌开始,假设三就不是必要的了,且得到了 P ′ ∈ M P C P i f f P ∈ P C P P'\in MPCP \ iff\ P\in PCP P′∈MPCP iff P∈PCP。
哥德尔不完备定理
皮亚诺算术
含有以下符号
- 常数 0 0 0
- 后继符号$ S \ (1=S(0),2=S(S(0)))$
- 加法符号 ( + ) (+) (+),乘法符号 ( ⋅ ) (\cdot) (⋅)
- 逻辑运算 ∧ , ∨ , ¬ \land,\lor,\neg ∧,∨,¬
- 全称量词 ∀ , ∃ \forall,\exist ∀,∃
- 二元运算 ≤ , = \le,= ≤,=
- 括号 ( ) () ()
- 变量符号 x , x ∗ , x ∗ ∗ \ x,x^*,x^{**} x,x∗,x∗∗
例子:
-
“x整除y” DIVIDEX(x,y)
( ∃ z ) ( y = x z ) (\exist z)(y=xz) (∃z)(y=xz)
-
“y是质数” PRIME(y)
( ∀ x ) x = 1 ∨ x = y ∨ ¬ D I V I D E ( x , y ) (\forall x)x=1\lor x=y\lor \neg DIVIDE(x,y) (∀x)x=1∨x=y∨¬DIVIDE(x,y)
-
哥德巴赫猜想
( ∀ x ) ( x ≥ 2 ) ⇒ ( ∃ y ) ( ∃ z ) ( 2 x = y + z ∧ P R I M E ( y ) ∧ P R I M E ( z ) ) (\forall x)(x\ge 2)\Rightarrow (\exist y)(\exist z)(2x=y+z \land PRIME(y)\land PRIME(z)) (∀x)(x≥2)⇒(∃y)(∃z)(2x=y+z∧PRIME(y)∧PRIME(z))
练习
-
质数有无穷多个
( ∀ N ) ( ∃ x ) ( x > N ∧ P R I M E ( x ) ) (\forall N)(\exist x)(x>N \land PRIME(x)) (∀N)(∃x)(x>N∧PRIME(x))
-
有无穷多对素数,他们相差2(孪生素数)
( ∀ N ) ( ∃ x > N ) ( ∃ y > N ) ( x = S ( S ( y ) ) ∧ P R I M E ( x ) ∧ P R I M E ( y ) ) (\forall N)(\exist x\gt N)(\exist y\gt N)(x=S(S(y))\land PRIME(x) \land PRIME(y)) (∀N)(∃x>N)(∃y>N)(x=S(S(y))∧PRIME(x)∧PRIME(y))
-
0不是任何自然数的后继
( ∀ x ∈ N ) ( S ( x ) ≠ 0 ) (\forall x\in N)(S(x)\ne 0) (∀x∈N)(S(x)=0)
-
两个数相等当且仅当他们的后继相等
( ∀ x ) ( ∀ y ) ( x = y ) ⇔ ( S ( x ) = S ( y ) ) (\forall x)(\forall y)( x=y)\Leftrightarrow (S(x)=S(y)) (∀x)(∀y)(x=y)⇔(S(x)=S(y))
KaTeX parse error: Undefined control sequence: \and at position 32: …rrow y\ \ \ (x\̲a̲n̲d̲ ̲y)\or(\urcorner…
定理17 哥德尔不完备定理
所有包含皮亚诺算术的公理化的证明系统,一定存在一个命题,不能被证明,也不能被证否。
证明思路:
对任意的 α , x ∈ { 0 , 1 } ∗ , \alpha,x\in\{0,1\}^*, α,x∈{0,1}∗,构造一个一阶皮亚诺算术公式 ϕ α , x \phi_{\alpha,x} ϕα,x, ϕ α , x \phi_{\alpha,x} ϕα,x为真当且仅当 M α M_\alpha Mα在输入x时停机。即将图灵停机问题归约到哥德尔不完备定理
假设上述的证明系统是完备的,对于任意的皮亚诺算式都可以证明或证否
那么我们可以构造一个TM 模拟所有的证明,这些证明的长度从 π \pi π到长度 k k k,认为如果 π \pi π是一个关于 ϕ α , x \phi_{\alpha,x} ϕα,x或 ⌝ ϕ α , x \urcorner \phi_{\alpha,x} ┐ϕα,x。由于我们假设证明系统是完备的,那么图灵机 M h a l t M_{halt} Mhalt总会停机(对于一个命题总能证明或证否),则 L h a l t L_{halt} Lhalt是可判定的。
希尔伯特第十问题
丢番图方程
是整数系数和有限个未知数的多项式方程。
例如
x 2 + y 2 + 1 = 0 x^2+y^2+1=0 x2+y2+1=0 无解
3 x 2 − 2 x y − y 2 z − 7 = 0 3x^2-2xy-y^2z-7=0 3x2−2xy−y2z−7=0 有一个解: x = 1 , y = 2 , z = − 2 x=1,y=2,z=-2 x=1,y=2,z=−2
定理18 希尔伯特第十问题(MRDP定理)
是否存在一个算法,能够判断丢番图方程有解
即语言 L D i o = { < p ( x 1 , ⋯ , x n ) > :丢番图方程 p ( x 1 , ⋯ , x n ) = 0 有解 } L_{Dio}=\{<p(x_1,\cdots,x_n)>:丢番图方程 p(x_1,\cdots,x_n)=0有解\} LDio={<p(x1,⋯,xn)>:丢番图方程p(x1,⋯,xn)=0有解}
证明思路:对于任意 α , w ∈ { 0 , 1 } ∗ \alpha,w\in \{0,1\}^* α,w∈{0,1}∗构造一个丢番图方程 P α , w P_{\alpha,w} Pα,w, M α M_\alpha Mα在输入 w w w时停机,当且仅当 P α , w P_{\alpha,w} Pα,w有一个整数解。