Skip to content

Cook–Levin 定理

Cook–Levin theorem · SAT is NP-complete

布尔可满足性问题 SAT 是 NP 完全问题。

条目类型
定理

形式陈述

Cook–Levin 定理断言 SAT 是 NP-complete:

SATNP,LNP: LmpSAT.

成员性很直接:证书给每个变量一个真值,逐门或逐符号求值即可在公式长度的多项式时间内检查可满足性。困难性要求对每个 LNP、每个输入 x,在不知道 xL 与否的情况下构造公式 ΦN,x,满足

ΦN,x 可满足N 在 x 上存在接受分支.

这里 N 是判定 L 的时钟化非确定机器。由非确定性时间类定义,可取多项式 T(n),使 N 在长度 n 输入上的每条分支都在 T(n) 步内停机;必要时把 T 放大到至少 n+1,并让接受配置自循环到第 T 步。归约必须在 poly(|x|) 时间内写出 ΦN,x,不能先运行 N 找到一条接受分支。

直觉

把一条计算分支排成时间向下、纸带位置向右的 tableau。第 t 行编码第 t 步的完整配置。机器运行至多 T 步,读写头离起点不会超过 T 格;又因 Tn 足以容纳输入,所以表格的高、宽都是 O(T),共 O(T2) 个格子。

对每个时间 t、位置 i 和局部标记 a 引入变量 Xt,i,a。标记可以是普通带符号,也可以把“带符号 + 当前状态 + 读写头”合并在一个格中。公式由四类约束组成:

  1. 单值约束:每个格子恰有一个标记。
  2. 初始约束:第 0 行精确编码输入、空白区、初始状态和头位置。
  3. 转移约束:相邻两行的每个常数宽窗口符合 N 的某条转移。
  4. 接受约束:第 T 行包含接受状态;接受自循环保证较短计算也能填满表格。

一次转移只改动头附近的常数个格子,远处格子保持不变。因此合法的相邻行关系可由有限种局部窗口描述;在所有重叠窗口上同时满足局部约束,就拼出一条全局一致的计算历史。非确定选择由满足赋值选择某个合法窗口序列,归约算法本身不需要猜中它。

Cook–Levin tableau
例子与边界

单值约束怎样工作

若某格允许标记集 {0,1,},简写对应变量为 X0,X1,X。该格恰有一个标记可写成

(X0X1X)(¬X0¬X1)(¬X0¬X)(¬X1¬X).

标记表对固定机器是常数大小,所以每格只增加常数个变量与子句。O(T2) 个格子的单值约束总规模仍为 O(T2);初始行有 O(T) 个位置,相邻行的窗口有 O(T2) 个,每个窗口排除的非法局部图案数也只依赖固定机器 N。因此整份公式大小是 poly(T)=poly(|x|)

双向正确性

N 有接受分支,就按该分支逐格填写 tableau,四类约束全部满足。若 ΦN,x 可满足,单值约束先给每格唯一标记,初始约束确定第一行,重叠的转移窗口再保证每一行确由前一行的一次合法转移得到;最后一行接受,故读出的确是一条接受分支。缺少反向论证,就无法排除满足公式但并非真实计算的伪表格。

容易漏掉的边界

表格两侧需要端标记或足够的空白边界,较早停机的分支需要吸收式停机配置。若省略两两互斥子句,一个格子可以同时宣称多个标记;若只验证每行“像配置”而不检查相邻行,初始行与接受行可以被任意拼接。

定理首先得到一般 SAT。借助新变量对电路门或长子公式作 Tseitin 编码,可以在线性或多项式膨胀下得到与原公式等可满足的 3-CNF,从而导向3-SAT;新公式不必在原变量上的每个赋值都与旧公式等价。这一步也不会让 2-SAT 变得困难,2-SAT 已知属于 P。除非证明 PNP,Cook–Levin 本身还不能推出 SAT 的无条件超多项式下界。

推论与应用

Cook–Levin 为NP 完全性网络提供第一个通用起点。后续证明不必再次编码任意机器,只需从 SAT 或 3-SAT 出发,用局部构件把变量选择和约束传给图、集合、调度等目标。

tableau 还把NP的抽象证书解释成一件具体对象:一份局部可核验的接受计算历史。多项式时间归约保存这份历史“存在或不存在”的答案,而不是保存解的数量、搜索顺序或某个求解器的运行轨迹。

参考资料
  • Stephen A. Cook, “The Complexity of Theorem-Proving Procedures,” Proceedings of the Third Annual ACM Symposium on Theory of Computing, 1971, pp. 151–158.
  • Leonid A. Levin, “Universal Sequential Search Problems,” Problems of Information Transmission 9(3), 1973, pp. 265–266.
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §2.3.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §7.4.
关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系