联结词的完备集与可满足性问题与消解法

2.3联结词的完备集

 

定义2.6称F:{0,1}n→{0,1}为n元真值函数

在这个定义中,F的自变量为n个命题变项,定义域{0,1}n={00...0,00...1,...,11...1},即由0,1组成的长为n的符号串的全体,值域为{0,1}.n个命题变项共可构成22n个不同的真值函数.1元真值函数共有4个,如表2.5所示;2元真值函数共有16个,如表2.6所示;3元真值函数共有223=256个

一元真值函数举例:p^┓p, p, ┓p, pV┓p,二元以上略。

 

每个真值函数与惟一的一个主析取范式(主合取范式)等值.例如F0(2)<=>0(矛盾式),F2(2)<=>(P^┓q)<=>m2,F3(2)(p^┓q)V(p^q)<=>m2Vm3,...,而每个主析取范式对应无穷多个等值的命题公式,每一个命题公式又都有惟一等值的主析取范式,所以每个真值函数对应无穷多个等值的命题公式,每个命题公式又都对应惟一的等值的真值函数。

定义2.7设S是一个联结词集合,如果任何n(n≥1)元真值函数都可以由仅含S中的联结词构成的公式表示,则称S是联结词完备集

定理2.6 S={┓^,V}是联结词完备集

 因为任何n(n≥1)元真值函数都与惟一的一个主析取范式等值,而在主析取范式中仅含联结词┓,^,V所以s={┓,^,V}是联结词完备集

推论 以下联结词集都是联结词完备集

  1. S1={┓,^,V,->}
  2. S2={┓,^,V,->,<->}
  3. S3={┓,^}
  4. S4={┓,V}
  5. S5={┓,->}

 (1),(2)是显然的 (定义)

  1. 由于S={┓,^,V}是联结词完备集,因而只需证V可用┓和^表示.事实上,PVq<=>┓┓(pVq)<=>(┓p^┓q),所以联结词完备集
  2.  

(4),(5)略

可以证明恒取0值的真值函数(即与矛盾式等值的真值函数)不能用仅含^,V,->,<->的公式表示,因而{^,V,->,<->}不是联结词完备集,进而它的任何子集都不是联结词完备集,因此{A},{V},{^,->},{^,V,->},{^,V,<->}等也都不是联结词完备集

计算机硬件设计中,用与非门或者用或非门设计逻辑线路.这是两个新的联结词,并且它们各自能构成联结词完备集

定义2.8设p,q是两个命题,复合命题“p与q的否定式”称作P,q的与非式,记作p↑q即,p↑q<=>┓(p^q).符号↑称作与非联

复合命题“p或q的否定式”称作p,q的或非式,记作p↓q.即,P↓q<=>┓(pVq).符号↓称作或非联结词

由定义不难看出,p↑q为真当且仅当p与q不同时为真,P↓q为真当且仅当p与q同时为假

定理2.7 {↑},{↓}都是联结词完备集

 已知{┓,^,V为联结词完备集,因而只需证明其中的每个联结词都可以由↑表示即可.事实上可推导完成。

 

 

2.4可满足性问题与消解法

 

命题公式的可满足性问题是算法理论的核心问题之一.我们已经知道这个问题可以用真值、主析取范式或主合取范式解决,但这两个方法的计算量都很大.本节介绍一个新的方法——消解法

由于任一公式都能化成等值的合取范式,因而一般的命题公式的可满足性问题可以归结为合取范式的可满足性问题。

不失一般性,我们假设一个简单析取式中不同时出现某个命题变项和它的否定,否则它为永真式,可以把它从合取范式中消去.称不含任何文字的简单析取式为空简单析取式,记作λ.规定空简单析取式是不可满足的,(因为对任何赋值,空简单析取式中都没有文字为真.)因而,含有空简单析取式的合取范式是不可满足的

设L是一个文字,记

Lc= |┓P, 若L=p

   |P, 若L=┓p

称作文字L的

下面用S表示合取范式,用C表示简单析取式,用L表示文字.设α是关于S中命题变项的赋值,用α(L),α(C)和α(S)分别表示在α下L,C和S的值.又设S和S'是两个合取范式,用S≈S'表示S是可满足的当且仅当S'是可满足的

下面给出消解规则及其性质

定义2.9设C1,C2是两个简单析取式,C1含文字L,C2含Lc从C1中删去L,从C2中删去Lc,然后再将所得到的结果析取成一个简单析取式,称这样得到的简单析取式为C1,C2的(以L和Lc为消解文字的)消解式或消解结果,记为Res(C1,C2).即,设C1=C1’,C2=C2’VLc

Res(C1, C2)=C1’ VC2’

根据上述定义由C1,C2得到Res(C1,C2)的规则称作消解规则

可以证明,如果C1,C2可对多对文字消解,其消解结果都是等值的(见习题34).例如,C1=┓PVqVr,C2=pV┓rVsVt可消解为qVrV┓rV┓sVt(以p和┓p为消解文字),或者消解为 ┓pvqvpv┓sVt(以r和┓r为消解文字),都是永真式

定理2.8 C1^C2 ≈ Res(C1,C2)

 记C=Res(C1,C2),设消解文字为L,Lc,不妨设C1=C1’VL,C2=C2’VLc,于是C=C1’ VC2’

假设C1^C2是可满足的,α是满足它的赋值,不妨设α(L)=1.由于α满足C2,C2必含有文字L’≠L且α(L’)=1.而C中含L’,故α满足C

反之,假设C是可满足的,α是满足它的赋值.C必含有文字L’使得α(L’)=1,不妨设C1’含有文字L’,于是α满足C1·如果L’=Lc,则α也满足C2,从而C1^C2是可满足的.如果L’≠Lc,注意到L’≠L,可取赋值α'如下

α’(p) = |0, 若p=L

   |1, 若p=Lc

    |α(p), 其他

则C1含有L’且α’(L’)=α(L’)=1,α’满足C1;又C2含有Lc且α'(Lc)=1,α'满足C2.从而,C1^C2是可满足的

注意:C1^C2与Res(C1,C2)具有相同的可满足性,但它们不一定等值.从定理的证明中可以看到,任何满足C1^C2的赋值都满足Res(C1,C2),但满足Res(C1,C2)的赋值不一定满足C1^C2例如, pvqVr,pV┓r可消解为pVq,α=011满足pVq,但不满足( pvqvr)^(pV┓r).α'=010是后者的满足赋值.

给定一个合取范式S,从S的简单析取式开始,重复使用消解规则可以得到一个简单析取式序列.根据定理2.8,如果S是可满足的,得到的所有简单析取式都是可满足的.如果最后得到空简单析取式λ,则S不是可满足的.

定义2.10设S是一个合取范式,C1,C2,…,Cn。是一个简单析取式序列,如果对每一个i(1≤i≤n),Ci是S中的一个简单析取式或者Ci是它之前的某两个简单析取式Cj,Ck(1≤j<k<i)的消解结果,则称此序列是由S导出Cn的消解序列.当Cn=λ时,称此序列是S的一个否证

根据这个定义和定义上面的那一段话,有

推论 如果合取范式S有否证,则S不是可满足的

现在的问题是,如果合取范式S有否证,则S不是可满足的,S是否一定有否证?回答是肯定的

引理2.9设S含有简单析取式L,从S中删去所有包含L的简单析取式,再从剩下的简单析取式中删去Lc,把这样得到的合取范式记作S',则S≈S’

 假设S是可满足的,是满足S的赋值.由于S含有简单析取式L,必有α(L)=1,从而a(Lc)=0.对S'中的任一个简单析取式C’,S中有一个简单析取式C使得C=C’或C=’VLc.因为a使C为真且α(Lc)=0,C’必含有L’使得α(L’)=1,从而α满足C’得证S是可满足的

反之,假设S’是可满足的α'是满足S’的赋值.由于S’不含L和L’,可把α’扩张到L上得到对S的命题变项的赋值:

Aα(P)= |α’(P), 若P在S’中出现

   |1, 若P=L

   |0, 若P=Lc

于是,对S中的任一简单析取式C,若C含L,则α满足C.若C不含L,则S’中有C’使得C=C’或C=C’VLc.而α'满足C’,α和α'在S’上相同,故α满足C.得证S是可满足的

定理2.10(消解的完全性)如果合取范式S是不可满足的,则S有否证

 设S中含有k个命题变项,用数学归纳法证明

当k=1时,S中只有一个命题变项,设为p.由于S是不可满足的,S中必同时含有简单析取式p和┓p,从而S有否证

假设当k<n(n≥2)时定理成立,要证k=n时定理也成立

任意取定S中的一个命题变项P,令S1表示S中所有含P的简单析取式,S2表示S中所有含┓P的简单析取式,S3表示S中所有既不含P又不含┓p的简单析取式.S’是如下得到的合取范式:先删去S中所有含p的简单析取式,然后再从剩下的简单析取式中開去文字┓p.S'是2个子合取范式S2’和S3的合取,其中S2’是删去S2的所有简单析取式中的┓p后得到合取范式,令S’’是如下得到的子句集:先删去S中所有含┓p的简单析取式,然后再从剩下的简单析取式中删去文字p.S"也是2个子合取范式S1’和S3的合取,其中S1’是删去S1的所有简单析取式中的p后到合取范式.由引理2.9,S^p≈S',S^(┓p)≈S’’.由于S是不可满足的,S^P和S^(┓p)都是不可满足的,故S'和S"也是不可满足的.而S'和S"中的命题变项个数都小于n,根据归纳假设,存在从S’和S"导出λ的消解序列C1,C2,…,Ci和D1,D2,…Dj其中Ci=Dj=λ.如果Ct(1≤t≤i)是仅由S3中的简单析取式消解得到的,则称Ct是与S2’无关的;否则称Ct是与S2’有关的,可类似地定义Dt(1≤t≤j)是与S1’无关的和是与S1’有关的.分两种情况讨论如下:

  1. Ci是与S2’无关的,或者Dj是与S1’无关的.此时可由S3中的简单析取式消解得到λ,这个消解序列也是S的一个否证
  2. Ci是与S2’有关的且Dj是与S1’有关的,对每一个1≤t≤i,令

Ct’= |Ct V (┓p), 若Ct与S2’有关

    |Ct, 若Ct与S2’无关

对每一个1≤t≤j,令

Dt’= |Dt V p, 若Dt与S1’有关

    |Dt, 若Dt与S1’无关

不难看出C1’,C2’,…,Ci’和D1’,D2’,…,Dj’都是S的消解序列,分别得到Ci’=┓P和Dj’=p而Res(Ci’,Dj’)=λ.因此,C1’,C2’,…,Ci’,D1’,D2’,…,Dj’,λ是S的一个否证

k=n时定理成立得证

根据定理2.8的推论与定理2.10,我们得到下述结论

推论 合取范式S是不可满足的当且仅当它有否证

下面给出判断合式公式是否是可满足的消解算法

消解算法:

输入:合式公式A

输出:当A是可满足时,回答“yes";否则回答”no”

  1. 求A的合取范式S
  2. 令S0和S2为不含任何元素的集合,S1为S的所有简单析取式组成的集合
  3. 对S0中的每一个简单析取式C1与S1中的每一个简单析取式C2
  4.   如果C1,C2可以消解则
  5.     计算C=Res(C1,C2)
  6.     如果C=入 则
  7.         输出“no”,计算结東
  8.     如果S0与S1都不包含C则
  9.         把C加入S2
  10. 对S1中的每一对子句C1,C2
  11.   如果C1,C2可以消解则
  12.     计算C=Res(c1,c2)
  13.     如果C=入则
  14.         输出”no”,计算结東
  15.     如果S0与S1都不包含C则
  16.           把C加入S2
  17. 如果S2中没有任何元素则
  18.   输出“yes”,计算结束
  19. 否则把S1加入S0令S1等于S2,清空S2,返回3

由于S中只有有限个命题变项,有限个命题变项只能构成有限个不同的简单析取式,算法从3到19的循环至多进行有限次,从而算法必在有限步内终止.如果计算结束在步骤7或14,此时已得到空简单析取式根据定理2.8的推论,公式是不可满足的,算法回答正确;如果计算结束在步骤18,此时已计算出S能够通过消解产生的所有简单析取式,这些简单析取式中没有空简单析取式,因而S没有否证。根据定理2.10,公式是可满足的,算法回答正确.算法是正确的得证。

 

发布了39 篇原创文章 · 获赞 38 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/FRESHET/article/details/99641727
今日推荐