【学习笔记】复杂度问题
复杂度问题
前置知识:复杂度。
P
他的意思就是:存在一个算法,能在多项式时间解决该问题。
形式化的:
问题属于 \(P\),而且仅当存在图灵机中可以用 \(O(n^k)\) 的时间判定他
所有的多项式时间都可以称为P问题
NP
他的意思就是:给定一个解,可以在多项式时间内验算出来。
形式化的:
问题属于 \(\text{NP}\),仅当存在非确定型图灵机可以在多项式时间验算他。
等价的:存在多项式时间验算器 \(V\),使得:
\(x\) 是一个实例且 \(x \in L\),其中 \(L\) 是一种语言。
且存在证书 \(y\),其中 \(y\) 为候选解,且 \(|y| \le p(n)\)
且:\(V(x,y)\) 是接受的。
如何理解:
其中 \(V\) 是验算器,相当于一个函数,对于每一组输入 \(a, b\),他会输出“接受”和“拒绝”。
语言可以自行查询。
其中 \(|y|\le p(n)\),\(p\) 为某个多项式。
如果 \(|y| > p(n)\) 那么 \(y\) 就是一个指数级别的算法。
为什么是非确定性图灵机和他的性质有关,自行查阅。
整个式子的含义就是:
若答案真的是“是”,那么就一定可以找到一个足够短的证明 \(y\),让验证器 \(V\) 接受。
这保证了真命题一定有答案,且不会漏掉正确答案。
反之:
如果存在证书 \(y\) 使得 \(V(x,y)\) 接受,那么 \(x\) 是实例。
这保证了假命题不会被证明,且不能被欺骗。
归约
前置知识。
规约的核心思想是:如果解决 \(B\) 的方法可以解决 \(A\),那么称 \(A\) 归约到 \(B\)。
比如:
- 一个人是否成年可以归约为年龄是否为 \(18\)
形式化的:
若 \(A\) 和 \(B\) 是判定问题,若存在可计算函数 \(f (f \in F)\),使得对于任意 \(x\):
\(x \in A \Longleftrightarrow f(x) \in B\)
称 \(A\) 归约到 \(B\)。
在形式化一点的:
\(\exists f \in F. \forall x \in \mathbb{N}. x\in A \Leftrightarrow f(x) \in B\)我们写作:
\(A \le_F B\)
注意到:
\(A \le_F B\) 他的意思是:
-
规约的方向是 \(A \to B\)。
-
难度的方向是 \(B \ge A\),因为只是 \(\exists f \in F\),说明 \(B\) 的能力更强,反之,会 \(A\) 不一定会 \(B\)。
NP-Hard
如果所有 \(\text{NP}\) 问题都能用多项式时间归约到问题 \(H\),那么称:\(H\) 是 \(\text{NP-Hard}\)
形式化的:
\(H\) 是 \(\text{NP-Hard}\),而且仅当任意 \(L \in \text{NP}\),都有 \(L \le_p H\)
不难发现:
-
\(\text{NP-Hard}\) 问题至少和 \(\text{NP}\) 中最难的问题一样难。
-
如果 \(\text{H}\) 能被多项式时间解决,那么所有 \(\text{NP}\) 问题都能被多项式时间解决,即 \(\text{P = NP}\)。
所以:
-
\(\text{NP-hard}\) 不一定属于 \(\text{NP}\)
-
\(\text{NP-hard}\) 不一定可以判定。
-
\(\text{NP-hard}\) 可以比 \(\text{NP}\) 难得多。
NP-Complete
\(\text{NP-Complete} = \text{NP} \cap \text{NP-Hard}\)
即:
-
\(\text{NP-Complete} \in \text{NP}\)
-
任何 \(\text{NP}\) 问题都可以归约到 \(\text{NP-Complete}\)
不难发现:
-
\(\text{NP-Complete}\) 是 \(\text{NP}\) 中“最难”的问题。
-
只要有一个 \(\text{NP-Complete}\) 问题有多项式算法,那么 \(\text{P = NP}\)。(来自\(\text{NP-Hard}\))
证明有点难,有没有人教教我qwq。
DTIME、NTIME
前置知识。
给定时间函数 \(t(n)\),定义:
\(DTIME(t(n))\) 为所有能在 \(O(t(n))\) 时间内被确定性图灵机判定的语言/问题的集合。
比如:\(\text{DTIME}(n^2)\) 表示在 \(O(n^2)\) 时间内能解决的问题。
不难发现
对应的,也有 \(\text{NTIME}\),对应的定义是非确定性图灵机的。
EXP、NEXP、EXPSPACE
| 类 | 资源 | 限制 |
|---|---|---|
| EXP | 时间 | 指数 |
| NEXP | 时间 | 非确定性指数 |
| EXPSPACE | 空间 | 指数 |
EXP
\(\text{EXP}\) 又称 \(\text{EXPTIME}\)。
问题属于 \(\text{EXP}\),当且仅当存在一个确定性图灵机,在 \(O(2^{n^k})\) 的时间判定。
形式化的:
也就是说,只要时间是指数级的,就属于 \(\text{EXP}\)。
比如:
-
广义国际象棋
-
广义跳棋
-
某些电路求值问题
不难发现:
而且:
这是严格包含,由时间层次定理保证。
也就是说,确实存在一些问题,能在指数时间解决,但不可能在多项式时间解决。
但注意:
是否严格,目前未知。因为如果 \(P = NP\),那么 \(NP\) 可能等于 \(P\),但仍然小于 \(\text{EXP}\)。
NEXP
\(\text{NEXP}\) 又称 \(\text{NEXPTIME}\)。
问题属于 \(\text{NEXP}\),当且仅当存在一个非确定性图灵机,在 \(O(2^{n^k})\) 的时间判定。
形式化的:
直觉上,\(\text{NEXP}\) 就是 \(\text{EXP}\) 的“非确定性版本”,就像 \(NP\) 是 \(P\) 的非确定性版本。
它对应:
存在一个指数长度的证书,可以在指数时间内验证。
也就是说:
| 类 | 证书长度 | 验证时间 |
|---|---|---|
| NP | 多项式 | 多项式 |
| NEXP | 指数 | 指数 |
比如:
-
广义棋类加上复杂规则
-
某些组合优化问题的指数版本
-
简洁表示的图上的问题
不难发现:
因为确定性是非确定性的特例。
还有:
\text{NEXP} \subseteq \text{EXPSPACE}
\text{EXPSPACE} = \bigcup_{k \ge 1} \text{DSPACE}(2{nk})
\text{PSPACE} \subseteq \text{EXPSPACE}
\text{PSPACE} \subsetneq \text{EXPSPACE}
\text{NEXP} \subseteq \text{EXPSPACE}
P \subseteq NP \subseteq \text{PSPACE} \subseteq \text{EXP} \subseteq \text{NEXP} \subseteq \text{EXPSPACE}
\text{PSPACE} \subseteq \text{EXP}
\text{EXP} \subseteq \text{PSPACE}?

浙公网安备 33010602011771号