2 计算模型与复杂性类 | 密码协议课程笔记
作者:互联网
1 计算模型1:图灵机
1.1 图灵机的定义
图灵机是一个简洁的计算模型。
我们可以将图灵机视为拥有一个无限长、可以双向移动的工作带的有限自动机。在初始阶段,工作带开始的几个格里包含输入,其余的为空白。在计算过程中的每个时刻,机器观察到它当前的控制状态以及它读写头所指位置的符号,根据此它们作出相应的动作,例如:擦掉工作带上的当前符号,写上新的符号;改变当前控制状态;将读写头向左或向右移动等。
工作带 由单向无限延伸的许多单元组成,每个单元能够存储被称作及其的字母表的有限集 \(\Gamma\) 中的一个符号。每个带均有一个带头。一个图灵机在给定的时候就应该给定其包含多少条工作带,根据工作带的数量,图灵机 可以分为单带图灵机和多带图灵机。
有限操作/规则集 图灵机的有限种状态 \(Q\),机器有一个“寄存器”用于存储机器当前处于Q中的何种“状态”。状态决定了下一个计算步骤中要做的事,包括:
(1) 读取带头所在的存储单元的符号;
(2) 修改带头所在单元的符号;
(3) 修改寄存器的状态;
(4) 将每个带头向左或向右移动一个单元,或保持不动。
图灵机的形式定义
一个图灵机可由一个七元组 \((Q,\Sigma, \Gamma, \delta, q_0, q_{acc}, q_{rej})\) 表示,其中:
\(Q\):有限个状态的集合;
\(\Sigma\):输入字符集;
\(\Gamma\):工作带字符集(\(\Sigma\subseteq\Gamma\)),包括空白符;
\(\delta\):转移函数;
\(q_0\):\(Q\)中初始状态;
\(q_{acc}\):\(Q\)中接收状态;
\(q_{rej}\):\(Q\)中拒绝状态。
图灵机最终有三种状态:
(1)抵达接受状态\(q_{acc}\),停机并输出;
(2)抵达拒绝状态\(q_{rej}\),停机并输出;
(3)控制状态死循环。
Church-Turing 命题
任何可以计算的函数都可以被图灵机计算。
泛 Church-Turing 命题
任何可以在多项式时间内计算的函数都可以被图灵机在多项式时间计算。
定理:
对任意 \(f:\{0,1\}^*\rightarrow\{0,1\}\) 和时间可构造的[1]\(T:\mathbb{N}\rightarrow\mathbb{N}\),如果 \(f\) 是字母表 \(\Gamma\) 上的图灵机 \(M\) 在 \(T(n)\) 时间内可计算函数,则 \(f\) 也能被字母表 \(\{0,1,\square\)[2],\(\rhd\)[3]\(\}\) 上的一个图灵机 \(M'\) 在 \(4log\lvert \Gamma\rvert T(n)\) 时间内计算。
定理:多带图灵机与单带图灵机等价
定义单带图灵机是仅使用一条读写带的图灵机,他将这条带既用作输入带,也用作工作带和输出带。对任意 \(f:\{0,1\}^*\rightarrow\{0,1\}\) 和时间可构造的 \(T:\mathbb{N}\rightarrow\mathbb{N}\),如果 \(f\) 是 \(k\) 带图灵机在 \(T(n)\) 时间内可计算的,那么\(f\) 也能够被一个单带图灵机 \(M'\) 在 \(5kT(n^2)\) 时间内计算。
1.2 图灵机的运行时间
定义:图灵机的运行时间
定义图灵机\(M\)的运行时间为函数 \(t_M(n)\):
\(t_M(n)\) = 在所有长度为 \(n\) 的输入上 \(M\) 所执行的最大步数。
关于图灵机的运行时间:
(1)最差复杂性度量;
(2)渐进意义的时间度量;
(3)独立于具体实现。
1.3 通用图灵机
图灵机可以表示成位串的形式。为了方便讨论,我们一般考虑满足下面三条性质的编码方式:
(1)任何一个图灵机都可以被编码成一个 \(\{0,1\}\) 串;
(2)任何 \(\{0,1\}\) 串都可以表示某个图灵机;
(3)任何一个图灵机都有无数个 \(\{0,1\}\) 串表示
图灵机作为一个计算模型,与一般的计算模型最大的区别有以下两点:
(1)图灵机拥有至少一条无限长的工作(记忆)带;
(2)存在高效通用图灵机,它能以其他图灵机的位串表示作为输入,模拟其他图灵机工作,并且所需要的计算时间不会比原来的图灵机所需要的时间多太多。
定义:高效通用图灵机
存在图灵机 \(U\) 使得 \(U(x,\alpha)=M_{\alpha}(x)\) 对于任意 \(x,\alpha\in\{0,1\}^*\) 成立。其中 \(M_{\alpha}(x)\) 是 \(\alpha\) 表示的图灵机。并且如果 \(M_{\alpha}(x)\) 在输入 \(x\) 上至多运行 \(T\) 步后就停机,则 \(U(x,\alpha)\) 将在 \(CTlogT\) 步之内停机,其中 \(C\) 是一个独立于 \(\lvert x\rvert\) 而仅依赖于 \(M_{\alpha}(x)\) 的字母表的大小,带的数量与状态的数量的常数。
1.4 不可计算性
证明:定理:
存在不能被任意图灵机计算的函数 \(UC:\{0,1\}^*\rightarrow\{0,1\}\)
定义函数 \(UC\) 如下:
\[UC(\alpha)=\left\{ \begin{array}{rcl} 0 & & M_\alpha(\alpha) =1, \forall \alpha\in\{0,1\}^*\\ 1 & & othes\\ \end{array}\right. \]我们假定 \(UC\) 是可计算的,那么存在图灵机 \(M\) 使得,
\[M(\alpha)=UC(\alpha), \forall \alpha\in\{0,1\}^* \]特别地,我们有
\[M(\llcorner M\lrcorner)=UC(\llcorner M\lrcorner) \]但是这是不可能的,因为由 \(UC\) 的定义,我们有:
\[UC(\llcorner M\lrcorner) = 1\Leftrightarrow M(\llcorner M\lrcorner)\neq 1 \]因此,存在不能被任意图灵机计算的函数 \(UC:\{0,1\}^*\rightarrow\{0,1\}\)。
证毕!
与之类似的思想,事实上我们有:对任意可靠的公理和推理规则的系统 \(S\),必存在正确的数论结论不能在 \(S\) 中被证明。
1.5 可判定语言
1928年,David Hillbert提出问题:数学是算法可判定的吗?是否所有真数学命题都是可以被证明的(注意到,所有能被证明的定理都能被算法证明——穷搜索)?
1931年,Kurt Godel 给出否定的答案,即:存在某些真命题是不能被证明的。
1935/1936年,Alonzo Church 和 Alan Turing 给出了 Godel 不完备定理的新证明,我们会在后面给出具体证明过程。
定义:可判定语言
对于一个语言/集合 \(A\),如果存在一个图灵机 \(M\) 满足:
(1)给定 \(x\in A\) 作为输入,\(M\) 停机输出接受;
(2)给定 \(x\notin A\) 作为输入,\(M\)停机输出拒绝。
那么我们说 \(A\) 是可判定的。
下面给出 Godel 不完备定理的不同的证明:存在一个不可判定性语言。
证明:Godel 不完备定理的不同的证明:存在一个不可判定性语言
若 \(A_{TM} =\{\langle M,w\rangle: M\) 作为图灵机接受 \(w\}\),则 \(A_{TM}\) 是不可判定的[4]。
假定 \(A_{TM}\) 可判定,则一定存在图灵机 \(H\) 可以判定\(A_{TM}\)(这个图灵机最强的地方在于:它可以判断是否停机。),如下图所示:
因此,当 \(w =\langle M\rangle\) 时也成立,如下图所示:
下面,我们定义新的图灵机 \(H'\),如下图所示:
接下来,利用上面的图灵机 \(H'\) 构造新的图灵机 \(D\),如下图所示:
如果图灵机\(D\)的输入是\(D\)本身,即:
矛盾!因此 \(A_{TM}\) 不可判定!!
证毕!
2 计算模型2:线路
2.1 线路
为了简化图灵机的分析,我们转而分析电路/线路(直觉上线路比图灵机简单,但实际上并不清楚。)
线路的示意图如上图所示,有几点需要注意的:
(1)线路的大小定义为中间节点的个数;
(2)线路的输入规模是固定的,但是图灵机的输入应该可以处理各种情况;
(3)可以证明,布尔电路的可计算问题使用 \(\vee, \wedge, \neg\) 就已经够了;当然也可以将 \(\vee, \wedge, \neg\) 三个门转化为 \(NAND\) 一个门的电路,但是会有膨胀。
定义:线路(簇)
一个线路可以被定义成一个带有建言的确定性图灵机(在每个输入长度上有一个建议 \(a_n\))。
一个多项式规模的线路簇指的是一个建言长度是多项式长的多项式时间确定性图灵机。
线路簇相当于带有 advice /建言的图灵机(non-uniform /非一致性图灵机),其示意图如下图所示:
- 线路簇具有比图灵机更强大的计算能力:单个图灵机要解决所有大小的输入问题,而线路簇中的每个固定的线路秩序应付固定长度的输入。(定义给我们的直觉,线路允许不同的输入使用不同的算法,计算能力要比解决任何规模的实例的一致性的图灵机更强大。)
- \(a_n\) 为输入节点为 \(n\) 的线路的描述;
- 给定长度为 \(n\) 的输入,\(R\) 模拟线路 \(a_n\) 的计算;
- 对固定长度的输入,\(R\) 使用 advice/建言是相同的;
- 如果 advice \(a_i\) 均一致,则 non-uniform/非一致性图灵机退化为 uniform/一致性图灵机;
- 实际上,advice 的寻找是未知的。
3 计算复杂性类
3.1 复杂性类 \(\mathbf{P}\)
复杂性类 \(\mathbf{P}\)
\[M(x)=1\Leftrightarrow x\in L \]
我们称一个语言 \(L\subseteq\{0,1\}^*\) 属于复杂性类 \(\mathbf{P}\),当且仅当存在多项式运行时间的确定性图灵机 \(M\) 使得对于任意 \(x\in \{0,1\}^*\) 有,
3.2 复杂性类 \(\mathbf{NP}\)
复杂性类 \(\mathbf{NP}\)
\[\exists\ u\in \{0,1\}^{p(\lvert x\rvert)},\ M(x,u)=1 \Leftrightarrow x\in L \]
我们称一个语言 \(L\subseteq\{0,1\}^*\) 属于复杂性类\(\mathbf{NP}\),当且仅当存在一个多项式 \(p:\N\rightarrow\N\) 和多项式运行时间的图灵机 \(M\),使得对于任意 \(x\in \{0,1\}^*\) 有,额外的,如果 \(x\in L\) 和 \(u\in \{0,1\}^{p(\lvert x\rvert)}\) 满足 \(M(x,u)=1\),则称\(u\) 是 \(x\) 的witness(证据)。
定理:\(\mathbf{P}\subseteq\mathbf{NP}\)
非确定性图灵机相比较确定性图灵机,其拥有两个转移函数 \(\delta_0\),\(\delta_1\) 和一个特殊状态 \(q_{accept}\),其在每一步转移函数时可以随机的选择一个,如果存在一种选用序列使得 \(M\) 进入状态 \(q_{accept}\),则该图灵机输出1,否则输出0。
\[M(x)=1\Leftrightarrow x\in L \]复杂性类 \(\mathbf{NP}\) 的等价定义
我们称一个语言 \(L\subseteq\{0,1\}^*\) 属于复杂性类 \(\mathbf{NP}\),当且仅当存在多项式运行时间的非确定性图灵机 \(M\) 使得对于任意 $ x\in {0,1}^*$,有:
- 合数语言/集合 COMPOSITE 属于复杂性类 \(\mathbf{P}\);
- 素数语言/集合 PRIMES 于 1975 年由 Vaughan 和 Pratt 证明属于复杂性类 \(\mathbf{NP}\);
- 素数语言/集合 PRIMES 于 2002 年由 Manindra Agrawal、Nitin Sanena 和 Neeraj Kayal 证明属于复杂性类 \(\mathbf{P}\)。
3.3 复杂性类 \(\mathbf{BPP}\)
概率图灵机:类似于不确定图灵机,概率图灵机也是有两个转移函数 \(\delta_0\),\(\delta_1\) 的图灵机。概率图灵机在输入 \(x\) 上运行时,每个步骤以 \(\frac{1}{2}\) 的概率选取转移函数 \(\delta_0\),以 \(\frac{1}{2}\) 的概率选取转移函数 \(\delta_1\)。每一步的选择均独立于之前所做的所有选择。
概率图灵机只能输出1或者0。概率图灵机在输入 \(x\) 上运行结束时的输出结果是一个随机变量,记为 \(M(x)\)。对于函数 \(T:\mathbb{N}\rightarrow \mathbb{N}\),如果概率图灵机在输入 \(x\) 上运行时无论 \(M\) 做出何种随机选择,他都在 \(T(\lvert x\rvert)\) 个步骤内停机,则称 \(M\) 的运行时间是 \(T(n)\)。
某种程度上,我们可以把概率图灵机理解成拥有一条随机带的确定性图灵机。
定义:复杂性类 \(\mathbf{BPP}\)
我们称一个语言 \(L\subseteq\{0,1\}^*\) 属于复杂性类 \(\mathbf{BPP}\),当且仅当存在多项式运行时间的概率图灵机 \(M\) 使得:
(1) 对于 \(\forall x\in L\),\(Pr_r[M(x,r)=1]\geq \frac{2}{3}\);
(2) 对于 \(\forall x\notin L\),\(Pr_r[M(x,r)=1]]<\frac{1}{3}\)。
显而易见有 \(\mathbf{P}\subseteq \mathbf{BPP}\),但是否有 \(\mathbf{P}=\mathbf{BPP}\) 仍未有定论。
定义:复杂性类 \(\mathbf{BPP}\) 的强版本
我们称一个语言 \(L\subseteq\{0,1\}^*\) 属于复杂性类\(\mathbf{BPP}\),当且仅当对于任意的多项式 \(p(n)\),存在多项式运行时间的概率图灵机 \(M\) 使得:
(1) 对于任意 \(x\in L\),\(Pr_r[M(x,r)=1]\geq 1-\frac{1}{2^{p(n)}}\);
(2) 对于任意 \(x\notin L\),\(Pr_r[M(x,r)=1]< \frac{1}{2^{p(n)}}\)。
证明:定理:
上述复杂性类 \(\mathbf{BPP}\) 的强版本与弱版本两种定义等价,即:属于弱 \(\mathbf{BPP}\) 类的语言必属于强 \(\mathbf{BPP}\) 类,反之亦然。
由上述定义显然有,属于强版本 \(\mathbf{BPP}\) 类的语言必属于弱版本 \(\mathbf{BPP}\) 类。
下证属于弱版本 \(\mathbf{BPP}\) 类的语言必属于强版本 \(\mathbf{BPP}\) 类。
假定存在概率多项式时间图灵机 \(M\),使得对于任意 \(x\in L\),有:
对于任意多项式 \(p(n)\),构造概率图灵机 \(M'\) 如下:
在给定的输入 \(x\in L\)上,重复模拟运行 \(M(x,r)\ \ k=288p(n)\) 次,得到 \(k\) 个输出,
若这 \(k\) 个输出中较多的为 \(1\),则 \(M'\) 输出 \(1\),反之 \(M'\) 输出 \(0\)。
显然 \(M'\) 调用 \(p(n)\) 次 \(M\),因此 \(M'\) 为多项式时间概率图灵机。
接下来,我们估计\(M'\)输出正确/错误的概率。
为了方便分析,我们定义随机变量 \(X_i, 1\geq i\geq k\)。如果 \(M_i(x,r)=1\),则 \(X_i = 1\),否则 \(X_i = 0\)。
注意,\(X_i\) 两两独立,且 \(E[X_i]=Pr[X_i=1]\geq p = \frac{2}{3}\)。
由切尔诺夫界,对于充分小的 \(\delta\),我们有:
令 \(\delta = 1/12\),则有:
\[E[X]=\frac{1}{k}\sum_{i=1}^{k}X_i\geq (1-\delta)p=\frac{11}{18}>\frac{1}{2} \]因此,\(M'\) 输出错误的概率不超过切尔诺夫界给出的概率,即不超过
\[e^{-\dfrac{\dfrac{2}{3}\times288p(n)}{4\times12^2}}\leq 2^{-p(n)} \]因此,我们有
\[Pr_r[M(x,r)=1]<\frac{1}{2^{p(n)}},\forall x\notin L \]\[Pr_r[M(x,r)=1]\geq 1-\dfrac{1}{2^{p(n)}},\forall x\in L \] 因此,若语言L属于弱版本 \(\mathbf{BPP}\) 类,则它必属于强版本 \(\mathbf{BPP}\) 类。
综上所述:强版本 \(\mathbf{BPP}\) 定义与弱版本 \(\mathbf{BPP}\) 定义等价。
证毕!
证明:\(\mathbf{BPP}\) 的错率归约
给定一个语言 \(L\subseteq\{0,1\}^*\),假设存在多项式时间的概率图灵机 \(M\) 使得 \(Pr[M(x,r)=1]\geq \frac{1}{2}+\lvert x\rvert^{-c}\),对任意的输入 \(x\in \{0,1\}^*\) 成立。那么对任意的 \(d>0\),存在多项式时间的概率图灵机 \(M'\) 使得 \(Pr[M'(x,r)=1]\geq 1-2^{-\lvert x\rvert^{d}}\) 成立。
仿照上个定理的证明,假定存在概率多项式时间图灵机 \(M\),使得对于
\[\forall\ x\in L,\ Pr[M(x,r)=1]\geq \dfrac{1}{2}+\lvert x\rvert^{-c} \] 构造概率图灵机 \(M'\) 如下:
在给定的输入 \(x\in \{0,1\}^*\) 上,重复模拟运行 \(M(x,r)\) 共 \(k=8\lvert x\rvert^{2c+d}\) 次,得到 \(k\) 个输出,
若这 \(k\) 个输出中较多的为 \(1\),则 \(M'\) 输出 \(1\),反之 \(M'\) 输出 \(0\)。
显然 \(M'\) 调用多项式次 \(M\),因此 \(M'\) 为多项式时间概率图灵机。
接下来,我们估计\(M'\)输出正确/错误的概率。
为了方便分析,我们定义随机变量 \(X_i, 1\geq i\geq k\)。如果 \(M_i(x,r)=1\),则 \(X_i = 1\),否则 \(X_i = 0\)。
注意,\(X_i\) 两两独立,且 \(E[X_i]=Pr[X_i=1]\geq p = \frac{1}{2}+\lvert x\rvert^{-c}\)。
由切尔诺夫界,对于充分小的 \(\delta\),我们有:
令 \(\delta=\dfrac{\lvert x\rvert^{-c}}{2}\),则有:
\[E[X]=\dfrac{1}{k}\sum_{i=1}^{k}X_i\geq (1-\delta)p>\dfrac{1}{2} \] 因此,\(M'\) 输出错误的概率不超过切尔诺夫界给出的概率,即不超过 \(2^{-\lvert x\rvert^{d}}\)。
证毕!
3.4 \(\mathbf{NP}\)-完全问题
定义:多项式时间归约
如果存在一个多项式时间的图灵机 \(R\),给定 \(L\) 中的一个实例 \(x\in L\) 作为输入,\(R\) 输出 \(L'\) 中一个实例 \(y\),使得 \(x\in L\) 当且仅当 \(y\in L'\),则称在多项式时间内,语言 \(L\) 可以归约到 \(L'\)。
下面给出一个更加严谨、形式化的定义。
定义:多项式时间 Karp 归约
语言 \(L\subseteq\{0,1\}^*\) 多项式时间可以 Karp 归约到语言 \(L'\subseteq\{0,1\}^*\),记为 \(L\leq_p L'\),如果存在多项式时间可计算函数 \(f:\{0,1\}^*\rightarrow \{0,1\}^*\) 使得对任意的 \(x\in \{0,1\}^*\) 均有 \(x\in L\) 当且仅当 \(f(x)\in L'\)。
多项式时间 Karp 归约也可以简称为多项式时间归约。
归约的意义:\(L\) 能归约到 \(L'\) 意味着 \(L\) 的成员归属判定问题不比 \(L'\) 难,换句话说,如果我们能解决 \(L'\),则我们同样能解决 \(L\)。
归约的方向很重要。然而对于某些语言,双向可归约,如 \(L\) 可归约到 \(L'\) 并且 \(L'\) 可归约到 \(L\),这意味着 \(L\) 和 \(L'\) 是一样难的。
Cook-Levin定理
任何 \(L\in \mathbf{NP}\) 都可以归约到 SAT。
Cook-Levin 定理说明所有的 \(\mathbf{NP}\) 语言都不难于 SAT,并且 SAT 本身属于 \(\mathbf{NP}\),所以它必是 \(\mathbf{NP}\) 中最难的;若 \(SAT\in \mathbf{P}\),那么 \(\mathbf{P} = \mathbf{NP}\)。
定义:\(\mathbf{NP}\)-难(\(\mathbf{NP}\)-hard)和 \(\mathbf{NP}\)-完全(\(\mathbf{NP}\)-complete)
对于语言 \(L,L'\subseteq\{0,1\}^*\)
(1) 如果 \(L\leq_p L'\),对 \(\forall\ L\in \mathbf{NP}\) 均成立,则称 \(L'\) 是\(\mathbf{NP}\)-难的;
(2) 如果 \(L\leq_p L'\),且 \(L'\in \mathbf{NP}\),对 \(\forall\ L\in \mathbf{NP}\) 均成立,则称 \(L'\) 是 \(\np\)-完全的。
- Cook-Levin 定理表明,SAT是 \(\mathbf{NP}\)-完全的。
- 补充几个 \(\mathbf{NP}\) 完全问题:SAT问题;3SAT问题;独立集问题;子集和问题;0/1整数规划问题。
- 对于图同构问题和因数问题,既没有结果表明它们属于 \(\mathbf{P}\) 问题,也没有结果表明它们属于 \(\mathbf{NP}\)-完全问题。
3.6 \(\mathbf{P/poly}\) 类
定义:\(\mathbf{P/poly}\) 类
我们称一个语言 \(L\subseteq\{0,1\}^*\) 是属于\(\mathbf{P/poly}\) 类的,如果存在多项式大小的线路簇可以判定它。
在 \(\mathbf{P/poly}\) 中,\(\mathbf{P}\) 指的是多项式时间图灵机可以判定,\(\mathbf{poly}\) 指的是建言/advice的长度,一定程度上是线路的大小。
显而易见的:\(\mathbf{P}\subseteq \mathbf{P/poly}\)。
证明:定理
\(\mathbf{BPP}\subseteq \mathbf{P/poly}\)
我们证明 \(\mathbf{BPP}\) 中必含有一个序列可以判断 \(\mathbf{P/poly}\) 的属性问题,但是实际上没有办法显示构造序列,所以是存在性证明。
主要的原理是: \(\mathbf{P/poly}\) 可以用带advice的图灵机解决,且判定 \(\mathbf{BPP}\) 语言的图灵机必含好的(可以做advice的)随机带。
假定有 \(L\in \mathbf{BPP}\),对任意的多项式 \(p(n)\),存在概率多项式时间的图灵机\(M\) 可以判定 \(\mathbf{BPP}\) 类。
固定 \(n\),\(x\) 有 \(2^n\) 中情况,记作 \(x_1,x_2,...,x_{2^n}\),我们有:
这意味着必存在好的随机带必然不犯错。即必定存在 \(r_{i_n}\),使得\(M(r_{i_n},\cdot)\) 永远不犯错。
因为对于每一个 \(n\),都有一个这样的电路,因此线路簇 \(\{M(r_{i_n},\cdot)\}\) 存在,该线路簇可以判定 \(L\)。
因此,
因此,
\[\mathbf{BPP}\subseteq \mathbf{P/poly} \] 证毕!
这个证明有一个很了不起的地方,它使用的是存在性证明的方法,这在密码学中是很稀少的。同时证明并没有把 \(M\) 当作黑盒去处理,而是分析其结构,这也很受启发。
函数 \(T:\mathbb{N}\rightarrow \mathbb{N},T(n)\geq n\) 被称作是时间可构造的,如果存在一个时间 \(T(n)\) 内计算函数 $x\mapsto\llcorner T(\lvert x\rvert)\lrcorner $ 的图灵机M,其中 \(\llcorner T(\lvert x\rvert)\lrcorner\) 表示 \(T(\lvert x\rvert)\) 的二进制表示。我们常见的 \(n,nlogn,n^2,2^n\) 等均是时间可构造的。 ↩︎
空白符 ↩︎
开始符号 ↩︎
构造通用图灵机 \(U\) 模拟 \(M\) 在输入 \(w\) 上的计算:如果 \(M\) 接受 \(w\),\(U\) 接受;如果 \(M\) 拒绝 \(w\),\(U\) 拒绝;如果 \(M\) 死循环,\(U\) 死循环。注意到,实际上 \(U\) 不能判定 \(A_{TM}\) ,因为它可能不会停机。 ↩︎
标签:mathbf,rvert,多项式,复杂性,笔记,BPP,课程,图灵机,NP 来源: https://www.cnblogs.com/luo-atopos/p/16640433.html