P,NP,NP 完全
归约
考虑这么两个问题,A 和 B。如果 A 可通过下述步骤求得解:
输入:A 的一个实例,α
- 将 α 转换为 B 的一个实例,β
- 解决 β,获得一个解
- 根据 β 的解,获得 α 的解
那么,A 可被归约为 B。
假设对于问题 A 的一个大小为 n 的实例 α:
- 问题 B 的实例 β 可以在 p(n) 时间内被构建出来
- 问题 A 对于 α 的解可经由问题 B 对于 β 的解在 p(n) 的时间内得出
那么这个归约可以说是 p(n) 时间归约。
假如说 p(n) = O(nc) 是一个多项式函数,那么这个归约就是多项式时间归约,写作 A ≤P B。
如果问题 B 具有一个多项式时间算法,那么 A 也有!如果 B 能够被轻松解决,那么 A 也能!
判定问题
判定问题指的是输出为“是”或“否”的问题。
Decision vs Optimization
- Decision Problem: Given a directed graph G with two given vertices u and v, is there a path from u to v of length ≤ k?
- Optimization Problem: Given a directed graph G with two given vertices u and v, what is the length of the shortest path from u to v?
最佳化问题都可被转换为判定问题。
判定问题可被归约为最佳化问题。
判定问题之间的归约
给定两个判定问题 A 和 B,如果满足:
- α 是 YES 实例当且仅当 β 也是 YES 实例
- 由 α 至 β 的转换的花费时间是关于 α 大小的多项式
那么存在 A 至 B 的多项式时间归约,A ≤P B。
P 问题和 NP 问题
P 代表 “Polynomial(多项式)”。
P 问题囊括了所有可以在多项式时间内解决的判定问题。
NP 代表 “Non-deterministic(非确定性)Polynomial(多项式)”。
NP 问题指的是具有运行时间为多项式时间的验证器(verifier)的,或者说能在多项式时间内验证解的正确性的一类判定问题。
↑ 非严谨的定义 ↑
P/NP 问题:P 和 NP 相等吗?¯\(°_o)/¯
NP 完全问题
如果问题 X 是一个 NP 问题,且对于所有 A ∈ NP,满足 A ≤P X,那么 X 是一个 NP 完全(NP-complete)问题。
证明问题 X 是一个 NP 完全问题:
- 证明 X 是 NP 问题
- 选择一个已知的 NP 完全问题 A
- 证明 A ≤P X
除非 P = NP,否则 NP 完全问题没有多项式时间算法。
评论