Skip to content

定义Definition

合取范式

施工中 · 内容逐步修订

Conjunctive normal form · CNF

由文字的析取形成子句,再对这些子句取合取所得的命题公式形状。

形式陈述 ​

在命题逻辑中,文字是命题变量 p 或其否定 ¬p;子句是有限个文字的析取;合取范式(CNF)是有限个子句的合取:

⋀i=1m(⋁j=1kiℓij).

范式定理:每个命题公式都与某个 CNF 公式逻辑等价。构造性证明分三步:消去 →,↔(改写为 ¬,∧,∨);用 De Morgan 律与双重否定律把否定推到变量跟前(得否定范式);用 ∨ 对 ∧ 的分配律 A∨(B∧C)≡(A∨B)∧(A∨C) 完成外层重组。每个子句至多含 k 个文字的 CNF 称为 k-CNF。

直觉

CNF 是一份必须全部满足的约束清单。外层合取要求每条子句成立,内层析取只要求至少一个文字为真;一个子句失败,恰好意味着其中所有文字为假。例如 (p∨q)∧(¬p∨r) 在已知 q 为假时,第一条迫使 p 为真,第二条随即迫使 r 为真。子句既能检查结果,也能传播已经确定的取值。

CNF 的永真性容易逐子句检查:每条子句都必须包含某对 p,¬p,才能在所有赋值下为真;空合取按约定也永真。可满足性则要找到同时满足所有子句的赋值,不同子句的要求可能互相冲突,一般问题是 NP 完全的。与之对偶的析取范式是若干合取方案任选其一,它的可满足性可以逐项检查。不能把“给定赋值容易检查”误解成“一定容易找到赋值”。

例子与边界

(p∨¬q)∧(q∨r) 已是 CNF。把 p∨(q∧r) 按分配律展开得 (p∨q)∧(p∨r),逐行检查真值表即可核对等价。退化情形按约定处理:空子句(零个文字的析取)没有可为真的选项,恒假;空合取(零个子句)没有约束,恒真——这两条约定使归结证明"导出空子句即矛盾"的说法严格成立。

边界之一是规模:逐层分配可能指数爆炸,当 n≥1 且这 2n 个变量两两不同时,公式 (p1∧q1)∨⋯∨(pn∧qn) 的任何只使用原变量的等价 CNF 都至少需要 2n 个子句。这个下界可直接转用DNF 的极小满足赋值论证:否定该公式得到 ⋀i(¬pi∨¬qi),把各变量真值同时取反便是链接页的例子;而含 m 个子句的 CNF 取否定后只有 m 个 DNF 项,所以 m≥2n。

工程上可用Tseitin 转换:为每个内部子公式引入新变量,用短子句固定相应门的双向定义,并额外用单位子句断言根变量为真。根本身若只是文字,就直接断言该文字。对有界元数的公式或电路节点,输出规模与原表示线性相关。但保证随之减弱——Tseitin 转换通常不保证扩充变量上的逐点逻辑等价,而保证等可满足:新公式可满足当且仅当原公式可满足,其满足赋值投影回原变量恰给原公式的模型。两种保证不可混用:需要在所有赋值下逐点一致时(如电路等价性验证的规格端)等可满足的替身不能顶替等价的原式。

推论与应用

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。
关系图谱25 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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