“下面概述 Dinur 证明的构造顺序,具体的预处理、powering 与 assignment tester 引理见原论文。它从Cook–Levin 型归约开始,把 NP 计算变为多项式大小…”
形式陈述
Cook–Levin 定理断言判定命题公式是否可满足的 SAT 是 NP-complete:
成员性很直接:证书给每个变量一个真值,逐门或逐符号求值即可在公式长度的多项式时间内检查可满足性。困难性要求对每个
先由非确定性时间类取得判定
直觉
把一条计算分支排成时间向下、纸带位置向右的 tableau。第
对每个时间
- 单值约束:每个格子恰有一个标记。
- 初始约束:第
行精确编码输入、空白区、初始状态和头位置。 - 转移约束:相邻两行的每个常数宽窗口符合
的某条转移。 - 接受约束:第
行包含接受状态;接受自循环保证较短计算也能填满表格。
一次转移只改动头附近的常数个格子,远处格子保持不变。因此合法的相邻行关系可由有限种局部窗口描述;在所有重叠窗口上同时满足局部约束,就拼出一条全局一致的计算历史。非确定选择由满足赋值选择某个合法窗口序列,归约算法本身不需要猜中它。
例子与边界
单值约束怎样工作
若某格允许标记集
标记表对固定机器是常数大小,所以每格只增加常数个变量与子句。
双向正确性
先看一个局部窗口。假设机器在状态
左格不变,原头所在格被改写,右格接过头和新状态。若下行仍写成
若
容易漏掉的边界
表格两侧需要端标记或足够的空白边界,较早停机的分支需要吸收式停机配置。若省略两两互斥子句,一个格子可以同时宣称多个标记;若只验证每行“像配置”而不检查相邻行,初始行与接受行可以被任意拼接。
定理首先得到一般 SAT。借助新变量对电路门或长子公式作 Tseitin 编码,可以在线性或多项式膨胀下得到与原公式等可满足的 3-CNF,从而导向3-SAT;新公式不必在原变量上的每个赋值都与旧公式等价。这一步也不会让 2-SAT 变得困难,2-SAT 已知属于 P。除非证明
推论与应用
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.