“令 $k,t\ge1$ 为整数,$F$ 是有限变量集上的DNF,每个合取项最多含 $k$ 个文字。先删除矛盾项和重复文字。对 $0\le p\le1$,随机限制 $\rho\sim\math…”
形式陈述
在命题逻辑中,文字是命题变量或其否定;项(合取项)是有限个文字的合取;析取范式(DNF)是有限个项的析取:
范式定理:每个命题公式都与某个 DNF 公式逻辑等价。存在两条标准构造路线。语法路线:消去
直觉
DNF 把布尔条件整理成“成功方案清单”:每个项给出一组足以让公式为真的条件,外层析取表示满足其中一组即可。完全 DNF 进一步把每个变量的真假都写进项中,相当于把真值表中为真的行逐行抄成公式。由于任意真值表都能这样表示,
合取范式(CNF)则像“约束清单”,所有子句都必须通过。这个结构差别影响判定方法:DNF 只要有一个不含矛盾的项就可满足;CNF 只要每个子句都永真,整个公式就永真。反过来判定 DNF 的永真性或 CNF 的可满足性,就需要处理各项或各子句之间的组合。
例子与边界
若一项同时含
给定 DNF,若变量已编号为
可满足性容易判定,并不意味着满足赋值的精确计数也容易:不同项可能覆盖同一个赋值。不过,显式 DNF 的每项大小已知且易于抽样,随机近似计数可以在带项标签的样本中为每个赋值只保留一个代表,从而得到控制相对误差和失败概率的 FPRAS。
即使放宽为“等可满足”,若能在多项式时间内把任意命题公式转换成 DNF,结合上述线性判定算法,就会得到
公式
固定变量集后,完全 DNF 由真值表中为真的行决定,除项与项内文字的排列外是唯一的。一般 DNF 则可以省略无关变量、合并条件,存在许多等价写法;寻找最小表示是另一项计算任务,Quine–McCluskey 等方法针对的正是这种化简。
推论与应用
DNF 适合表示按情形列出的条件。规则引擎中,一项可以表示一条规则的触发条件;数据库查询中,一项可以表示一组同时满足的筛选要求。一个满足赋值只要命中其中一个自洽项,就为公式可满足提供了直接见证。
在布尔电路中,各合取项可由 AND 门计算,再用一个 OR 门汇总;若否定文字已作为输入提供,这就是两层 AND-OR 结构。逻辑最小化通过删除冗余项、合并条件等方式减少所需的门与输入连接。
DNF 与 CNF 经 De Morgan 律在否定下互换:否定一个 DNF 会把外层析取变成合取、内层合取变成析取。这使一类范式中的化简与判定问题,可以转为另一类范式中的对偶问题。
参考资料
- Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th ed., McGraw-Hill, 2019,§1.3, disjunctive normal form from truth tables。
- Herbert B. Enderton, A Mathematical Introduction to Logic, 2nd ed., Academic Press, 2001,§1.5, Corollary 15C, disjunctive normal form。