“Cook–Levin 为NP 完全性网络提供第一个通用起点。后续证明不必再次编码任意机器,只需从 SAT 或 3 SAT 出发,用局部构件把变量选择和约束传给图、集合、调度等目标。”
形式陈述 ​
语言
第一项给出上界:是实例有多项式长度、可在多项式时间验证的证书。第二项就是NP 困难性,给出下界:整个 NP 都可归约到
实际证明困难性时,可以从一个已知 NP-complete 语言
直觉
归约像一个不知答案的编译器。若
“complete”还把目标限制在 NP 内。HALT 一类问题可以 NP-hard,却因不可判定而不在 NP;普通 NP 语言则可能容易验证但没有承担全部 NP 的已知归约。成员性与困难性分别控制上界、下界,不能用其中一项推测另一项。
例子与边界
从 3-SAT 归约到 Clique ​
给定含
若公式可满足,从每个子句选一个为真的文字。被同一赋值选中的两个文字不可能互补,且来自不同子句,所以对应顶点两两相连,形成大小为
例如
产生六个文字出现顶点,目标为大小
最后还要证明目标在 NP 中:Clique 的证书是
结论的边界 ​
NP-complete 是关于编码判定语言和指定归约的分类,不表示每个实例都困难,也不是无条件的指数时间下界。2-SAT 等受限子类可以有多项式算法;启发式在一批实例上耗时指数也不能证明完全性。若把箭头误写成
推论与应用
若任何 NP-complete 语言属于 P,则每个 NP 语言都先归约到它再运行多项式判定器,于是
反过来,若假设 P=NP,则每个同时含有固定是实例
Cook–Levin 定理用通用计算编码证明 SAT 是第一个 NP-complete 起点。此后只需沿多项式时间归约链传递困难性,并为每个新目标单独核实NP 成员性,无需重复整张计算 tableau。
参考资料
- Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §§2.1–2.3.
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §§7.4–7.5.
- Richard M. Karp, “Reducibility Among Combinatorial Problems,” in Complexity of Computer Computations, Plenum Press, 1972, pp. 85–103.