NP完全性理论与近似算法
2026/9/25大约 3 分钟
NP 完全性理论与近似算法
1. 问题的分类
| 类别 | 含义 |
|---|---|
| P 类 | 存在多项式时间算法求解的判定问题 |
| NP 类 | 存在多项式时间算法验证其解是否正确的判定问题(非确定性图灵机多项式时间可解) |
| NP 难(NP-hard) | 所有 NP 问题都能多项式时间归约到它,但它本身不一定属于 NP |
| NP 完全(NP-complete,NPC) | 同时属于 NP 且是 NP 难的判定问题 |
显然有 ,但 是否成立至今未解。目前普遍认为 。
2. 归约(Reduction)
若问题 可以在多项式时间内转化为问题 的实例,使得 的答案为「是」当且仅当 的答案为「是」,则称 多项式时间归约到 ,记作 。
- 若 且 有多项式时间算法,则 也有;
- 若 且 是 NP 难的,则 也是 NP 难的。
3. 第一个 NPC 问题
Cook-Levin 定理:布尔可满足性问题(SAT)是 NP 完全的。
证明 NPC 问题的通用套路:
- 证明该问题属于 NP(给定解能在多项式时间内验证);
- 证明一个已知的 NPC 问题可以多项式时间归约到它。
经典 NPC 问题:SAT → 3-SAT → 团问题、顶点覆盖、哈密顿回路、旅行商问题(TSP)、0-1 背包、图着色、集合覆盖。
4. 近似算法
对于 NP 难问题,若无法在多项式时间内求精确最优解,可以退而求其次:设计多项式时间算法,并证明其解与最优解的比值有界。
设 是求解最优化问题的一个近似算法, 为对实例 的输出, 为最优值:
- 绝对近似比:;
- 相对近似比:,称 为 -近似算法。
| 问题 | 近似算法 | 近似比 |
|---|---|---|
| 顶点覆盖 | 反复取一条未覆盖边,把两端点都加入解 | 2 |
| 集合覆盖 | 每次贪心选取覆盖未覆盖元素最多的集合 | |
| 旅行商问题(满足三角不等式) | 最小生成树 + 前序遍历(Christofides 可达 3/2) | 2 |
| 多机调度 | 贪心(LPT,最长处理时间优先) | |
| 装箱问题 | 首次适应(FF)/ 递减首次适应(FFD) | 2 / |
| 0-1 背包 | 贪心按单位价值排序 | 无常数近似比保证 |
5. 处理 NP 难问题的实用策略
- 小规模精确求解:分支限界法、回溯法、动态规划(伪多项式时间);
- 近似算法:牺牲最优性换取多项式时间与可证明的近似比;
- 随机化算法:以可控的出错概率换取效率;
- 启发式算法:模拟退火、遗传算法、禁忌搜索、蚁群算法,无近似比保证但实践效果好;
- 参数化算法:把指数部分限制在某个参数 上,如 。
