计算理论基础:3、可计算性

通用图灵机

​ 对一个多带图灵机进行编码,假设我们对图灵机的编码满足:

  1. 每一段字符串 α ∈ { 0 , 1 } ∗ \alpha \in\{0,1\}^* α{0,1}表示某一图灵机(对于无效的编码 α \alpha α,图灵机总是拒绝)
  2. 每个图灵机被无限长的字符串(每个字符串可含有任意多个无效状态)


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×ΓkQ×Γ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 将

  1. 读取 M M M工作带上的标志 O ( 1 ) O(1) O(1)
  2. 读取 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)
  3. 扫描程序带(M的描述),来找到转移函数 δ 1 ( q 1 , a ) \delta_1(q_1,a) δ1(q1,a) O M ( 1 ) O_M(1) OM(1)
  4. 更新M工作带上的标识,如果需要的话,移动指针 O ( 1 ) O(1) O(1)
  5. 更新 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,nN,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,nN,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,,Rlog2T,Llog2TRi=Li=2i+1
​ 我们约定:

  1. 每个区域只有三个状态:空的,满的或者时半满的

  2. L i ∪ R i L_i\cup R_i LiRi中的缓冲符号的数目只能为 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为半满
    只有这三种情况。

纸带左右移是对称的,考虑左移:

  1. 找到最小的 i 0 i_0 i0,使得 R i 0 R_{i_0} Ri0不为空,(等价的,找到最小的 i 0 i_0 i0,使得 L i 0 L_{i_0} Li0不为满)
  2. R i 0 R_{i_0} Ri0最左边的不为缓冲符号的符号移动到位置0,然后将 R i 0 R_{i_0} Ri0中剩余的 2 i 0 − 1 2^{i_0}-1 2i01个非缓冲符号移动到 R 0 , R 1 , ⋯   , R i 0 − 1 R_0,R_1,\cdots,R_{i_0-1} R0,R1,,Ri01,刚好能填一半( ∑ 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=0i012k+1=21+22++2i0=2i0+12)
  3. 左边是对称的,令 j j j是从 i 0 − 1 i_0-1 i01到0,移动一半的 ∣ L 0 ∣ + ∣ L 1 ∣ + ⋯ + ∣ L i − 1 ∣ − 1 |L_0|+|L_1|+\cdots+|L_{i-1}|-1 L0+L1++Li11个非缓冲符号到 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=2i02个元素,刚好占一半
  4. 移动完成后, 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,,Ri01,Li01是半满的, 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 2i01次的移动指标不会超过 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=1TO(2index(i)) {1iT:index(i)=j}=kj=0log2 TO(2j)2jT=kj=0log2TO(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=20=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) (n3)(a,b,c1)(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 L1L2( 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)),,有

  1. ( ∀ x ∈ L 1 ) ( M ( x ) ∈ L 2 ) (\forall x\in L_1)(M(x)\in L_2) (xL1)(M(x)L2)
  2. ( ∀ 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 L1L2,且如果 L 2 L_2 L2可判定,那么 L 1 L_1 L1也是可判定的,它的逆否:如果 L 1 L_1 L1不可判定,那么 L 2 L_2 L2也不可判定。

在这里插入图片描述

图1 归约示意

在这里插入图片描述

图2 映射示意

如果 x ∈ L 1 x\in L_1 xL1,则 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)

更为完整的定义:

​ 归约是将一个问题的算法转化为另一个问题,使用归约的原因:

  1. 把一个新问题归约到已知问题的算法上
  2. 证明某些问题是不可判定的。

归约的例子:

映射归约(Mapping reduction)

L 1 ≤ m L 2 L_1\le_m L_2 L1mL2,即在先前的定义中的,经过函数映射。

图灵归约(Turing reduction)

L 1 ≤ T L 2 L_1\le_T L_2 L1TL2

多项式时间的映射归约(Karp reduction)

L 1 ≤ p L 2 L_1\le_p L_2 L1pL2

多项式时间的图灵归约(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)2xxy2,是图灵归约,这个公式需要调用三次,而在映射归约中只能调用一次,且需返回结果

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 xL1当且仅当 ϕ ( 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 L1mL2 (映射是多对一的)

  1. ∀ L , L ≤ m L \forall L,L\le_m L L,LmL
  2. L 1 ≤ L 2 ⟺ L 1 ‾ ≤ m L 2 ‾ L_1\le L_2 \Longleftrightarrow \overline{L_1}\le_m \overline{L_2} L1L2L1mL2
  3. 可传递:若 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 L1mL2,L2ML3,则L1mL3

​ 映射归约将直接返回结果,即不能对结果做运算

定义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状态时,以下操作将在一步内完成:

  1. 写在神谕带上的字符串 z z z会被擦除
  2. 如果 z ∈ L z\in L zL,标志1将会写到神谕带的最左端,否则将会写0
  3. 神谕带的指针将移到最左边
  4. 进入到 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 L1TL2
KaTeX parse error: Expected 'EOF', got '&' at position 2: &̲Let\ L_1,L_2\su…

​ 即可以任意次调用结果,也可以对结果进行变换。

性质
  1. 对任意可判定的语言 L 1 , L 2 L_1,L_2 L1,L2,我们有 L 1 ≤ T L 2 L_1\le_T L_2 L1TL2
  2. 如果 L 1 ≤ T L 2 , L 2 ≤ T L 3 L_1\le_T L_2,L_2 \le_T L_3 L1TL2,L2TL3,那么 L 1 ≤ T L 3 L_1\le_T L_3 L1TL3
  3. 对于任意语言 L L L L ≤ T L , L ≤ T L ‾ L\le_T L,L\le_T\overline{L} LTL,LTL
  4. 如果 L 1 ≤ m L 2 L_1\le _m L_2 L1mL2,那么 L 1 ≤ T L 2 L_1\le_T L_2 L1TL2

实际上,映射归约是比较特殊的图灵归约

定理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} LflipLhalt,假定 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:

  1. 如果 M h a l t M_{halt} Mhalt 拒绝 ( α , α ) (\alpha,\alpha) (α,α),那么 M f l i p M_{flip} Mflip接收 α \alpha α
  2. 如果 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} LhaltLaccept,假定 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:

  1. ( α , 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),合并了拒绝和接收的状态。
  2. ( β , 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

“显然”的解释:

  1. ( α , 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)
  2. ( α , 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} Lhalthempty,假定 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)作为输入

  1. 构造一个新的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}

  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

  1. 构造一个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:n0},直接接收
    • 否则,用 x x x模拟 M α M_\alpha Mα,则 M β M_\beta Mβ接收 y y y 当且仅当 M α M_\alpha Mα接收 x x x
  2. β \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:n0}(它不是正则语言),那么 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>):M1M2是图灵机,且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

  1. 以输入 ( < 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 时才会接受
  2. 转发输出。

显然, 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如下:

  1. 对于输入 ( α , x ) (\alpha,x) (α,x),构造 TM M γ M_\gamma Mγ,又构造 γ = γ ( α , x ) \gamma=\gamma(\alpha,x) γ=γ(α,x)如下:

    1. 用输入 x x x模拟 M α M_{\alpha} Mα,直到 M α M_\alpha Mα接收 x x x,否则死循环。

    2. 以输入 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γ也死循环

  2. γ \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} ti1ti2til=bi1bi2bil,(可以不全用,可以重复用)那么语言为
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 #q0w0w1wn1snapshot2 #w0q1w1wn1many 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),有

  1. 如果 M α M_\alpha Mα接收 w w w,那么 P ∈ P C P P\in PCP PPCP
  2. 如果 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} PPCP,(α,x)Laccept

作三个假设:

  1. M M M永不会尝试将自己的指针移动到带子的最左端(即 ⊳ \rhd 处),每一步均会左移和右移,不会停留。
  2. 如果 w = ϵ w=\epsilon w=ϵ(是空串),用 ⊔ \sqcup 替代 w w w
  3. 修改一下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>:PPCP,[b1t1]为开始的匹配}
那么我们的目标是:

  1. L a c c e p t ≤ m M P C P L_{accept}\le_m MPCP LacceptmMPCP
  2. M P C M ≤ m P C P MPCM \le_m PCP MPCMmPCP

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 PMPCP,当且仅当 M α M_{\alpha} Mα接收 w w w

第一部分(初始状态):

​ 输入 [ # ⋯ # q 0 w 1 w 2 ⋯ w n # ] [\cfrac{\#\cdots}{\#q_0w_1w_2\cdots w_n\#}] [#q0w1w2wn##] 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,rQ

​ 如果 δ ( 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 PMPCP

⟹ \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,有如下可能

  1. S i = S i + 1 S_i =S_{i+1} Si=Si+1
  2. 如果 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收缩得来,即使用了第六种牌
  3. 如果 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 MPCPmPCP

​ 令 u = u 1 u 2 ⋯ u n u=u_1u_2\cdots u_n u=u1u2un为一段长度为 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=u1u2unu=u1u2unu=u1u2un
如果 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={[b1t1],[b1t1],[b2t2],,[bktk],[]},则显然必须以第一张牌开始,假设三就不是必要的了,且得到了 P ′ ∈ M P C P   i f f   P ∈ P C P P'\in MPCP \ iff\ P\in PCP PMPCP iff PPCP

哥德尔不完备定理

皮亚诺算术

含有以下符号

  1. 常数 0 0 0
  2. 后继符号$ S \ (1=S(0),2=S(S(0)))$
  3. 加法符号 ( + ) (+) (+),乘法符号 ( ⋅ ) (\cdot) ()
  4. 逻辑运算 ∧ , ∨ , ¬ \land,\lor,\neg ,,¬
  5. 全称量词 ∀ , ∃ \forall,\exist ,
  6. 二元运算 ≤ , = \le,= ,=
  7. 括号 ( ) () ()
  8. 变量符号   x , x ∗ , x ∗ ∗ \ x,x^*,x^{**}  x,x,x∗∗

例子:

  1. “x整除y” DIVIDEX(x,y)

    ( ∃ z ) ( y = x z ) (\exist z)(y=xz) (z)(y=xz)

  2. “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=1x=y¬DIVIDE(x,y)

  3. 哥德巴赫猜想

    ( ∀ 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)(x2)(y)(z)(2x=y+zPRIME(y)PRIME(z))

练习

  1. 质数有无穷多个

    ( ∀ N ) ( ∃ x ) ( x > N ∧ P R I M E ( x ) ) (\forall N)(\exist x)(x>N \land PRIME(x)) (N)(x)(x>NPRIME(x))

  2. 有无穷多对素数,他们相差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))

  3. 0不是任何自然数的后继

    ( ∀ x ∈ N ) ( S ( x ) ≠ 0 ) (\forall x\in N)(S(x)\ne 0) (xN)(S(x)=0)

  4. 两个数相等当且仅当他们的后继相等

    ( ∀ 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 3x22xyy2z7=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有一个整数解。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值