计算复杂性理论(傅育熙)
计算理论
- 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 x∈L, 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, 若 x∈L, 若 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, 若 x∈L, 若 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:N→N 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
1n↦└T(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 k−1 条工作带上的内容(非空的符号串),自然数 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:N→N, 且
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:N→N 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=⋃c≥1TIME(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=⋃c≥1TIME(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 x∈L(这个命题为真) 当仅当 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:N→N 为时间函数。对任意输入
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))
L∈NTIME(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=c≥1⋃NTIME(nc),=c≥1⋃NTIME(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} P⊆NP⊆EXP⊆NEXP
2023-09-25
1.12 时间谱系定理
两个定义 一个对应经典图灵机 一个对应非确定图灵机
在数学中,当两个集合之间的包含关系是严格的,意味着其中一个集合是另一个集合的子集,但两个集合并不相等。这种关系通常用符号
⊊
\subsetneq
⊊ 表示
给定时间函数
f
,
g
f, g
f,g, 若
f
≤
g
f \leq g
f≤g, 必有
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>1⋃TIME(2nc)=c>1⋃TIME(22nc)=c>1⋃TIME(222nc)⋮=EXP∪2EXP∪3EXP∪…
定理 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 不是时间可构造的。间隙定理是计算复杂性理论中的又一个奠基性定理, 它告诉我们应该将目光局限在什么样的时间函数。