计算复杂性理论(傅育熙) 第一章 时间复杂度

计算复杂性理论(傅育熙)

计算理论

  • Turing Machine(2023-09-11)
  • Universal Turing Machine
  • Speedup Theorem
  • Time Complexity Class
  • Verification Problem
  • Time Hierarchy Theorem
  • Gap Theorem

2023-09-11

1.1 图灵机 Turing Machine

图灵机

一台 k-带图灵机(TM)M 有 k-条带子。第一条带子称为输入带,用来存放输入数据,输入带是只读带。其余 k−1 条带子是工作带,既可以从工作带上读信息,也可以往工作带上写内容。图灵机的输出写在最后一条工作带(即第 k 条带)上。

在这里插入图片描述
在这里插入图片描述

图灵机例子

在这里插入图片描述
在这里插入图片描述
图灵机是用来解决问题的,那么如何定义图灵机解决了一个问题?

问题

问题就是函数
A function f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^* \rightarrow\{0,1\}^* f:{0,1}{0,1} is a problem.

  • M \mathbb{M} M computes or solves f f f if M ( x ) = f ( x ) \mathbb{M}(x)=f(x) M(x)=f(x) for every x ∈ { 0 , 1 } ∗ x \in\{0,1\}^* x{0,1}.
  • " M ( x ) = y \mathbb{M}(x)=y M(x)=y " stands for " M \mathbb{M} M halts with y y y written on its output tape if its input tape is preloaded with x x x ".
    A function d : { 0 , 1 } ∗ → { 0 , 1 } d:\{0,1\}^* \rightarrow\{0,1\} d:{0,1}{0,1} is a decision problem.
  • M \mathbb{M} M decides d d d if M \mathbb{M} M computes d d d.
    A set L ⊆ { 0 , 1 } ∗ L \subseteq\{0,1\}^* L{0,1} is a language.
    M \mathbb{M} M accepts L L L if M \mathbb{M} M decides the characteristic function L ( x ) = { 1 ,  if  x ∈ L , 0 ,  if  x ∉ L . L(x)= \begin{cases}1, & \text { if } x \in L, \\ 0, & \text { if } x \notin L .\end{cases} L(x)={1,0, if xL, if x/L.
    对什么是问题做形式化描述。先看一个例子: 对带权重的有向图, 求总权重最小的哈密尔顿回路的权重。假定权重为非 0 自然数, 用输出 0 表示没有哈密尔顿回路。因为问题实例 (即所有的带权重的有向图) 均为有限对象, 可以用 0-1 串对其进行编码,所有的输出值可以用二进制表示,所以这个问题本质上是一个(有限) 0-1 串到 (有限)0-1 串的函数。推而广之, 一个函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^* \rightarrow\{0,1\}^* f:{0,1}{0,1} 就是一个问题, 反之亦然。用 “ M ( x ) = y \mathbb{M}(x)=y M(x)=y ” 表示 “ M ( x ) ↓ \mathbb{M}(x) \downarrow M(x) 且计算终止时输出带上的内容是 y y y ”, 在此种情况下, 称 y y y M ( x ) \mathbb{M}(x) M(x) 的计算结果。若对任意输入 x ∈ { 0 , 1 } ∗ x \in\{0,1\}^* x{0,1},有 M ( x ) = f ( x ) \mathbb{M}(x)=f(x) M(x)=f(x), 称 M \mathbb{M} M 计算 f f f, 或 M \mathbb{M} M 解决问题 f f f 。一个判定问题是一个特殊的函数 d : { 0 , 1 } ∗ → { 0 , 1 } d:\{0,1\}^* \rightarrow\{0,1\} d:{0,1}{0,1}, 其值域为布尔集 { 0 , 1 } \{0,1\} {0,1} 。若 M \mathbb{M} M 解决 d d d, 亦称 M \mathbb{M} M 判定 d d d 。称 { 0 , 1 } ∗ \{0,1\}^* {0,1} 的一个子集 L L L 为语言。若图灵机 M \mathbb{M} M 判定 L L L 的特征函数

L ( x ) = { 1 ,  若  x ∈ L , 0 ,  若  x ∉ L , L(x)= \begin{cases}1, & \text { 若 } x \in L, \\ 0, & \text { 若 } x \notin L,\end{cases} L(x)={1,0,  xL,  x/L,

M \mathbb{M} M 接受语言 L L L, 或称 L L L 为可判定的。我们常等价语言和相应的判定问题,

问题

问题本质上是一个(有限) 0-1 串到 (有限)0-1 串的函数。推而广之, 一个函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^* \rightarrow\{0,1\}^* f:{0,1}{0,1} 就是一个问题

图灵机解决问题

用 “ M ( x ) = y \mathbb{M}(x)=y M(x)=y ” 表示 “ M ( x ) ↓ \mathbb{M}(x) \downarrow M(x) 且计算终止时输出带上的内容是 y y y ”, 在此种情况下, 称 y y y M ( x ) \mathbb{M}(x) M(x) 的计算结果。若对任意输入 x ∈ { 0 , 1 } ∗ x \in\{0,1\}^* x{0,1},有 M ( x ) = f ( x ) \mathbb{M}(x)=f(x) M(x)=f(x), 称 M \mathbb{M} M 计算 f f f, 或 M \mathbb{M} M 解决问题 f f f

判定问题

一个判定问题是一个特殊的函数 d : { 0 , 1 } ∗ → { 0 , 1 } d:\{0,1\}^* \rightarrow\{0,1\} d:{0,1}{0,1}, 其值域为布尔集 { 0 , 1 } \{0,1\} {0,1}

图灵机判定了判定问题

M \mathbb{M} M 解决 d d d, 亦称 M \mathbb{M} M 判定 d d d

语言L

!!!判定问题常常等同等效得用一个语言来表示,语言L就是01串的一个子集
比如说我们刚刚说的那个哈密路回路问题, L L L就是所有包含了哈密顿回路的图,语言问题和判定问题是等价的

若图灵机 M \mathbb{M} M 判定 L L L 的特征函数
L ( x ) = { 1 ,  若  x ∈ L , 0 ,  若  x ∉ L , L(x)= \begin{cases}1, & \text { 若 } x \in L, \\ 0, & \text { 若 } x \notin L,\end{cases} L(x)={1,0,  xL,  x/L,

M \mathbb{M} M 接受语言 L L L, 或称 L L L 为可判定的。我们常等价语言和相应的判定问题,

时间函数 T ( n ) T(n) T(n)

Suppose T : N → N T: \mathbf{N} \rightarrow \mathbf{N} T:NN and M \mathbb{M} M computes the problem f f f.
We say that M \mathbb{M} M computes f f f in T ( n ) T(n) T(n)-time if its computation on every input x x x requires at most T ( ∣ x ∣ ) T(|x|) T(x) steps.

经常将一个时间函数记为 T ( n ) T(n) T(n),而非 T ( x ) T(x) T(x) T ( ∣ x ∣ ) T(|x|) T(x),其中 n n n 强调是输入串的长度。

所有的时间函数 T ( n ) T(n) T(n) 都必须满足不等式 T ( n ) ≥ n T(n) \geq n T(n)n

1.2 时间可构造函数

时间可构造:

定义 1.3. 若有图灵机在 O ( T ( n ) ) O(T(n)) O(T(n)) 时间内计算函数 1 n ↦ ⌞ T ( n ) ⌟ 1^n \mapsto\llcorner T(n)\lrcorner 1nT(n), 称 T ( n ) T(n) T(n) 是时间可构造的。
(有图灵机可以计算时间复杂度,而且时间复杂度不是很怪,用 O ( T ( n ) ) O(T(n)) O(T(n)) 就可以算出来)

完全时间可构造

定义 1.4. 若有图灵机在输入 1 n 1^n 1n 上准确地计算了 T ( n ) T(n) T(n) 步后停机, 称 T ( n ) T(n) T(n) 是完全时间可构造的。

(完全时间可构造比时间可构造强(课后可证明)
定义时间可构造的意义:用图灵机实现 在某些运行太长的输入上叫停 两台图灵机并行计算)

让图灵机 M \mathbb{M} M 计算 T ( n ) T(n) T(n)

通过将 图灵机 M \mathbb{M} M 和 时钟图灵机 T \mathbb{T} T 作硬连接, 强迫 M \mathbb{M} M T ( n ) T(n) T(n) 步或 O ( T ( n ) ) O(T(n)) O(T(n)) 步内终止

模型无关性:一个问题是不是可计算是模型无关的
一个模型里面一个问题多项式时间可解,另一个模型里一个问题也是多项式时间可解
(但无法证明)
Complexity theory ought to be model independent.
Variants of Turing Machines are equivalent to the k k k-tape Turing Machines in the sense that they can simulate each other with polynomial overhead.
尽管我们用的是图灵机 但是用在哪个机子里都是一样(我们在计算复杂性里面关注的都是图灵完备的模型)

2023-09-14

Oblivious Turing Machine

任何时候读写头位置只依赖于输入长度不依赖于输入内容

Church-Turing Thesis

Every physically realizable computing device can be simulated by a Turing Machine
物理上可实现的最厉害的计算就是图灵机计算(我们只讨论可计算性,不可证)(和电子计算机也等价)

1.3 通用图灵机 Universal Turing Machine

通用图灵机:可以计算你想让它算的任何事情,只要那件事情是可计算的
因为图灵机在语法上是有限对象 所以可以被二进制编码

图灵机编码

不同的图灵机有不同的编码
有些图灵机事实上是相同的 但编码不一样 因此我们可以说每台图灵机对应无限多个编码(无限多个和它行为一样的图灵机)
有些01串不是图灵机编码,所有不是图灵机编码的01串解释为某个特定的图灵机编码

我们用 ⌞ M ⌟ \llcorner\mathbb{M}\lrcorner M 表示图灵机 M \mathbb{M} M 的二进制编码,用 M α \mathbb{M}_\alpha Mα 表示二进制编码为 α \alpha α 的那台图灵机。

对于图灵机编码使得我们可以枚举图灵机

自然数集合 N \mathbf{N} N 和 0-1 串集合之间的一一对应函数可用程序实现。利用此一一对应程序可给出图灵机的一个有效枚举:
M 0 , M 1 , … , M i , … \mathbb{M}_0, \mathbb{M}_1, \ldots, \mathbb{M}_i, \ldots M0,M1,,Mi,

i i i 为图灵机 M i \mathbb{M}_i Mi 的下标或哥德尔编码。设 ϕ i \phi_i ϕi M i \mathbb{M}_i Mi 所计算的函数, 由 (1.3.2)可得图灵机可计算函数的一个枚举
ϕ 0 , ϕ 1 , … , ϕ i , …  。  \phi_0, \phi_1, \ldots, \phi_i, \ldots \text { 。 } ϕ0,ϕ1,,ϕi,  

这里, ϕ i \phi_i ϕi 为如下定义的函数:
ϕ i ( x ) =  def  { y ,  若  M i ( x ) = y , ↑ ,  若  M i ( x ) ↑ 。 \phi_i(x) \stackrel{\text { def }}{=} \begin{cases}y, & \text { 若 } \mathbb{M}_i(x)=y, \\ \uparrow, & \text { 若 } \mathbb{M}_i(x) \uparrow 。\end{cases} ϕi(x)= def {y,,  Mi(x)=y,  Mi(x)

偏函数与全函数

偏函数:对一部分输入都有定义
全函数:对所有输入都有定义
一般可计算函数是偏函数,可计算全函数是可计算函数的一部分

通用图灵机

既然已经选定了一个图灵机编码, 我们可以将一个二进制串理解成一个数据或一台图灵机。给定任意两个二进制串 α , x \alpha, x α,x, 我们可以模拟 M α \mathbb{M}_\alpha Mα 在输入 x x x上的计算。直观上这个模拟过程是有效的, 即有一台图灵机 U \mathbb{U} U, 满足
U ( α , x ) ≃ M α ( x ) 。 \mathbb{U}(\alpha, x) \simeq \mathbb{M}_\alpha(x) 。 U(α,x)Mα(x)

U \mathbb{U} U 为通用图灵机。在 1.3.4 中, 等价关系 ≃ \simeq 的定义如下: 若一边有定义,则另一边也有定义且两边相等; 若一边无定义, 则另一边也无定义。如果将一个程序语言视为一个计算模型的话, 那么用这个程序语言写的程序就是 “图灵机”, 用该程序语言写的该语言的解释器就是一台 “通用图灵机”。

定理 1.1 (枚举定理). 存在通用图灵机 U \mathbb{U} U, 对任意 α , x ∈ { 0 , 1 } ∗ \alpha, x \in\{0,1\}^* α,x{0,1}, 等式 U ( α , x ) ≃ \mathbb{U}(\alpha, x) \simeq U(α,x) M α ( x ) \mathbb{M}_\alpha(x) Mα(x) 成立。

定理 1.2. 存在通用图灵机 U \mathbb{U} U 和多项式 c c c. 对任意长度为 n n n 的输入串 x x x, 若 M α ( x ) \mathbb{M}_\alpha(x) Mα(x) T ( n ) T(n) T(n) 步内停机, 则 U ( α , x ) \mathbb{U}(\alpha, x) U(α,x) c ( ∣ α ∣ ) T ( n ) log ⁡ T ( n ) c(|\alpha|) T(n) \log T(n) c(α)T(n)logT(n) 步内停机。

1.4 对角线方法

不存在一段程序, 当输入一段程序 P \mathbb{P} P 和一个输入数据 x x x, 该程序能判定 P ( x ) \mathbb{P}(x) P(x) 的计算是否终止。这就是所谓的 “停机问题不可判定”。在这个推导里, 我们使用归约方法, 将问题 A \mathrm{A} A 有效归约到问题 H \mathrm{H} H

T I M E ( T ( n ) ) TIME(T(n)) TIME(T(n)) :
T I M E ( T ( n ) ) TIME(T(n)) TIME(T(n))是一个问题集合,一个问题在此集合中当且仅当该问题在 T ( n ) T(n) T(n) 的一个常数倍时间内可判定。一般地, T I M E ( T ( n ) ) TIME(T(n)) TIME(T(n)) 依赖于所用模型。若模型是所有双带图灵机, T I M E ( n ) TIME(n) TIME(n) 包含回文问题;若模型是具有单条读写带的图灵机,可以证明,回文问题不在 T I M E ( n ) TIME(n) TIME(n) 中,事实上,它在 T I M E ( n 2 ) TIME(n^2) TIME(n2)

可判定
L是一种语言,它是 { 0 , 1 } ∗ \{0,1\}^* {0,1} 的一个子集。
L是可判定的 当意思是你把x输入到M中,如果x在L里,那它就输出1,不然就输出0。
此时L是可判定问题。

M ( x ) M(x) M(x) 表示图灵机 M M M 的输入带预置了输入 x x x M ( x ) M(x) M(x) 会按相关指令计算。在计算的任何时刻 t t t M ( x ) M(x) M(x) 的格局 σ t σ_t σt 是一个 2 k 2k 2k-元组 ( q , κ 2 , . . . , κ k , h 1 , . . . , h k ) (q, κ_2,..., κ_k, h_1,...,h_k) (q,κ2,...,κk,h1,...,hk),其中 q 是时刻 t 时的机器状态,符号串 κ 2 , . . . , κ k κ_2,..., κ_k κ2,...,κk 分别是时刻 t 时 k − 1 k−1 k1 条工作带上的内容(非空的符号串),自然数 h 1 , . . . , h k h_1,...,h_k h1,...,hk 是时刻 t 时 k 个读写头的位置。格局 σ t σ_t σt 表示 M(x) 计算了 t 步后的系统参数。一步计算可表示成一个格局的迁移 σ t → σ t + 1 σ_t → σ_{t+1} σtσt+1。M(x) 从初始格局开始的格局迁移序列 σ 0 → σ 1 → . . . → σ t → . . . σ_0 → σ_1 → ... → σ_t → ... σ0σ1...σt...述了M(x) 的计算。若该计算终止,记为 M ( x ) ↓ M(x)↓ M(x);若该计算不终止,记为 M ( x ) ↑ M(x)↑ M(x)。若 M(x) 的计算终止于格局 σ T σ_T σT,用 σ 0 → σ 1 → . . . → σ T σ_0 → σ_1 → ... → σ_T σ0σ1...σT 表示其计算路径。

S ( n ) S(n) S(n) M \mathbb{M} M 的空间函数。

SPACE ⁡ ( S ( n ) ) \operatorname{SPACE}(S(n)) SPACE(S(n)) :
S : N → N S: \mathbf{N} \rightarrow \mathbf{N} S:NN, 且 L ⊆ { 0 , 1 } ∗ L \subseteq\{0,1\}^* L{0,1} 。若有常数 c c c 和判定语言 L L L 的图灵机 M \mathbb{M} M,当输入 x x x 时, M ( x ) \mathbb{M}(x) M(x) 计算时使用的工作带上的格子数不会超过 c S ( n ) c S(n) cS(n), 那么 L L L SPACE ⁡ ( S ( n ) ) \operatorname{SPACE}(S(n)) SPACE(S(n)) 中。称 S ( n ) S(n) S(n) M \mathbb{M} M 的空间函数。

可计算
称一个函数是图灵机可计算的,或该问题是图灵机可解的,当仅当有一台图灵机计算它。

2023-09-18

Message from Blum’s Speedup Theorem:
-We cannot define time complexity for problems.
-We can of course define time complexity for solutions.
With this remark we proceed to investigate time complexity class.
Blum定理告诉我们有些问题永远有更好的算法,因此我们没法定义问题的复杂性,只能去评估算法的复杂性,所以我们如何对问题进行分类,我们用的方法是看这个问题有什么样的算法。

一个复杂性类是一个模型无关的问题类。一个问题不管用什么模型,都在复杂性类里。一个问题有多项式时间算法,无论用什么模型,都有多项式时间算法。

时间复杂性类 Time Complexity Class

TIME ⁡ ( T ( n ) ) \operatorname{TIME}(T(n)) TIME(T(n))
Let T : N → N T: \mathbf{N} \rightarrow \mathbf{N} T:NN be a time function.
A decision problem L ⊆ { 0 , 1 } ∗ L \subseteq\{0,1\}^* L{0,1} is in TIME ⁡ ( T ( n ) ) \operatorname{TIME}(T(n)) TIME(T(n)) if there exists a TM that accepts L L L and runs in time c T ( n ) c T(n) cT(n) for some c > 0 c>0 c>0.
一个问题(decision problem)在 TIME ⁡ ( T ( n ) ) \operatorname{TIME}(T(n)) TIME(T(n))中当它可以在 T ( n ) T(n) T(n)中跑完

有了这个符号之后我们就可以定义复杂性类
用双带图灵机,回文问题可在线性时间内解决,见第 14 页上的回文例子。可以证明, 如果只用单带图灵机, 回文问题只能在平方时间内解决 [150]。所以说, 回文问题是否在 TIME ⁡ ( n ) \operatorname{TIME}(n) TIME(n) 里依赖于我们使用的模型。按我们的理解, TIME ⁡ ( n ) \operatorname{TIME}(n) TIME(n)不是一个复杂性类。一个复杂性类是一个模型无关的问题类。最著名的一个复杂性类是多项式时间类,其定义如下:

P = ⋃ c ≥ 1 TIME ⁡ ( n c ) 。 \mathbf{P}=\bigcup_{c \geq 1} \operatorname{TIME}\left(n^c\right) 。 P=c1TIME(nc)

E X P = ⋃ c ≥ 1 TIME ⁡ ( 2 n c ) \mathbf{E X P}=\bigcup_{c \geq 1} \operatorname{TIME}\left(2^{n^c}\right) EXP=c1TIME(2nc).

1.8 非确定图灵机

我们常用非确定图灵机解决存在性问题

非确定图灵机的每条计算路径试图构造一个存在性证明若构造成功,在输出带上写 1 并停机,称该计算是成功的,该终止格局为接受格局;若构造失败,在输出带上写 0 并停机,并称该计算是失败的,该终止格局为拒绝格局。有些计算路径可能不终止,这些计算也是失败的。只要计算终止,我们总可以假定输出带上的内容或为 1 或为 0。对于解决存在性问题,只要有一个存在性证明就足够了。

2023-09-21

非确定图灵机是用来解决验证性问题的。

P问题(多项式时间可解决问题)指的是可以在多项式时间内(通常是输入规模的多项式函数)用确定性的图灵机或其它多项式时间可计算的模型有效解决的问题。也就是说,对于P问题,存在一个能在多项式时间内解决问题的算法。

NP问题(非确定性多项式时间可验证问题)指的是可以在多项式时间内验证给定解的正确性的问题。也就是说,如果一个解可以在多项式时间内被验证,那么这个问题就属于NP类。但并不一定存在多项式时间内解决该问题的算法。

因为知道有多项式时间证明 所以可以先猜测一个多项式长度的01串 看是否存在证明

定义 1.6. 设 N \mathbb{N} N 为非确定图灵机, 当输入 x x x 时, 若 N ( x ) \mathbb{N}(x) N(x) 有一条计算路径终止于接受格局, 称 N \mathbb{N} N 接受 x x x, 记为 N ( x ) = 1 \mathbb{N}(x)=1 N(x)=1 。若 N ( x ) \mathbb{N}(x) N(x) 的所有的计算路径都失败, 称 N \mathbb{N} N 拒绝 x x x, 记为 N ( x ) = 0 \mathbb{N}(x)=0 N(x)=0

L L L 为一语言, 若 x ∈ L x \in L xL(这个命题为真) 当仅当 N ( x ) = 1 \mathbb{N}(x)=1 N(x)=1, 称 N \mathbb{N} N 接受 L L L

举例子 非确定图灵机 命题是图上是否有哈密顿回路 猜的是结点顺序(没一种结点顺序对应一个01串对应一条路径)

T : N → N T: \mathbf{N} \rightarrow \mathbf{N} T:NN 为时间函数。对任意输入 x x x, 若非确定图灵机 N \mathbb{N} N 的任一计算路径的长度都不超过 T ( ∣ x ∣ ) T(|x|) T(x), 称 T ( n ) T(n) T(n) N \mathbb{N} N 的时间函数。设 L ⊆ { 0 , 1 } ∗ L \subseteq\{0,1\}^* L{0,1} 。记号 L ∈ NTIME ⁡ ( T ( n ) ) L \in \operatorname{NTIME}(T(n)) LNTIME(T(n)) 表示存在接受 L L L 的非确定图灵机 N \mathbb{N} N 和常数 c > 0 c>0 c>0, c T ( n ) c T(n) cT(n) N \mathbb{N} N 的时间函数。用此记号, 可定义非确定复杂性类, 比如:
N P = ⋃ c ≥ 1 NTIME ⁡ ( n c ) , N E X P = ⋃ c ≥ 1 NTIME ⁡ ( 2 n c ) 。 \begin{aligned} \mathbf{N P} & =\bigcup_{c \geq 1} \operatorname{NTIME}\left(n^c\right), \\ \mathbf{N E X P} & =\bigcup_{c \geq 1} \operatorname{NTIME}\left(2^{n^c}\right) 。 \end{aligned} NPNEXP=c1NTIME(nc),=c1NTIME(2nc)
N P \mathrm{NP} NP 就是著名的非确定多项式时间类。与之相关的问题, 即 “ N P = ? P \mathrm{NP} \stackrel{?}{=} \mathbf{P} NP=?P ”, 是计算机科学中最重要的基础性问题。

定理 1.7. P ⊆ N P ⊆ E X P ⊆ N E X P \mathrm{P} \subseteq \mathrm{NP} \subseteq \mathrm{EXP} \subseteq \mathrm{NEXP} PNPEXPNEXP

2023-09-25

1.12 时间谱系定理

两个定义 一个对应经典图灵机 一个对应非确定图灵机
在数学中,当两个集合之间的包含关系是严格的,意味着其中一个集合是另一个集合的子集,但两个集合并不相等。这种关系通常用符号 ⊊ \subsetneq 表示
给定时间函数 f , g f, g f,g, 若 f ≤ g f \leq g fg, 必有 T I M E ( f ( n ) ) ⊆ T I M E ( g ( n ) ) \mathbf{T I M E}(f(n)) \subseteq \mathbf{T I M E}(g(n)) TIME(f(n))TIME(g(n))
定理 1.10 (时间谱系定理). 若 f , g f, g f,g时间可构造的且 f ( n ) log ⁡ f ( n ) = o ( g ( n ) ) f(n) \log f(n)=o(g(n)) f(n)logf(n)=o(g(n)),则 T I M E ( f ( n ) ) ⊊ T I M E ( g ( n ) ) \mathbf{T I M E}(f(n)) \subsetneq \mathbf{T I M E}(g(n)) TIME(f(n))TIME(g(n))

Exponential Hierarchy
E X P = ⋃ c > 1 TIME ⁡ ( 2 n c ) 2 E X P = ⋃ c > 1 TIME ⁡ ( 2 2 n c ) 3 E X P = ⋃ c > 1 TIME ⁡ ( 2 2 2 n c ) ⋮  ELEMENTARY  = E X P ∪ 2 E X P ∪ 3 E X P ∪ … \begin{aligned} \mathbf{E X P} & =\bigcup_{c>1} \operatorname{TIME}\left(2^{n^c}\right) \\ 2 \mathbf{E X P} & =\bigcup_{c>1} \operatorname{TIME}\left(2^{2^{n^c}}\right) \\ 3 \mathbf{E X P} & =\bigcup_{c>1} \operatorname{TIME}\left(2^{2^{2^{n^c}}}\right) \\ & \vdots \\ \text { ELEMENTARY } & =\mathbf{E X P} \cup 2 \mathbf{E X P} \cup 3 \mathbf{E X P} \cup \ldots \end{aligned} EXP2EXP3EXP ELEMENTARY =c>1TIME(2nc)=c>1TIME(22nc)=c>1TIME(222nc)=EXP2EXP3EXP

定理 1.11 (非确定时间谱系定理). 若 f , g f, g f,g时间可构造,且 f ( n + 1 ) = o ( g ( n ) ) f(n+1)=o(g(n)) f(n+1)=o(g(n)),则 N T I M E ( f ( n ) ) ⊊ N T I M E ( g ( n ) ) \mathbf{N T I M E}(f(n)) \subsetneq \mathbf{N T I M E}(g(n)) NTIME(f(n))NTIME(g(n))

1.13 间隙定理

定理 1.12 (间隙定理). 设 r ( x ) ≥ x r(x) \geq x r(x)x 为可计算全函数。存在可计算全函数 b ( x ) b(x) b(x)使得等式 T I M E ( b ( x ) ) = T I M E ( r ( b ( x ) ) ) \mathbf{T I M E}(b(x))=\mathbf{T I M E}(r(b(x))) TIME(b(x))=TIME(r(b(x))) 成立。

间隙定理的结论显然和时间谱系定理的结论相矛盾。因此, 上述证明里定义的可计算全函数 b b b 不是时间可构造的。间隙定理是计算复杂性理论中的又一个奠基性定理, 它告诉我们应该将目光局限在什么样的时间函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值