第 10 章 难解问题

P、NP、多项式归约与 NP 完全性

Source scope
主要依据教材第 10 章:中文印刷页 289–326,对应 PDF p.302–339/341。目录主线为 P/NP、SAT 的 NP 完全性、约束可满足性与 3SAT,以及独立集、顶点覆盖、哈密顿回路和 TSP 等 NP 完全问题。

1 0. 从“能算”到“能高效算”

第 9 章区分可判定与不可判定。第 10 章进一步问:

即使问题可判定,是否能在可接受时间内求解?

复杂度理论通常把多项式时间看作“可行计算”的第一近似。

2 1. P 类

若一个判定问题可由确定型图灵机在输入长度 \(n\) 的某个多项式时间

\[ O(n^k) \]

内解决,则属于 \(P\)。

重要的是渐近增长阶,而不是具体机器常数。

2.1 1.1 模型稳健性

合理的确定型计算模型之间通常只产生多项式级模拟开销,因此“是否属于 P”对模型细节较稳健。

3 2. NP 类

一个语言属于 \(NP\),若满足等价表述之一:

  1. 可由非确定型 TM 在多项式时间内接受;
  2. 对每个 yes-instance,存在多项式长度证书 \(c\),且确定型验证器能在多项式时间验证。

第二种“证书 + 验证器”视角更实用。

例如 Hamiltonian cycle 的证书可以是一条顶点排列;验证是否构成合法回路只需多项式时间。

显然:

\[ P\subseteq NP. \]

是否 \(P=NP\) 是核心未解问题。

4 3. 多项式时间归约

定义

\[ A\le_p B \]

若存在多项式时间可计算函数 \(f\),满足

\[ x\in A\iff f(x)\in B. \]

这意味着 \(B\) 至少和 \(A\) 一样难(在多项式归约意义下)。

若

\[ A\le_p B, \quad B\in P, \]

则 \(A\in P\)。

5 4. NP-hard 与 NP-complete

语言 \(B\) 是 NP-hard,如果对所有 \(A\in NP\),都有

\[ A\le_p B. \]

若再满足

\[ B\in NP, \]

则 \(B\) 是 NP-complete。

证明一个新问题 \(B\) NP 完全,标准模板:

  1. 证明 \(B\in NP\);
  2. 选已知 NP 完全问题 \(A\);
  3. 构造 \(A\le_p B\);
  4. 证明构造正确且规模多项式。

6 5. SAT

布尔可满足性问题 SAT:给定布尔公式 \(\phi\),问是否存在变量赋值使 \(\phi\) 为真。

SAT 属于 NP:证书就是变量赋值,代入验证即可。

Cook–Levin 定理证明:

\[ \boxed{SAT\text{ 是 NP-complete}}. \]

6.1 5.1 Cook–Levin 证明思想

对任意多项式时间 NTM \(M\) 和输入 \(w\),把一个接受计算编码成多项式规模的布尔公式。

变量描述“时间 \(t\)、带位置 \(i\) 上是什么符号/状态”等局部事实;约束保证:

  • 初始配置正确;
  • 每个单元取唯一内容;
  • 相邻时间步符合 TM 转移规则;
  • 最终出现接受状态。

因此公式可满足,当且仅当 \(M\) 有一条接受计算路径。

7 6. CNF、CSAT 与 3SAT

CNF 是“合取的析取”:

\[ C_1\land C_2\land\cdots\land C_m, \]

每个 \(C_i\) 是若干文字的析取。

3SAT 要求每个子句最多/恰含三个文字(具体形式按教材约定)。

通过引入辅助变量,可把一般 CNF 子句拆成 3-CNF,同时保持可满足性。

这一步是很多图问题归约的常用起点。

8 7. 独立集与顶点覆盖

8.1 7.1 独立集

图 \(G=(V,E)\) 中,顶点集 \(S\) 若任意两点之间都没有边,则为独立集。

判定问题:是否存在大小至少 \(k\) 的独立集?

8.2 7.2 顶点覆盖

\(C\subseteq V\) 若每条边至少有一个端点在 \(C\) 中,则为顶点覆盖。

关键互补关系:

\[ S\text{ 是独立集} \iff V-S\text{ 是顶点覆盖}. \]

因此很多归约可以非常直接地在二者之间转换参数:

\[ |C|=|V|-|S|. \]

9 8. 哈密顿回路

Hamiltonian cycle 要求一个简单回路恰好访问每个顶点一次。

与 Euler 回路不同:

  • Euler:每条边一次;
  • Hamiltonian:每个顶点一次。

后者是典型 NP 完全问题。

归约构造中常用“图 gadget”强迫路径表示变量选择或逻辑约束。

10 9. TSP

旅行商判定版:给定带权完全图和界 \(B\),是否存在访问每个顶点一次并回到起点、总成本不超过 \(B\) 的巡回?

从 Hamiltonian cycle 可归约到 TSP:

  • 原图中的边赋低成本;
  • 非边赋高成本;
  • 选择阈值使低成本巡回存在当且仅当原图有 Hamiltonian cycle。

11 10. 归约中最重要的“两个方向”

构造 \(f(x)\) 后,必须证明:

11.0.1 完备性

若原实例 yes,则新实例 yes。

11.0.2 健全性

若新实例 yes,则原实例 yes。

很多错误归约只证明了其中一个方向。

12 11. P vs NP 的含义

若任何一个 NP 完全问题属于 P,则

\[ P=NP. \]

反之,如果能证明某个 NP 完全问题不属于 P,则

\[ P\ne NP. \]

因此 NP 完全问题把大量不同领域的组合问题“绑定”在同一个复杂度命运上。

13 12. 常见错误

  • 证明 NP 完全时只证明 NP-hard,忘记 \(B\in NP\);
  • 归约方向反了;
  • 把优化版和判定版混用而不说明;
  • 构造规模指数膨胀,仍声称是多项式归约;
  • 混淆 Hamiltonian 与 Euler;
  • 认为 \(NP\) 表示“non-polynomial”;正确是 nondeterministic polynomial time。

chapter concept map

本章概念关系图。

14 13. 本章知识地图

P ⊆ NP
     |
     +-- SAT is NP-complete
             |
             +--> 3SAT
             +--> Independent Set
             +--> Vertex Cover
             +--> Hamiltonian Cycle
             +--> TSP

Known NP-complete A --poly reduction--> target B