一、参考资料及问题
命题变元及其否定统称为文字。仅由有限个文字构成的析取式称为简单析取式。
设p、q为二个命题变元
p,q,p∨p,q∨q,¬p∨q, ¬q∨ ¬p,p∨q,p∨ ¬q 称为简单析取式
由有限个简单合取式构成的析取式称为析取范式(disjunctive normal form),简称DNF。
给定一个2DNF,如:,找一个算法,使得它能在多项式时间里判定任一给定的2DNF是否可满足,如果可满足,给每一个变量(如上例中的
,
,
,
)一个真值指派(true或false),使得该2DNF的值为true。
二、程序功能说明
允许用户以一种非常简单的形式输入一个2DNF来进行测试
能够在多项式时间里判断一个2DNF是否可满足。
能够在多项式时间里给出一个可满足的2DNF的真值指派。
三、算法的设计
例如用2DNF 。2DNF可满足问题的多项式时间算法要借助于图论中的知识。下面的规则说明了如何把一个2DNF转化为一个有向图G=<V,E>:
(1)把2DNF的每个变量及这个变量的非都作为图G的顶点。显然若这个2DNF有3个变量,那么将有6个顶点。
(2)有从顶点 指向顶点
的边当且仅当在这个2DNF字句中有子句
。显然每个字句
对应两条有向边:从顶点
指向顶点
的有向边和从顶点
指向
的有向边。