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

Last updated on June 13, 2025 pm

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

P 与 NP

P 类 (Polynomial Time)

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

P 问题的定义

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

NP 类 (Nondeterministic Polynomial Time)

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

NP 问题的定义

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

P 与 NP 关系

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

归约与 NP 完全性

卡普归约 (Karp Reduction)

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

经典归约示例

SAT 归约到 3SAT

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

ϕ=(x1x2¬x3¬x4x5x6)\phi = (x_1 \lor x_2 \lor \lnot x_3 \lor \lnot x_4 \lor x_5 \lor x_6)

ϕ=(x1x2y1)(¬y1¬x3y2)(¬y2¬x4y3)(¬y3x5x6)\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 为字句数
  • 解释:要证明构造的实例和原实例的正确性相同

独立集归约到顶点覆盖

  • 方法SSGG 的独立集     \iff VSV - SGG 的顶点覆盖

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

  • 方法SSGG 的独立集     \iff SSGˉ\bar{G} 中的团

NP-hard 与 NP 完全

  • NP-hard:如果对任意 gNP:gkfg \in \mathrm{NP}:g \le_k f,那么 ff 是 NP-hard 问题
  • NP-complete:如果 fNPf \in \mathrm{NP} 并且对任意 gNP:gkfg \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