Cook-Levin定理

概述

Cook-Levin定理(Cook-Levin Theorem):布尔可满足性问题(SAT)是NP完全的。这是计算复杂性理论中的奠基性结果,由 Stephen Cook(1971)和 Leonid Levin(1973)独立发现,确立了 SAT 作为”最难”NP问题的地位。

定理陈述

形式化陈述

定理(Cook, 1971; Levin, 1973):布尔可满足性问题(SAT)是 NP 完全的。即:

  1. SAT NP:给定一个布尔公式 和一组赋值,可以在多项式时间内验证该赋值是否满足
  2. SAT 是 NP 困难的:对任意语言 ,存在多项式时间归约

推论:若 SAT P,则 P = NP。

证明概要

证明思路

证明分为两部分。SAT NP 是显然的(赋值即为证书)。核心在于证明 NP 困难性:将任意 NP 问题的非确定型图灵机(NTM)计算编码为布尔公式。

关键步骤

步骤 1:确定 NTM 模型。设语言 ,则存在 NTM 在多项式时间 内接受 。对长度为 的输入 的计算恰好在 步内完成(可通过添加”接受后空转”来补齐步数)。

步骤 2:构造”计算表格”。将 在输入 上的计算表示为一张 的表格 ,其中:

  • 行记录第 步时磁带的内容
  • 每个单元格包含一个磁带符号
  • 表格的第 0 行是输入 (后补空白符)

步骤 3:定义布尔变量。引入布尔变量:

  • :表格第 行第 列的符号为
  • :第 步时读写头在第
  • :第 步时状态为

变量总数为 ,是多项式级别的。

步骤 4:构造约束公式。将 NTM 计算的正确性编码为以下子公式的合取:

  • :每个单元格恰好包含一个符号
  • :第 0 行正确编码输入 ,初始状态为 ,读写头在位置 0
  • :相邻两行之间的转换符合 NTM 的转移函数
  • :某一步进入接受状态

最终公式

步骤 5:正确性论证 可满足当且仅当 NTM 接受输入 。公式 的大小为 ,构造时间为多项式。

学术参考:CMU 教学讲义详细给出了完整证明过程:https://www.cs.cmu.edu/~lblum/flac/Lectures_pdf/Lecture17.pdf

关键推论

  • 3-SAT 也是 NP 完全的:可以将任意 SAT 实例通过 Tseitin 变换在多项式时间内转化为 3-CNF-SAT 实例
  • NP 完全性归约链:通过从 SAT 出发的多项式时间归约,已证明数千个问题都是 NP 完全的
  • P vs NP:若 P NP(普遍猜测),则 SAT 不存在多项式时间算法
  • 实际意义:SAT 求解器的效率直接影响硬件验证、软件测试、AI 规划等领域

应用场景

  • 算法导论 Ch34:作为 NP 完全性理论的起点,所有其他 NP 完全性证明都通过归约到 SAT(或 3-SAT)来完成
  • 硬件验证:将电路正确性检查编码为 SAT 问题,使用 SAT 求解器验证
  • 软件测试:将程序路径覆盖条件编码为 SAT 公式
  • AI 规划:将规划问题编码为 SAT,利用高效求解器求解
  • 密码分析:某些密码系统的安全性依赖于 SAT 问题的困难性

参见