NP 完全(1):P, NP 与 NP 完全

Last updated on April 28, 2026 pm

本文为SJTU-AI2615算法课程的知识点复习,主要复习内容为NP完全问题(基础),包括P与NP、Karp 归约、NP-hard与NP完全等。

P 与 NP

P 类 (Polynomial Time)

  • 定义:存在多项式时间图灵机可解决的决策问题集合

P 问题的定义

  • 示例:路径问题、最大流问题、素数判定

NP 类 (Nondeterministic Polynomial Time)

  • 定义:存在多项式时间验证机的决策问题集合

NP 问题的定义

  • 示例:SAT 问题、顶点覆盖问题、哈密顿路径问题

P 与 NP 关系

  • P⊆NP\bm{\mathrm{P} \subseteq \mathrm{NP}}:所有 P 类问题都是 NP 类问题
  • 未知问题:是否P=NP\mathrm{P} = \mathrm{NP}?

归约与 NP 完全性

卡普归约 (Karp Reduction)

  • 定义:决策问题 ff 能归约到决策问题 gg,是指存在一个图灵机 A\mathcal{A} 能在多项式时间内将一个 ff 实例转换为正确性相同的 gg 实例,记作 f≤kgf \le_k g
  • 理解:这表明 gg 的难度略高于 ff
  • 传递性:如果 f≤kgf \le_k g,g≤khg \le_k h,那么 f≤khf \le_k h

经典归约示例

SAT 归约到 3SAT

  • 方法:引入新变量,将长字句拆分为最多三个文字的短字句
  • 例子:

ϕ=(x1∨x2∨¬x3∨¬x4∨x5∨x6)\phi = (x_1 \lor x_2 \lor \lnot x_3 \lor \lnot x_4 \lor x_5 \lor x_6)

ϕ′=(x1∨x2∨y1)∧(¬y1∨¬x3∨y2)∧(¬y2∨¬x4∨y3)∧(¬y3∨x5∨x6)\phi' = (x_1 \lor x_2 \lor y_1) \land (\lnot y_1 \lor \lnot x_3 \lor y_2) \land (\lnot y_2 \lor \lnot x_4 \lor y_3) \land (\lnot y_3 \lor x_5 \lor x_6)

  • 解释:ϕ\phi 是一个正确的 SAT 实例当且仅当 ϕ′\phi' 是一个正确的 3SAT 实例

3SAT 归约到独立集

  • 方法:
    1. 对每个字句,构造三角形,其中每个顶点代表一个文字
    2. 连接代表互为否定文字的顶点
    3. 设独立集问题 kk 为字句数
  • 解释:要证明构造的实例和原实例的正确性相同

独立集归约到顶点覆盖

  • 方法:SS 是 GG 的独立集   ⟺  \iff V−SV - S 是 GG 的顶点覆盖

独立集归约到团问题(Clique)

  • 方法:SS 是 GG 的独立集   ⟺  \iff SS 是 Gˉ\bar{G} 中的团

NP-hard 与 NP 完全

  • NP-hard:如果对任意 g∈NP:g≤kfg \in \mathrm{NP}:g \le_k f,那么 ff 是 NP-hard 问题
  • NP-complete:如果 f∈NPf \in \mathrm{NP} 并且对任意 g∈NP:g≤kfg \in \mathrm{NP}: g \le_k f,那么 ff 是 NP-complete 问题
  • Cook-Levin 定理:SAT 是 NP-complete 问题
  • NP-complete 证明步骤:
    1. 证明问题属于 NP 类
    2. 选择已知 NP 完全问题 ff
    3. 构造从 ff 到目标问题的多项式时间归约

经典 NP 完全问题的归约关系

注:本文中所有图片均来自张宇昊老师的课程PPT。


NP 完全(1):P, NP 与 NP 完全
https://cny123222.github.io/2025/05/13/NP-完全-1-:P, NP 与 NP 完全/
Author
Nuoyan Chen
Posted on
May 13, 2025
Licensed under