“CNF 可满足性问题的输入是一份合取范式”
形式陈述 ​
在命题逻辑中,文字是命题变量
范式定理:每个命题公式都与某个 CNF 公式逻辑等价。构造性证明分三步:消去
直觉
CNF 把任意布尔条件整理成"一份必须全部满足的约束清单":外层合取说每条约束都要过关,内层析取说每条约束给出若干可选的满足方式,至少中一个即可。这恰是约束求解的自然姿态——一个赋值违反某条约束,当且仅当它把该子句的所有文字同时弄假,于是"排查失败原因"可以逐子句进行,这正是 SAT 求解器逐子句传播与学习冲突的工作方式。与之对偶的析取范式则是"若干套完整方案任选其一"。值得记住的直观:CNF 易于"看出永真难、看出矛盾易"的对偶现象——检验 CNF 是否永真只需逐子句看是否都含互补文字对,容易;而检验其可满足性是 NP 完全的核心问题。
例子与边界
边界之一是规模:逐层分配可能指数爆炸,公式
推论与应用
CNF 是布尔可满足性生态的标准输入格式:可满足性问题以 CNF 形态成为 Cook–Levin 定理中第一个 NP 完全问题,限制子句长度后的 3-SAT 则是复杂性归约网络的枢纽——任意 CNF 可经引入新变量拆分长子句改写为等可满足的 3-CNF。证明论方向,归结(resolution)证明系统只操作 CNF 子句,其证明长度下界是证明复杂性理论的经典课题。此外,逻辑程序设计中的 Horn 子句(至多一个正文字的子句)是 CNF 的可高效判定片段,硬件验证与规划问题的编码流水线普遍以 Tseitin 式转换落地为 CNF。
参考资料
- Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th ed., McGraw-Hill, 2019,§1.3, propositional equivalences and normal forms。
- Herbert B. Enderton, A Mathematical Introduction to Logic, 2nd ed., Academic Press, 2001,§1.5, Exercise 9, conjunctive normal form。