精华内容
下载资源
问答
  • 析取范式和合取范式

    2021-04-06 14:56:00
    析取范式 命题公式A如果可等价地写成如下形式: A1 V A2 V … An(n>=1) 其中每个项Ai(i=1,2…,n)是命题变元或其否定形式的合式,称该公式为A的析取范式。 例:P<->Q <=> (P ^ Q) V (!P ^ !Q) 合...

    析取范式

    命题公式A如果可等价地写成如下形式:

    A1 V A2 V … An(n>=1)

    其中每个项Ai(i=1,2…,n)是命题变元或其否定形式的合取式,称该公式为A的析取范式。

    例:P<->Q <=> (P ^ Q) V (!P ^ !Q)

    合取范式

    命题公式A如果可等价的写成如下形式:

    A1 ^ A2 ^ … ^An(n>=1)

    其中每个项Ai(i=1,2,…,n)是命题变元或其否定形式的析取式,称该公式为A的合取范式.

    例:P <-> Q <=> (!P V !Q) ^ (P V !Q)

    (!P V !Q) ^ (P V !Q)是P <-> Q的合取范式

    在析取范式与合取范式中只含有联结词"! , V , ^"

    " ! "在命题变元之前

    注:P ^ Q 既是合取范式,也是析取范式

    !A(P1,P2,…,Pn) <=> A*(!P1,!P2,…,!Pn)

    展开全文
  • 析取范式和合取范式基本操作代码

    千次阅读 2018-12-10 21:41:40
     cout主析取范式为:";  shiz(p,s,"\\/",'T');  cout主合取范式为:";  shiz(p,s,"/\\",'F'); } void panduan(int s,int p,char *a,char c){  cout(";  if (a=="\\/")  a="/\\";  else if(a=="/\\") ...

    #include <iostream>
    #include <math.h>
    using namespace std;
    void shuru(char *p,int s);
    void shuchu(char *p,int s);
    void panduan(int s,int p,char *a,char b);
    void shizi(char *p,int s);
    void shiz(char *p,int s,char *a,char b);
    char b[10]={'p','q','r','s','d','m','n','l','j','k'};
    int main()
    {
        int n;
        cout<<"input the value of n"<<endl;
        while(!(cin>>n))
        {
        cin.clear();
        cin.sync();
        cout << "不是数字"<<endl;
        }
        cout<<"input T or F"<<endl; 
        char a[100];
        shuru(a,n);
        cout<<"----------------------"<<endl;
        for(int i=0;i<n;i++){//根据命题数输出命题符号 
            cout<<b[i]<<"        ";
            }
        cout<<"VALUE"<<endl;
        shuchu(a,n);
        shizi(a,n);
    }
    void shuru(char *p,int s){
        for (int i=0;i<pow(2,s);i++)//判断输入的是否为F或者T,若是,存入数组a,反之,跳过 
        {
                char h; 
                while(1)
                {
                    cin>>h;
                    if(h=='T' || h=='F')
                    {
                    p[i]=h;
                    break;
                    }
                    else
                    {
                        getchar();
                    }
                }
        }
    }
    void shuchu(char *p,int s){
        int k=0,c[2]={0,1};
        while(k<pow(2,s))//输出每个命题的真值 
        {
            for(int i=0;i<s;i++){
            if(int(k/pow(2,s-i-1))%2)
            cout<<"T"<<"        ";
            else
            cout<<"F"<<"        "; 
            }
            cout<<p[k]<<endl;
            k++;
        }
        cout<<endl;
    }
    void shiz(char *p,int s,char *a,char b){
        int flag=0;
        for(int i=0;i<pow(2,s);i++)
        {
            if(p[i]==b){
            if(flag==1)
            cout<<a;
            panduan(s,i,a,b);
            flag=1;
            }
        }
        if(flag==0)
        if(b=='T')
        cout<<"0"<<endl;
        else
        cout<<"1"<<endl; 
    }
    void shizi(char *p,int s){
        cout<<"主析取范式为:";
        shiz(p,s,"\\/",'T');
        cout<<endl<<"主合取范式为:";
        shiz(p,s,"/\\",'F');
    }
    void panduan(int s,int p,char *a,char c){
        cout<<"(";
        if (a=="\\/")
        a="/\\";
        else if(a=="/\\")
        a="\\/";
        int flag=0;
        for(int i=0;i<s;i++){
            if(flag==1)
            cout<<a;
            if(int(p/pow(2,s-i-1))%2)
                cout<<b[i];
            else
                cout<<"非"<<b[i];
            flag=1;
            }
        cout<<")";
    }
     

    展开全文
  • 2.2析取范式与合取范式

    万次阅读 2019-08-15 11:26:13
    2.2析取范式与合取范式 本节给出命题公式的两种规范表示方法,这种规范的表达式能表达真值表所能提供的一切信息 定义2.2命题变项及其否定统称作文宇.仅由有限个文字构成的析取式称作简单析取式仅由有限个文字构成...

    2.2析取范式与合取范式

     

    本节给出命题公式的两种规范表示方法,这种规范的表达式能表达真值表所能提供的一切信息

    定义2.2命题变项及其否定统称作文宇.仅由有限个文字构成的析取式称作简单析取式仅由有限个文字构成的合取式称作简单合取式

    P,┓g;pV┓p,┓pVq和┓pV┓qVr,pV┓pVr都是简单析取式,分别由1个文字,2个文字和3个文字构成

    ┓p,q;p^p,P^┓q和p∧q^┓r, ┓P^P^q都是简单合取式,分别由1个文字,2个文字和3个文字构成.注意,一个文字既是简单析取式、又是简单合取式

    设A是含n个文字的简单析取式,若Ai中既含某个命题变项Pj又含它的否定式┓Pj,由交换律、排中律和零律可知,Ai为重言式.反之,若Ai为重言式,则它必同时含某个命题变项及它的否定式.否则若将A,中的不带否定符的命题变项都取0值,带否定符的命题变项都取1值,此赋值为Ai的成假赋值,这与Ai是重言式相矛盾.类似地,设Ai是含n个命题变项的简单合取式若Ai中既含某个命题变项Pj又含它的否定式┓Pj则Ai,为矛盾式.反之,若Ai为矛盾式,则Ai中必同时含某个命题变项pj及它的否定式.于是,得到下面的定理

    定理2.1 (1)简单析取式是重言式当且仅当它同时含某个命题变项及它的否定式

    1. 一个简单合取式是矛盾式当且仅当它同时含某个命题变项及它的否定式

    定义2.3由有限个简单合取式的析取构成的命题公式称为析取范式,由有限个简单析取式的合取构成的命题公式称为合取范式,

    析取范式与合取范式统称为范式析取范式的一般形式为A1VA2V…VAi,其中A,(i=1,2,…,s)为简单合取式;合取范式的般形式为B1^B2^...^Bj,其中B(j=1,2,…,t)为简单析取式例如,(P^┓q)V(┓q^┓r)Vp为析取范式(pVqVr)^(┓pV┓q)^(┓pV┓rVs)为合取范式.┓P^q^r既是由一个简单合取式构成的析取范式,又是由3个简单析取式构成的合取范式;类似地, pv┓qvr既是由3个简单合取式构成的析取范式,又是由一个简单析取式构成的合取范式。(看定义)

    析取范式和合取范式具有下述性质

    定理2.2 (1)一个析取范式是矛盾式当且仅当它的每个简单合取式都是矛盾式

    (2)一个合取范式是重言式当且仅当它的每个简单析取式都是重言式

    到现在为止,我们研究的命题公式中含有5个联结词{∧,V,┓,→,<->},如何把这样的命题公式化成等值的析取范式和合取范式?

    首先,可以利用蕴涵等值式与等价等值式

    A→B<=>┓AVB |

    A<->B<=>(┓AVB)∧(AV┓B) |(2.17)

    消去任何公式中的联结词→和<->

    其次,在范式中不出现如下形式

    ┓┓A, (┓A^B), ┓(AVB)

    对其利用双重否定律和德摩根律,可得

    ┓┓A<=>A |

    ┓(A^B)<=>┓AV┓B |

    ┓(AVB)<=>┓A^┓B |(2.18)

    再次,在析取范式中不出现如下形式:

    A^(BVC)

    在合取范式中不出现如下形式

    AV(B^C)

    利用分配律,可得

    A^(BVC)<=>(A^B)V(A^C)

    AV(B^C)<=>(AVB)^(AVC)

    上述3步,可将任一公式化成与之等值的析取范式和合取范式.于是,得到下述定理

    定理2.3(范式存在定理) 任一命题公式都存在与之等值的析取范式与合取范式

    求给定公式范式的步骤

    1. 为消去联结词->,<=>
    2. 用双重否定律消去双重否定符,用德摩根律内移否定符3.
    3. 使用分配律:求析取范式时使用^对V的分配律,求合取范式时使用V对^的分配律

    例2.7求下面公式的析取范式与合取范式:

    (p->q)<->r

    解为了清晰和无误,利用交换律使每个简单析取式和简单合取式中命题变项都按字典顺出现。

    1. 先求合取范式

    (p->q)<->r

    <=> (┓pVq)<->r (消去→)

    <=> ((┓pVq)→r)∧(r→(┓pVq)) (消去<->)

    <=> (┓(┓pVq)Vr)∧(┓rV┓pVq) (消去→)

    <=> ((P∧┓q)Vr)∧(┓pVqV┓r) (否定符内移)台

    <=> (PVr)∧(qVr)∧(┓pVq┓r) (v对∧的分配律)

    含3个简单析取式的合取范式

    1. 求析取范式求析取范式与求合取范式的前两步是相同的,只是在利用分配律时有所不同,因而前4步与(1)相同,接着使用∧对V的分配律

    (p-q)<->r

    <=>((p^┓q)Vr)^( ┓pVqV┓r)

    <=>(p^┓q^┓p)V(P^┓q^q)V(p^┓q^┓r)

    V(r^q)V(r^┓q) (^对V的分配律)

    <=>(p^┓q^┓r)V(┓p^r)V(q^r) (矛盾律和同一律)

    最后两步的结果都是析取范式,一般地,命题公式的析取范式是不惟一的同样,合取范式也是不惟一的为了使命题公式的范式惟一,进一步将简单合取式和简单析取式规范化,定义如下

    定义2.4在含有n个命题变项的简单合取式(简单析取式)中,若每个命题变项和它的否定式恰好出现一个且仅出现一次,而且命题变项或它的否定式按下标从小到大或按字典顺序排列,称这样的简单合取式(简单析取式)为极小项(极大项)

    由于每个命题变项在极小项中以原形或否定形式出现且仅出现一次,因而n个命题变项共可产生2"个不同的极小项.每个极小项都有且仅有一个成真赋值.若极小项的成真赋值所对应内二进制数等于十进制数i,就将这个极小项记作mi类似地,n个命题变项共可产生2"个不同的极大项,每个极大项只有一个成假赋值,将其对应的十进制数i做极大项的角标,记作Mi 表2.3和表2.4分别列出含p,q与p,q,r的全部极小项和极大项

     

    根据表2.3和表2.4可以直接验证极小项与极大项之间有下述关系

    定理2.4设mi与Mi是命题变项含P1,P2,...,P3的极小项和极大项,则

    ┓mi<=Mi ┓Mi<=>mi

    定义2.5所有简单合取式(简单析取式)都是极小项(极大项)的析取范式(合取范式)为主析取范式(主合取范式)

    下面讨论如何求出与给定公式等值的主析取范式和主合取范式,首先证明它的存在性和惟一性,再给出它的求法

    定理2.5任何命题公式都存在与之等值的主析取范式和主合取范式,并且是惟一的

     这里只证主析取范式的存在性和惟一性

    首先证明存在性设A是任一含n个命题变项的公式.由定理2.3可知,存在与A等值的析取范式A',即A<=>A’·若A'的某个简单合取式A,中既不含命题变项Pj,也不含它的否定式┓Pj,则将Ai展成如下等值的形式

    A1^(PjV┓pj)<=>(Ai^Pj)V(Ai^┓Pj)继续这个过程,直到所有的简单合取式都含有所有的命题变项或它的否定式

    若在演算过程中出现重复出现的命题变项以及极小项和矛盾式时,都应“消去”:如用p代替p∧p,m代替miVmi,0代替矛盾式等.最后就将A化成与之等值的主析取范式A"

    下面再证明惟一性.假设命题公式A等值于两个不同的主析取范式B和C,那么必有B<=>C由于B和C是不同的主析取范式,不妨设极小项mi只出现在B中而不出现在C中.于是,角标i的二进制表示为B的成真赋值,而为C的成假赋值,这与B<=>C矛盾

    主合取范式的存在惟一性可类似证明

    在证明定理2.5的过程中,已经给出了求主析取范式的步骤为了醒目和便于记忆,求出某公式的主析取范式(主合取范式)后,将极小项(极大项)都用名称写出,并且按极小项(极大项)名称的角标由小到大顺序排列

    例2.8求例2.7中公式的主析取范式和主合取范式

    解(1)求主析取范式在

    例2.7中已给出公式的析取范式,即

    (p-q)<->r

    <=>(p^┓q^┓r)V(┓p^r)V(q^r)

    在此析取范式中,第一项p^┓q^┓r是极小项m4。,另外两个简单合取式┓p^r,q^r都不是极小项.下面先分别求出它们派生的极小项,注意,因为公式含有3个命题变项,所以极小项均由3个文字组成

    ┓p^r

    <=> ┓p^(┓qVq)^r

    <=> (┓p^┓q^r)V(┓p^qVr)

    <=> m1Vm3

    Q^r

    <=>(┓pVp)^q^r

    <=>(┓p^q^r)V(p^q^r)

    <=>m3Vm7

    于是

    (p->q)<->r<=>m1Vm3Vm4Vm7

    (2)求主合取范式

    由例2.7已求出公式的合取范式,

    (p->q)<->r

    <=> (pVr)^(┓qVr)^(┓pVqV┓r)

    其中┓pVqV┓r已是极大项M5,利用矛盾律和同一律将另两人个简单析取式化成极大项

    Pvr

    <=>pV(q^┓q)Vr

    <=>(pVqVr)^(pV┓qVr)

    <=>M0Vm2

    ┓qVr

    <=>(p^┓p)V┓qVr)

    <=>(pV┓qVr)^(┓pV┓qVr)

    <=>M2Vm6

    于是

    (p->q)<->r<=>M0VM2VM3VM6

    例2.9 求命题公式p->q的主析取范式与主合取范式。

    解 本公式 中含两人个命题变项,所心权小项和极大项均含两个文字。

    1. P->q

    <=>┓pVq

    <=>M2 (主合取范式)

    1. P->q

    <=>┓pVq

    <=>(┓p^(┓qVq))V((┓pVp)^q)

    <=>(┓p^┓q)V(┓p^q)V(┓p^q)V(p^q)

    <=>(┓p^┓q)V(┓p^q)V(p^q)

    <=>m0Vm1Vm3 (主析取范式)

    由例2.8与2.9可知,在求给定公式的主析取范式(主合取范式)时,一定要根据公式中命题变项的个数决定极小项(极大项)中文字的个数.

    下面讨论主析取范式的用途(主合取范式可类似讨论).主析取范式像真值表一样,可以表达出公式以及公式之间关系的一切信息

    1. 求公式的成真赋值与成假赋值

    若公式A中含n个命题变项,A的主析取范式含s(0≤s≤2n)个极小项,则A有s个成真赋值,它们是所含极小项角标的二进制表示,其余2n-s个赋值都是成假赋值.例如,例2.8中(p→q)<->r<=>m1Vm3Vm4Vm7.这里有3个命题变项,将主析取范式中各极小项的角标1,3,4,7写成长为3的二进制数,它们分别为001,011,100,111这4个赋值即为该公式的成真赋值.而主析取范式中未出现的极小项m0,m2,m3,m6。的角标的二进制表示000,010,101,110为该公式的成假赋值.又如例2.9中,p→q<=>m0Vm,Vm3,含两个命题变项,极小项的角标的二进制表示00,01,11为该公式的成真赋值,而10是它的成假赋值

    1. 判断公式的类型

    设公式A中含n个命题变项,容易看出

    1. A为重言式当且仅当A的主析取范式含全部2°个极小项
    2. A为矛盾式当且仅当A的主析取范式不含任何极小项.此时,记A的主式为0
    3. A为可满足式当且仅当A的主析取范式中至少含一个极小项

    例2.10用公式的主析取范式判断下述公式的类型

    1. ┓(p->q)^q
    2. p→(PVq)
    3. (pVg)→r

     注意,(1),(2)中公式含两个命题变项,极小项含两个文字,而(3)中公式含3个命题变项,因而极小项中应含3个文字

    1.  ┓(p->q)^q

    <=> ┓(┓pVq)^q

    <=> (p^┓q)^q

    <=>0

    这说明该公式是矛盾式。

    1. P->(pVq)

    <=>┓pVpVq

    <=>(┓p^(┓qVq))V(p^(┓qVq))V((┓pVp)^q)

    <=>(┓p^┓q)V(┓p^q)V(p^┓q)V(p^q)V(┓p^q)V(p^q)

    <=>(┓p^┓q)V(┓p^q)V(p^┓q)V(p^q)

    <=>m0Vm1Vm2Vm3

    由于主析取范式含两个命题变项的全部22=4个极小项,故该公式为重言式。

    其实,以上演算到第就已知该公式等值于1,因而它为重言式,如果要写出它的主析取范式,由1可直接写出全部极小项:

    1. >(pVq)

    <=>┓pVpVq

    <=>1

    <=>m0Vm1Vm2Vm3

    1. (pVq)->r

    <=>┓(pVq)Vr

    <=>(┓p^┓q)Vr

    <=>(┓p^┓q)Vr(下为凑式子)

    <=>(┓p^┓q^(┓rVr))V((┓pVp)^(┓qVq)^r)

    <=>(┓p^┓q^┓r)V(┓p^┓q^r)V(┓p^q^r)v(p^┓

    <=>(┓p^┓q^┓r)V(┓p^┓q^r)V(┓p^q^r)V(p^┓q^r)V(p^q^r)

    <=>m0Vm1Vm3Vm5Vm7

    该公式是可满足的,但不是重言式,因为它的主析取范式没含全部8个极小项。

    1. 判断两个命题公式是否等值
    1. 设公式A,B共含有n个命题变项,按n个命题变项求出A与B=B’,则A<=>B,否则A<≠>B

    例2.11判断下面两组公式是否等值

    1. P与(P^q)V(p^┓q)
    2. (P→q)→r与(P^q)->r

    (1)这里有2个命题变项,因而极小项含2个文字

    P

    <=>p^(┓qVq)

    <=>(p^┓q)V(p^q)

    <=>m2 Vm3

    (p^q)V(p^┓q)

    <=>m2,Vm3

    所以

    P<=>(p^┓q)V(p^q)

    这里有3个命题变项,因而极小项含3个文字.经过演算得到

    (p->q)->r

    <=>m1Vm3Vm4Vm5Vm7

    (p^q)->r

    <=>m0Vm1Vm2Vm3Vm4Vm5Vm7

    两者的主析取范式不同,所以

    (p->q)->r <≠> (p^q)->r

    最后举一个应用主析取范式分析和解决实际问题的例子

    例2.12某科研所要从3名科研骨干A,B,C中挑选1~2名出国进修.由于工作需要,选派时要满足以下条件:

    1. 若A去,则C同去.
    2. 若B去,则C不能去
    3. 若C不去,则A或B可以去

    问所里有哪些选派方案?

    解 设p:派A去

    q:派B去

    R:派C去

    由已知条件可得公式(p->r)^(q->┓r)^(┓r->(pvq))

    该公式的成真赋值即为可行的选派方案.经过演算得到

    (p->r)^(q->┓r)^(┓r->(pvq))

    <=>(┓pVr)^(┓qV┓r)^(┓┓rV(pVq))

    <=>((┓pVr)^┓q)V((┓pVr)^┓r)^(pVqVr)

    <=>((┓p^┓q)V(r^┓q))V((┓p^┓r)V(r^┓r))^(pVqVr)

    <=>(┓p^┓q^p)V(p^┓q^r)V...(此处展开大量计算略)

    <=>(┓p^┓q^r)V(┓p^q^┓r)V(p^┓q^r)

    <=>m1, V m2, V m3故有3种选派方案

    1. C去,A,B都不去
    2. B去,A,C都不去
    3. A,C同去,B不去

    以上讨论了主析取范式的求法与用途,也可对主合取范式做类似的讨论.关于主合取范式还要说明以下两点

    1. 由主析取范式求主合取范式

    设公式A含n个命题变项,A的主析取范式含s(0<s<2n)个极小项,即

    A=mi1Vmi2...Vmin, 0<ij<2n-1,j=1,2,...s.

    没出现的极小项为mj1,mj2,...,mj2n-1它们的角标的二进制表示为┓A的成真赋值,因而┓A的主析取范式为

    ┓A=mj1Vmj2V...Vmj2n-1

     

    这就由公式的主析取范式直接求出它的主合取范式

    例2.13利用公式的主析取范式,求主合取范式:

    1. A<=>m1Vm2(A中含2个命题变项p,q)
    2. B<=>m1Vm2Vm3(B中含3个命题变项p,q,r)

    (1)由题可知,没出现在主析取范式中的极小项为m0和m3,所以A的主合取范式中含两个极大项M0与M3,故

    A<=>M0^M3

    (2)B的主析取范式中没出现的极小项为mo,m4,m5,m6,m7因而

    B<=>M0^M4^M5^M6^M7

    反之,也可由公式的主合取范式给出主析取范式

    1. 重言式与矛盾式的主合取范式

    矛盾式无成真赋值,因而矛盾式的主合取范式含全部2n(n为公式中命题变项个数)个极大项.而重言式无成假赋值,主合取范式不含任何极大项,规定重言式的主合取范式为1.至于可满足式,它的主合取范式中极大项的个数一定小于2n

    最后,要问:n个命题变项的主析取范式(主合取范式)共有多少个?n个命题变项共可产生个极小项(极大项),因而共可产生22n

    个不同的主析取范式(主合取范式).这与在1.2节中对真值表个数的讨论情况是一样的

    事实上,A<=>B当且仅当A与B有相同的真值表,又当且仅当A与B有相同的主析取范式(主合取范式).因而可以说,真值表与主析取范式(主合取范式)是描述命题公式的两种等价的不同标准形式,两者可以相互确定,由A的主析取范式(主合取范式)可以立刻确定A的真值表由A的真值表也可以立刻确定A的主析取范式(主合取范式).

     

    展开全文
  • 显然,一个命题的析取范式和合取范式一定存在,但不一定是唯一的。为了将任意命题公式唯一地标准化,需要引入主范式。我们也会证明,为什么一个命题公式的主析取范式和主合范式是唯一的。 6.2 主析取范式 6.2.1 极...

    本文属于「离散数学」系列文章之一。这一系列着重于离散数学的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数学知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充:

    • 离散数学及其应用 第七版 Discrete Mathematics and Its Applications 7th ,作者是 Kenneth H.Rosen
    • 离散数学 第二版,武波等编著,西安电子科技大学出版社


    6. 范式

    【离散数学】数理逻辑 第一章 命题逻辑(3) 逻辑等价与蕴含中,我们了解到,一个命题公式可能具有多种等价表达形式。为了方便研究,就要对命题公式规范化,两种规范化表示形式是:主析取范式主合取范式。不过在此之前,我们需要了解文字、析取式、合取式、析取范式、合取范式等概念。

    6.1 文字、析取式、合取式、析取范式、合取范式和求取方法

    定义6.1.1 文字就是命题变元或命题变元的否定。例如, P P P ¬ R \lnot R ¬R 等都是文字。

    定义6.1.2 仅由若干文字通过联结词 ∨ \vee 构成的命题公式称为析取式。例如, R R R ¬ R \lnot R ¬R S ∨ ¬ H S\vee \lnot H S¬H 等都是析取式。

    定义6.1.3 仅由若干文字通过联结词 ∧ \wedge 构成的命题公式称为合取式。例如 R R R ¬ R \lnot R ¬R S ∧ ¬ H S\wedge \lnot H S¬H 等都是合取式。

    定义6.1.4 一个命题公式称为析取范式 disjunctive normal form ,当且仅当它具有如下形式,其中的 A 1 , A 2 , … , A n A_1, A_2, \dots, A_n A1,A2,,An 都是合取式: A 1 ∨ A 2 ∨ ⋯ ∨ A n ( n ≤ 1 ) A_1 \vee A_2 \vee \dots \vee A_n \quad (n \le 1) A1A2An(n1)

    定义6.1.5 一个命题公式称为合取范式 conjunctive normal form ,当且仅当它具有如下形式,其中的 A 1 , A 2 , … , A n A_1, A_2, \dots, A_n A1,A2,,An 都是析取式: A 1 ∧ A 2 ∧ ⋯ ∧ A n ( n ≤ 1 ) A_1 \wedge A_2 \wedge \dots \wedge A_n \quad (n\le 1) A1A2An(n1)

    任何一个命题公式,都有等价的合取范式和析取范式。具体求解步骤如下:

    1. 将公式中的联结词都归约成 ¬ , ∨ , ∧ \lnot, \vee, \wedge ¬,,
    2. 利用德摩根定律,将否定联结词 ¬ \lnot ¬ 直接移到各命题变元之前;
    3. 利用分配律、结合律,将公式归约成合取范式或析取范式。

    例1 求出 ¬ ( P ∨ Q ) ↔ ( P ∧ Q ) \lnot (P\vee Q) \leftrightarrow (P \wedge Q) ¬(PQ)(PQ) 的合取范式和析取范式:
    解答: ¬ ( P ∨ Q ) ↔ ( P ∧ Q ) ⇔ ( ¬ ( P ∨ Q ) → ( P ∧ Q ) ) ∧ ( ( P ∧ Q ) → ¬ ( P ∨ Q ) ) ⇔ ( ( P ∨ Q ) ∨ ( P ∧ Q ) ) ∧ ( ¬ ( P ∧ Q ) ∨ ¬ ( P ∨ Q ) ) ⇔ ( P ∨ Q ) ∧ ( ( ¬ P ∨ ¬ Q ) ∨ ( ¬ P ∧ ¬ Q ) ) ⇔ ( P ∨ Q ) ∧ ( ¬ P ∨ ¬ Q ) 合 取 范 式 ⇔ ( ¬ P ∧ Q ) ∨ ( P ∧ ¬ Q ) 析 取 范 式 \begin{aligned} &\lnot (P\vee Q) \leftrightarrow (P\wedge Q)\\ &\Leftrightarrow (\lnot (P\vee Q) \to (P \wedge Q)) \wedge ((P \wedge Q) \to \lnot (P \vee Q)) \\ &\Leftrightarrow ((P\vee Q) \vee (P \wedge Q)) \wedge (\lnot (P \wedge Q) \vee \lnot (P \vee Q)) \\ &\Leftrightarrow (P \vee Q)\wedge ((\lnot P \vee \lnot Q) \vee (\lnot P \wedge \lnot Q)) \\ &\Leftrightarrow (P\vee Q) \wedge (\lnot P \vee \lnot Q) \quad \mathtt{合取范式} \\ &\Leftrightarrow (\lnot P \wedge Q) \vee (P \wedge \lnot Q) \quad \mathtt{析取范式} \end{aligned} ¬(PQ)(PQ)(¬(PQ)(PQ))((PQ)¬(PQ))((PQ)(PQ))(¬(PQ)¬(PQ))(PQ)((¬P¬Q)(¬P¬Q))(PQ)(¬P¬Q)(¬PQ)(P¬Q)

    显然,一个命题的析取范式合取范式一定存在,但不一定是唯一的。为了将任意命题公式唯一地标准化,需要引入主范式。我们也会证明,为什么一个命题公式的主析取范式和主合取范式是唯一的。


    6.2 主析取范式

    6.2.1 极小项、编码及其性质

    定义6.2.1 一个含 n n n 个命题变元的合取式,如果其中每个变元与其否定不同时存在、但两者之一必须出现且仅出现一次,则称该合取式极小项 minterm

    显然, n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 可构成 2 n 2^n 2n 个不同的极小项,具有如下形式,其中 P ~ i \widetilde P_i P i 可以是 P i P_i Pi 或者是 ¬ P i \lnot P_i ¬Pi P ~ 1 ∧ P ~ 2 ∧ ⋯ ∧ P ~ n \widetilde P_1 \wedge \widetilde P_2 \wedge \dots \wedge \widetilde P_n P 1P 2P n

    对这一形式给出一个 n n n 位二进制编码(可以转换为十进制数)——当 P ~ i \widetilde P_i P i P i P_i Pi 时,第 i i i 位取值为 1 1 1 ;当 P ~ i \widetilde P_i P i ¬ P i \lnot P_i ¬Pi 时,第 i i i 位取值为 0 0 0 。以两个命题变元 P , Q P, Q P,Q 为例,编码如下:
    { m 0 = m 00 = ¬ P ∧ ¬ Q m 1 = m 01 = ¬ P ∧ Q m 2 = m 10 = P ∧ ¬ Q m 3 = m 11 = P ∧ Q \begin{cases} m_0 = m_{00} = \lnot P \wedge \lnot Q \\ m_1 = m_{01} = \lnot P \wedge Q\\ m_2 = m_{10} = P \wedge \lnot Q\\ m_3 = m_{11} = P \wedge Q \end{cases} m0=m00=¬P¬Qm1=m01=¬PQm2=m10=P¬Qm3=m11=PQ

    依次类推,含有 n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 的极小项的编码为:
    { m 0 = m 00 … 00 = ¬ P 1 ∧ ¬ P 2 ∧ ⋯ ∧ ¬ P n m 1 = m 00 … 01 = ¬ P 1 ∧ ¬ P 2 ∧ ⋯ ∧ ¬ P n − 1 ∧ P n … m 2 n − 1 = m 11 … 1 = P 1 ∧ P 2 ∧ ⋯ ∧ P n \begin{cases} m_0 = m_{00\dots00} = \lnot P_1 \wedge \lnot P_2 \land \dots \land \lnot P_n \\ m_1 = m_{00\dots01} =\lnot P_1 \wedge \lnot P_2 \land \dots \land \lnot P_{n - 1} \land P_n\\ \dots \\ m_{2^n-1} = m_{11\dots1} = P_1 \wedge P_2 \land \dots \land P_n \end{cases} m0=m0000=¬P1¬P2¬Pnm1=m0001=¬P1¬P2¬Pn1Pnm2n1=m111=P1P2Pn

    再以两个命题变元 P , Q P, Q P,Q 为例,列出其和极小项的真值表。容易验证,没有两个极小项是等价的,且每个极小项都恰好对应 P , Q P, Q P,Q 的一组赋值使其为真:

    P P P Q Q Q P ∧ Q P \land Q PQ P ∧ ¬ Q P \land \lnot Q P¬Q ¬ P ∧ Q \lnot P \land Q ¬PQ ¬ P ∧ ¬ Q \lnot P \land \lnot Q ¬P¬Q
    000001
    010010
    100100
    111000

    依次类推, n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 构成的极小项,具有以下性质:

    • 每一个极小项,当其赋值与编码相同时,其真值为 T T T ;在其余 2 n − 1 2^n - 1 2n1 种赋值下其真值均为 F F F
    • 任意两个不同极小项的合取式永假,即 m i ∧ m j ⇔ F ( i ≠ j ) m_i \land m_j \Leftrightarrow F\quad (i \ne j) mimjF(i=j)
    • 所有极小项的析取式永真,即: ∑ i = 0 2 n − 1 m i ⇔ m 0 ∨ m 1 ∨ ⋯ ∨ m 2 n − 1 ⇔ T \sum^{2^n -1 }_{i = 0} m_i \Leftrightarrow m_0 \lor m_1 \lor \dots \lor m_{2^n-1} \Leftrightarrow T i=02n1mim0m1m2n1T

    6.2.2 主析取范式和求取方法(真值表和逻辑推演)

    定义6.2.2 设 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 是命题公式 A A A 中包含的所有命题变元,若由 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 的若干极小项析取构成的析取范式 A A A 等价,则称该析取范式为 A A A主析取范式 principle disjunctive normal form

    定理6.2.1 在一个命题公式 A A A 的真值表中,使 A A A真值为 T T T 的所有赋值对应的极小项析取构成的析取范式,即为 A A A 的主析取范式。
    证明:设命题公式 A A A 的真值表中, m i 1 , m i 2 , … , m i k m_{i_1}, m_{i_2}, \dots, m_{i_k} mi1,mi2,,mik 为使命题公式 A A A 为真的赋值对应的所有极小项。下面只需证明 m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k ⇔ A m_{i_1} \lor m_{i_2} \lor \dots \lor m_{i_k} \Leftrightarrow A mi1mi2mikA(回想等价关系的证明)。

    • 对于 A A A 的任一赋值 t t t ,若 t t t 使得 A A A 为真,则赋值 t t t 对应的极小项属于 m i 1 , m i 2 , … , m i k m_{i_1} , m_{i_2} , \dots, m_{i_k} mi1,mi2,,mik 之一,且该极小项也为真(极小项性质)。因而在该赋值 t t t 下, m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k m_{i_1} \lor m_{i_2} \lor \dots \lor m_{i_k} mi1mi2mik 的真值也为真;
    • 对于 A A A 的任一赋值 t t t ,若 t t t 使得 A A A 为假,则赋值 t t t 对应的极小项不属于 m i 1 , m i 2 , … , m i k m_{i_1} , m_{i_2} , \dots, m_{i_k} mi1,mi2,,mik 之一。因而在该赋值 t t t 下, m i 1 , m i 2 , … , m i k m_{i_1} , m_{i_2} , \dots, m_{i_k} mi1,mi2,,mik 的真值均为假(极小项性质),即有 m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k m_{i_1} \lor m_{i_2} \lor \dots \lor m_{i_k} mi1mi2mik 的真值也为假;
    • 因此,对于 A A A 的任一赋值,都有 A A A m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k m_{i_1} \lor m_{i_2} \lor \dots \lor m_{i_k} mi1mi2mik 的真值相同,所以 m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k ⇔ A m_{i_1} \lor m_{i_2} \lor \dots \lor m_{i_k} \Leftrightarrow A mi1mi2mikA等价关系的定义)。

    因此特别地,可以用构造真值表的方法,求出一个给定命题公式的主析取范式。由于一个命题公式的真值表是唯一的,所以由定理6.2.1知,一个命题公式的主析取范式也是唯一的

    例2 用构造真值表的方法,求命题公式 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主析取范式。
    解答:构造真值表如下所示:

    P P P Q Q Q R R R ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR)
    0001
    0011
    0100
    0111
    1000
    1010
    1100
    1110

    所以 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主析取范式为:
    ( ¬ P ∧ ¬ Q ∧ ¬ R ) ∨ ( ¬ P ∧ ¬ Q ∧ R ) ∨ ( ¬ P ∧ Q ∧ R ) ⇔   m 000 ∨ m 001 ∨ m 011 ⇔   m 0 ∨ m 1 ∨ m 3 ⇔   ∑ ( 0 , 1 , 3 ) \begin{aligned} &(\lnot P \land \lnot Q \land \lnot R) \lor (\lnot P \land \lnot Q \land R) \lor (\lnot P \land Q \land R) \\ \Leftrightarrow\ &m_{000} \lor m_{001} \lor m_{011} \\ \Leftrightarrow\ &m_0 \lor m_1 \lor m_3 \\ \Leftrightarrow\ &\sum(0, 1, 3) \end{aligned}    (¬P¬Q¬R)(¬P¬QR)(¬PQR)m000m001m011m0m1m3(0,1,3)

    求一个命题公式的主析取范式,除了真值表方法,还有逻辑推演方法——即使用常见逻辑等价公式和替换规则、传递规则,求出它的主析取范式。原因在于,任何一个命题公式都可以求出它的析取范式,而析取范式可以转换为主析取范式。具体步骤如下:

    • 将原命题公式转换为析取范式(上接求出析取范式的步骤);
    • 每个合取式等价变换为若干极小项的析取(即对每个合取式填补没有出现的变元,如缺少 P P P ¬ P \lnot P ¬P ,则合取 ¬ P ∨ P \lnot P \lor P ¬PP ,再应用分配律展开成若干极小项的析取);
    • 重复的极小项只保留一个。

    例3 求命题公式 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主析取范式。
    解答:
    ¬ P ∧ ( Q → R ) ⇔ ¬ P ∧ ( ¬ Q ∨ R ) ⇔ ( ¬ P ∧ ¬ Q ) ∨ ( ¬ P ∧ R ) 析 取 范 式 ⇔ ( ¬ P ∧ ¬ Q ∧ ( ¬ R ∨ R ) ) ∨ ( ¬ P ∧ ( ¬ Q ∨ Q ) ∧ R ) 填 补 缺 失 变 元 ⇔ ( ¬ P ∧ ¬ Q ∧ ¬ R ) ∨ ( ¬ P ∧ ¬ Q ∧ R ) ∨ ( ¬ P ∧ Q ∧ R ) 分 配 律 ⇔   m 000 ∨ m 001 ∨ m 011 ⇔   m 0 ∨ m 1 ∨ m 3 ⇔   ∑ ( 0 , 1 , 3 ) \begin{aligned} &\lnot P \land (Q \to R) \\ \Leftrightarrow &\lnot P \land (\lnot Q \lor R)\\ \Leftrightarrow &(\lnot P \land \lnot Q) \lor (\lnot P \land R) \quad 析取范式\\ \Leftrightarrow &(\lnot P \land \lnot Q \land (\lnot R \lor R)) \lor (\lnot P \land (\lnot Q \lor Q) \land R) \quad {填补缺失变元} \\ \Leftrightarrow &(\lnot P \land \lnot Q \land \lnot R) \lor (\lnot P \land \lnot Q \land R) \lor (\lnot P \land Q \land R)\quad {分配律} \\ \Leftrightarrow\ &m_{000} \lor m_{001} \lor m_{011} \\ \Leftrightarrow\ &m_0 \lor m_1 \lor m_3 \\ \Leftrightarrow\ &\sum(0, 1, 3) \end{aligned}    ¬P(QR)¬P(¬QR)(¬P¬Q)(¬PR)(¬P¬Q(¬RR))(¬P(¬QQ)R)(¬P¬Q¬R)(¬P¬QR)(¬PQR)m000m001m011m0m1m3(0,1,3)


    6.3 主合取范式

    6.3.1 极大项、编码及其性质

    定义6.3.1 一个含 n n n 个命题变元的析取式,如果其中每个变元与其否定不同时存在、但两者之一必须出现且仅出现一次,则称该析取式极大项 maxterm

    显然, n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 可构成 2 n 2^n 2n 个不同的极大项,具有如下形式,其中 P ~ i \widetilde P_i P i 可以是 P i P_i Pi 或者是 ¬ P i \lnot P_i ¬Pi P ~ 1 ∨ P ~ 2 ∨ ⋯ ∨ P ~ n \widetilde P_1 \lor \widetilde P_2 \lor \dots \lor \widetilde P_n P 1P 2P n

    对这一形式也给出一个 n n n 位二进制编码(可以转换为十进制数)——当 P ~ i \widetilde P_i P i P i P_i Pi 时,第 i i i 位取值为 0 0 0 ;当 P ~ i \widetilde P_i P i ¬ P i \lnot P_i ¬Pi 时,第 i i i 位取值为 1 1 1 。以两个命题变元为例,编码如下(容易验证,没有两个极大项是等价的,且每个极大项都恰好对应 P , Q P, Q P,Q 的一组赋值使其为假):
    { M 0 = M 00 = P ∨ Q M 1 = M 01 = P ∨ ¬ Q M 2 = M 10 = ¬ P ∨ Q M 3 = M 11 = ¬ P ∨ ¬ Q \begin{cases} M_0 = M_{00} = P \lor Q \\ M_1 = M_{01} = P \lor \lnot Q\\ M_2 = M_{10} = \lnot P \lor Q\\ M_3 = M_{11} =\lnot P \lor \lnot Q \end{cases} M0=M00=PQM1=M01=P¬QM2=M10=¬PQM3=M11=¬P¬Q

    依次类推,含有 n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 的极大项的编码为:
    { M 0 = M 00 … 00 = P 1 ∨ P 2 ∨ ⋯ ∨ P n M 1 = M 00 … 01 = P 1 ∨ P 2 ∨ ⋯ ∨ P n − 1 ∨ ¬ P n … M 2 n − 1 = M 11 … 1 = ¬ P 1 ∨ ¬ P 2 ∨ ⋯ ∨ ¬ P n \begin{cases} M_0 = M_{00\dots00} = P_1 \lor P_2 \lor \dots \lor P_n \\ M_1 = M_{00\dots01} = P_1 \lor P_2 \lor \dots \lor P_{n - 1} \lor \lnot P_n\\ \dots \\ M_{2^n-1} = M_{11\dots1} = \lnot P_1 \lor \lnot P_2 \lor \dots \lor \lnot P_n \end{cases} M0=M0000=P1P2PnM1=M0001=P1P2Pn1¬PnM2n1=M111=¬P1¬P2¬Pn

    再以两个命题变元 P , Q P, Q P,Q 为例,列出其和极大项的真值表。容易验证,没有两个极大项是等价的,且每个极大项都恰好对应 P , Q P, Q P,Q 的一组赋值使其为假:

    P P P Q Q Q P ∨ Q P \lor Q PQ P ∨ ¬ Q P \lor \lnot Q P¬Q ¬ P ∨ Q \lnot P \lor Q ¬PQ ¬ P ∨ ¬ Q \lnot P \lor \lnot Q ¬P¬Q
    000111
    011011
    101101
    111110

    依次类推, n n n 个命题变元 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 构成的极大项,具有以下性质:

    • 每一个极大项,当其赋值与编码相同时,其真值为 F F F ;在其余 2 n − 1 2^n - 1 2n1 种赋值下其真值均为 T T T
    • 任意两个不同极大项的析取式永真,即 M i ∨ M j ⇔ T ( i ≠ j ) M_i \lor M_j \Leftrightarrow T\quad (i \ne j) MiMjT(i=j)
    • 所有极大项的合取式永假,即: ∏ i = 0 2 n − 1 M i ⇔ M 0 ∧ M 1 ∧ ⋯ ∧ M 2 n − 1 ⇔ F \prod^{2^n -1 }_{i = 0} M_i \Leftrightarrow M_0 \land M_1 \land \dots \land M_{2^n-1} \Leftrightarrow F i=02n1MiM0M1M2n1F

    6.2.2 主合取范式和求取方法(真值表和逻辑推演)

    定义6.3.2 设 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 是命题公式 A A A 中包含的所有命题变元,若由 P 1 , P 2 , … , P n P_1, P_2, \dots, P_n P1,P2,,Pn 的若干极大项合取构成的合取范式 A A A 等价,则称该析取范式为 A A A主合取范式 principle conjunctive normal form

    定理6.3.1 在一个命题公式 A A A 的真值表中,使 A A A真值为 F F F 的所有赋值对应的极大项合取构成的合取范式,即为 A A A 的主合取范式。
    证明:设命题公式 A A A 的真值表中, M i 1 , M i 2 , … , M i k M_{i_1}, M_{i_2}, \dots, M_{i_k} Mi1,Mi2,,Mik 为使命题公式 A A A 为假的赋值对应的所有极大项。下面只需证明 M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k ⇔ A M_{i_1} \land M_{i_2} \land \dots \land M_{i_k} \Leftrightarrow A Mi1Mi2MikA(回想等价关系的证明)。

    • 对于 A A A 的任一赋值 t t t ,若 t t t 使得 A A A 为假,则赋值 t t t 对应的极大项属于 M i 1 , M i 2 , … , M i k M_{i_1}, M_{i_2}, \dots, M_{i_k} Mi1,Mi2,,Mik 之一,且该极大项也为假(极大项性质)。因而在该赋值 t t t 下, M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k M_{i_1} \land M_{i_2} \land \dots \land M_{i_k} Mi1Mi2Mik 的真值也为假;
    • 对于 A A A 的任一赋值 t t t ,若 t t t 使得 A A A 为真,则赋值 t t t 对应的极大项不属于 M i 1 , M i 2 , … , M i k M_{i_1}, M_{i_2}, \dots, M_{i_k} Mi1,Mi2,,Mik 之一。因而在该赋值 t t t 下, M i 1 , M i 2 , … , M i k M_{i_1}, M_{i_2}, \dots, M_{i_k} Mi1,Mi2,,Mik 的真值均为真(极大项性质),即有 M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k M_{i_1} \land M_{i_2} \land \dots \land M_{i_k} Mi1Mi2Mik 的真值也为真;
    • 因此,对于 A A A 的任一赋值,都有 A A A M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k M_{i_1} \land M_{i_2} \land \dots \land M_{i_k} Mi1Mi2Mik 的真值相同,所以 M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k ⇔ A M_{i_1} \land M_{i_2} \land \dots \land M_{i_k} \Leftrightarrow A Mi1Mi2MikA等价关系的定义)。

    因此特别地,可以用构造真值表的方法,求出一个给定命题公式的主合取范式。由于一个命题公式的真值表是唯一的,所以由定理6.3.1知,一个命题公式的主合取范式也是唯一的

    例4 用构造真值表的方法,求命题公式 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主合取范式。
    解答:构造真值表如下所示:

    P P P Q Q Q R R R ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR)
    0001
    0011
    0100
    0111
    1000
    1010
    1100
    1110

    所以 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主合取范式为:
    ( P ∨ ¬ Q ∨ R ) ∧ ( ¬ P ∨ Q ∨ R ) ∧ ( ¬ P ∨ Q ∨ ¬ R ) ∧ ( ¬ P ∨ ¬ Q ∨ R ) ∧ ( ¬ P ∨ ¬ Q ∨ ¬ R ) ⇔   M 010 ∧ M 100 ∧ M 101 ∧ M 110 ∧ M 111 ⇔   M 2 ∧ M 4 ∧ M 5 ∧ M 6 ∧ M 7 ⇔   ∏ ( 2 , 4 , 5 , 6 , 7 ) \begin{aligned} &(P \lor \lnot Q \lor R) \land (\lnot P \lor Q \lor R) \land (\lnot P \lor Q \lor \lnot R) \land (\lnot P \lor \lnot Q \lor R) \land (\lnot P \lor \lnot Q \lor \lnot R) \\ \Leftrightarrow\ &M_{010} \land M_{100} \land M_{101} \land M_{110} \land M_{111}\\ \Leftrightarrow\ &M_{2}\land M_{4} \land M_{5} \land M_{6} \land M_{7} \\ \Leftrightarrow\ &\prod(2, 4, 5, 6, 7) \end{aligned}    (P¬QR)(¬PQR)(¬PQ¬R)(¬P¬QR)(¬P¬Q¬R)M010M100M101M110M111M2M4M5M6M7(2,4,5,6,7)

    求一个命题公式的主合取范式,除了真值表方法,还有逻辑推演方法——即使用常见逻辑等价公式和替换规则、传递规则,求出它的主合取范式。原因在于,任何一个命题公式都可以求出它的合取范式,而合取范式可以转换为主合取范式。具体步骤如下:

    • 将原命题公式转换为合取范式(上接求出合取范式的步骤);
    • 每个析取式等价变换为若干极大项的合取(即对每个析取式填补没有出现的变元,如缺少 P P P ¬ P \lnot P ¬P ,则析取 ¬ P ∧ P \lnot P \land P ¬PP ,再应用分配律展开成若干极大项的合取);
    • 重复的极大项只保留一个。

    例5 求命题公式 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主合取范式。
    解答:
    ¬ P ∧ ( Q → R ) ⇔ ¬ P ∧ ( ¬ Q ∨ R ) 合 取 范 式 ⇔ ( ¬ P ∨ ( Q ∧ ¬ Q ) ∨ ( R ∧ ¬ R ) ) ∧ ( ( P ∧ ¬ P ) ∨ ¬ Q ∨ R ) 填 补 缺 失 变 元 ⇔ ( ¬ P ∨ Q ∨ R ) ∧ ( ¬ P ∨ ¬ Q ∨ R ) ∧ ( ¬ P ∨ Q ∨ ¬ R ) ∧ ( ¬ P ∨ ¬ Q ∨ ¬ R ) ∧ ( P ∨ ¬ Q ∨ R ) ∧ ( ¬ P ∨ ¬ Q ∨ R ) 分 配 律 ⇔   M 100 ∧ M 110 ∧ M 101 ∧ M 111 ∧ M 010 ⇔   M 2 ∧ M 4 ∧ M 5 ∧ M 6 ∧ M 7 ⇔   ∏ ( 2 , 4 , 5 , 6 , 7 ) \begin{aligned} &\lnot P \land (Q \to R) \\ \Leftrightarrow &\lnot P \land (\lnot Q \lor R) \quad 合取范式 \\ \Leftrightarrow &(\lnot P \lor (Q \land \lnot Q) \lor (R \land \lnot R)) \land ((P \land \lnot P) \lor \lnot Q \lor R) \quad {填补缺失变元}\\ \Leftrightarrow &(\lnot P \lor Q \lor R) \land (\lnot P \lor \lnot Q \lor R) \land (\lnot P \lor Q \lor \lnot R) \land (\lnot P \lor \lnot Q \lor \lnot R) \land (P \lor \lnot Q \lor R) \land (\lnot P \lor \lnot Q \lor R) \quad 分配律\\ \Leftrightarrow\ &M_{100} \land M_{110} \land M_{101} \land M_{111} \land M_{010} \\ \Leftrightarrow\ &M_{2} \land M_{4} \land M_{5} \land M_{6} \land M_{7} \\ \Leftrightarrow\ &\prod(2, 4, 5, 6, 7) \end{aligned}    ¬P(QR)¬P(¬QR)(¬P(Q¬Q)(R¬R))((P¬P)¬QR)(¬PQR)(¬P¬QR)(¬PQ¬R)(¬P¬Q¬R)(P¬QR)(¬P¬QR)M100M110M101M111M010M2M4M5M6M7(2,4,5,6,7)


    6.4 主析取范式和主合取范式的联系

    由例2、3、4、5中发现,命题公式 ¬ P ∧ ( Q → R ) \lnot P \land (Q \to R) ¬P(QR) 的主析取范式为 ∑ ( 0 , 1 , 3 ) \sum (0, 1, 3) (0,1,3) ,主合取范式为 ∏ ( 2 , 4 , 5 , 6 , 7 ) \prod (2, 4, 5, 6, 7) (2,4,5,6,7) ,其中代表极小项和极大项的下标是互补的。这种互补性对所有命题公式都成立,从主析取范式和主合取范式的真值表求法不难验证这一点。

    定理6.4.1 已知由 n n n 个不同命题变元构成的命题公式 A A A 的主析取范式为 ∑ ( i 1 , i 2 , … , i k ) \sum (i_1, i_2, \dots, i_k) (i1,i2,,ik) ,其主合取范式为 ∏ ( j 1 , j 2 , … , j t ) \prod (j_1, j_2, \dots, j_t) (j1,j2,,jt) ,则有:
    { i 1 , i 2 , … , i k } ∪ { j 1 , j 2 , … , j t } = { 0 , 1 , 2 , … , 2 n − 1 } { i 1 , i 2 , … , i k } ∩ { j 1 , j 2 , … , j t } = ∅ \begin{aligned} \{ i_1, i_2, \dots, i_k\} \cup \{j_1, j_2, \dots, j_t\} &= \{0, 1, 2, \dots, 2^n - 1\} \\ \{ i_1, i_2, \dots, i_k\} \cap \{j_1, j_2, \dots, j_t\} &= \varnothing \end{aligned} {i1,i2,,ik}{j1,j2,,jt}{i1,i2,,ik}{j1,j2,,jt}={0,1,2,,2n1}=
    证明:由于命题公式 A A A 的主析取范式为 ∑ ( i 1 , i 2 , … , i k ) \sum (i_1, i_2, \dots, i_k) (i1,i2,,ik) ,主合取范式为 ∏ ( j 1 , j 2 , … , j t ) \prod (j_1, j_2, \dots, j_t) (j1,j2,,jt) ,则有 A ⇔ ∑ ( i 1 , i 2 , … , i k ) A \Leftrightarrow \sum (i_1, i_2, \dots, i_k) A(i1,i2,,ik) A ⇔ ∏ ( j 1 , j 2 , … , j t ) A \Leftrightarrow \prod (j_1, j_2, \dots, j_t) A(j1,j2,,jt) 。由此可得:
    A ⇔   m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k A ⇔   M j 1 ∧ M j 2 ∧ ⋯ ∧ M j t \begin{aligned} A \Leftrightarrow\ &m_{i_1}\lor m_{i_2}\lor \dots \lor m_{i_k} \\ A \Leftrightarrow\ &M_{j_1}\land M_{j_2}\land \dots \land M_{j_t} \end{aligned} A A mi1mi2mikMj1Mj2Mjt
    则有:
    ¬ A ⇔   ¬ m i 1 ∧ ¬ m i 2 ∧ ⋯ ∧ ¬ m i k ⇔   M i 1 ∧ M i 2 ∧ ⋯ ∧ M i k ¬ A ⇔   ¬ M j 1 ∨ ¬ M j 2 ∨ ⋯ ∨ ¬ M j t ⇔   m j 1 ∨ m j 2 ∨ ⋯ ∨ m j t \begin{aligned} \lnot A \Leftrightarrow\ &\lnot m_{i_1}\land \lnot m_{i_2}\land \dots \land \lnot m_{i_k} \Leftrightarrow\ M_{i_1}\land M_{i_2}\land \dots \land M_{i_k} \\ \lnot A \Leftrightarrow\ &\lnot M_{j_1}\lor \lnot M_{j_2}\lor \dots \lor \lnot M_{j_t} \Leftrightarrow\ m_{j_1}\lor m_{j_2}\lor \dots \lor m_{j_t} \end{aligned} ¬A ¬A ¬mi1¬mi2¬mik Mi1Mi2Mik¬Mj1¬Mj2¬Mjt mj1mj2mjt
    因为 A ∨ ¬ A ⇔ ( m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k ) ∨ ( m j 1 ∨ m j 2 ∨ ⋯ ∨ m j t ) ⇔ T A \lor \lnot A \Leftrightarrow (m_{i_1}\lor m_{i_2}\lor \dots \lor m_{i_k}) \lor (m_{j_1}\lor m_{j_2}\lor \dots \lor m_{j_t}) \Leftrightarrow T A¬A(mi1mi2mik)(mj1mj2mjt)T相当于得到了所有极小项的析取),所以有:
    { i 1 , i 2 , … , i k } ∪ { j 1 , j 2 , … , j t } = { 0 , 1 , 2 , … , 2 n − 1 } \{ i_1, i_2, \dots, i_k\} \cup \{j_1, j_2, \dots, j_t\} = \{0, 1, 2, \dots, 2^n - 1\} {i1,i2,,ik}{j1,j2,,jt}={0,1,2,,2n1}

    又因为:
    A ∧ ¬ A ⇔ ( m i 1 ∨ m i 2 ∨ ⋯ ∨ m i k ) ∧ ( m j 1 ∨ m j 2 ∨ ⋯ ∨ m j t ) ⇔   ( m i 1 ∧ m j 1 ) ∨ ( m i 1 ∧ m j 2 ) ∨ ⋯ ∨ ( m i 1 ∧ m j t ) ∨ ( m i 2 ∧ m j 1 ) ∨ ( m i 2 ∧ m j 2 ) ∨ ⋯ ∨ ( m i 2 ∧ m j t ) ∨ ⋯ ∨ ( m i k ∧ m j 1 ) ∨ ( m i k ∧ m j 2 ) ∨ ⋯ ∨ ( m i k ∧ m j t ) ⇔ F \begin{aligned} A \land \lnot A &\Leftrightarrow (m_{i_1}\lor m_{i_2}\lor \dots \lor m_{i_k}) \land (m_{j_1}\lor m_{j_2}\lor \dots \lor m_{j_t})\\ &\Leftrightarrow\ (m_{i_1} \land m_{j_1}) \lor (m_{i_1} \land m_{j_2}) \lor \dots \lor (m_{i_1} \land m_{j_t}) \\ & \quad \lor (m_{i_2} \land m_{j_1}) \lor (m_{i_2} \land m_{j_2}) \lor \dots \lor (m_{i_2} \land m_{j_t}) \\ & \quad \lor \dots \lor (m_{i_k} \land m_{j_1}) \lor (m_{i_k} \land m_{j_2}) \lor \dots \lor (m_{i_k} \land m_{j_t}) \\ &\Leftrightarrow F \end{aligned} A¬A(mi1mi2mik)(mj1mj2mjt) (mi1mj1)(mi1mj2)(mi1mjt)(mi2mj1)(mi2mj2)(mi2mjt)(mikmj1)(mikmj2)(mikmjt)F
    所以有 i a ≠ j b ,   a ∈ { 1 , 2 , . . . , k } ,   b ∈ { 1 , 2 , … , t } i_a \ne j_b,\ a \in \{1, 2, ..., k\}, \ b \in \{1, 2, \dots, t\} ia=jb, a{1,2,...,k}, b{1,2,,t} ,故有 { i 1 , i 2 , … , i k } ∩ { j 1 , j 2 , … , j t } = ∅ \{ i_1, i_2, \dots, i_k\} \cap \{j_1, j_2, \dots, j_t\} = \varnothing {i1,i2,,ik}{j1,j2,,jt}=


    6.5 主范式的用途之一(逻辑推断)

    由于通过一个命题公式的主范式,可以清楚地获知该命题公式为真和为假的赋值,因此利用命题公式的主范式,可以解决一些逻辑推断问题。

    例6 甲乙丙丁四人中仅有两人代表单位参加了市里组织的象棋比赛,关于选择了谁参加了比赛,有如下四种正确的说法:
    (a)甲和乙两人中只有一人参加;
    (b)若丙参加了,则丁一定参加;
    (c)乙和丁两人中至多参加一人;
    (d)若丁不参加,则甲也不参加。
    请推断哪两个人参加了这次比赛。

    解答:设 A A A:甲参加了比赛, B B B:乙参加了比赛, C C C:丙参加了比赛, D D D:丁参加了比赛。将上述命题符号化为:
    (a) A ⊕ B ⇔ ( ¬ A ∧ B ) ∨ ( A ∧ ¬ B ) A \oplus B \Leftrightarrow (\lnot A \land B) \lor (A \land \lnot B) AB(¬AB)(A¬B)
    (b) C → D C \to D CD
    (c) ¬ ( B ∧ D ) \lnot (B \land D) ¬(BD)
    (d) ¬ D → ¬ A \lnot D \to \lnot A ¬D¬A
    将命题公式 ( ( ¬ A ∧ B ) ∨ ( A ∧ ¬ B ) ) ∧ ( C → D ) ∧ ¬ ( B ∧ D ) ∧ ( ¬ D → ¬ A ) ((\lnot A \land B) \lor (A \land \lnot B)) \land (C \to D) \land \lnot (B \land D) \land (\lnot D \to \lnot A) ((¬AB)(A¬B))(CD)¬(BD)(¬D¬A) 等价变换为主析取范式: ( A ∧ ¬ B ∧ ¬ C ∧ D ) ∨ ( A ∧ ¬ B ∧ C ∧ D ) ∨ ( ¬ A ∧ B ∧ ¬ C ∧ ¬ D ) (A \land \lnot B \land \lnot C \land D) \lor (A \land \lnot B \land C \land D) \lor (\lnot A \land B \land \lnot C \land \lnot D) (A¬B¬CD)(A¬BCD)(¬AB¬C¬D) 。根据题意,有且仅有两人参加了比赛,可知只能是 ( A ∧ ¬ B ∧ ¬ C ∧ D ) (A \land \lnot B \land \lnot C \land D) (A¬B¬CD) T T T ,即甲和丁参加了此次比赛。

    展开全文
  • 第一章 命题逻辑 1.4 析取范式与合取范式

    千次阅读 多人点赞 2019-08-06 15:31:18
    1.4 析取范式与合取范式 这一小节内容较多,我们由浅入深的来。首先要明白简单析取式和简单合式的定义。 定义:我们将命题变项及其否定统称作文字\red{文字}文字。 简单析取式\red{简单析取式}简单析取式是仅...
  • 析取范式简单来说就是几个简单析取式的组合,合取范式类似。 而主合和主析取略微有些不同,主析取是由极小项及符号v组成,极小项就是简单合式,说白了主析取就是由符号v连接几个简单合式组成,且他的每一个...
  • 离散数据:析取范式与合取范式

    万次阅读 2019-01-09 23:20:21
    又由于析取范式和合取范式的形式不唯一,为了便于比较命题公式之间的关系,因此衍生出了主析取范式和主合范式。所以,也将给出主析取范式和主合范式的求解方法。 二、范式存在定理 范式存在定理:任一命题公式...
  • 析取范式与合取范式

    2021-06-22 20:16:00
    析取范式与合取范式 定义2.2 命题变项及其否定统称作文字。 仅由有限个文字构成的析取式称为简单析取式。 仅由有限个文字构成的合式称为简单合式。 例如,文字:p,┐q,r,q. 简单析取式: p,q,p∨q,p∨┐p∨r,┐p...
  • 离散数学主析取及主合取范式

    千次阅读 2019-12-06 23:11:56
    离散数学主析取及主合取范式 ...文章目录离散数学主析取及主合取范式**概念**一:析取范式与合取范式析取范式与合取范式范式的步骤二:主析取及主合取范式**解法**等价公式真值表注: 概念 一:析取...
  • 离散数学主析取范式及主合取范式

    万次阅读 多人点赞 2018-03-28 19:28:21
    今天总结了一下关于离散数学化简主析取范式以及主合取范式的一些方法。首先一般可能会用到 分配律: A∨(B∧C)&lt;=&gt;(A∨B)∧(A∨C), A∧(B∨C)&lt;=&gt;(A∧B)∨(A∧C);其次若化简式里有蕴涵...
  • 文章目录合取范式( conjunctive normal form (CNF))析取范式(disjunctive normal form (DNF))简化的合析取范式标准形式(Canonical form)异或标准形式(xor normal form)二元决策图 form (ROBDD)子句...
  • //************** 将真值表的数据以主析取取范式输出 ******************** Iterator, Boolean>> entries = map.entrySet().iterator(); String sT = ""; String sF = ""; while (entries.hasNext()) { Map.Entry...
  • 输入命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式。 Input 命题公式的合式公式 Output 公式的主析取范式和主合取范式,输出形式为:“ mi ∨ mj ; Mi ∧ Mj” ,极小项和 ∨ 符号...
  • 析取 析取范式取范式

    千次阅读 2019-07-25 08:08:01
    命题ρ交q称为p和q的合 ρ并q称为p和q的析取 ...析取范式: 假定用n个命题变量给出一个真值表。证明可依此表构造一个复合命题.使其真值与此表一致,构造办法是:对变量的每一种使复合命题成真的组合,...
  • 析取范式为: ' 147 print u ' ∑ ' ,xiqu_result 148 print u ' \n主合取范式为: ' 149 print u ' ∏ ' ,hequ_result 150 print u ' \n┣G┻F┳ε=ヽ(* ̄▽ ̄)ノ┻W┫ ' 151 152 ...
  • 理解析取范式及合取范式的意义

    千次阅读 2014-11-29 16:24:30
    初学离散数学的同学一定会对析取范式与合取范式的意义有所困惑。首先单就它的使用环境来分析,析取范式有一点想电路里的或门,合取范式有一点像电路里的与门。而且它们的真值表是一模一样的。我们就会纳闷,怎么不叫...
  • 范式包含析取范式和合取范式,而主析取范式和主合范式的求解也是命题逻辑的重要内容,小项和大项也是必须掌握的内容。
  • 对于任意命题公式,都存在与其等价的析取范式和合取范式 另一种表述: 每一真值函数,都可用范式(析取范式或合范式)表示; 每一个复合命题形式,都至少存在一个与其等值的范式(析取范式或合范式) 英文表述 ...
  • 命题逻辑异或与精确表达异或精确表达:真值表需要精确对应命题公式的简化与命题等价命题公式的简化命题等价:真值表相同基础等价公式重言式(永真式)与矛盾式(永假式)重言蕴含式:基础重言蕴含式范式析取范式与合取范式...
  • 析取 | ,条件 - ,双条件 =)约定 A-B为A->B 由书本定理1-3.1;制定三个规则: 规则1:将原子命题全部转换为字符1; 规则2:将!1、(1)替换为字符1; 规则3:将1|1、1&1、1-1、1=1替换为字符1。 定义替换...
  • printf("输入任意长度的表达式,得到真值表和主析取范式和主合取范式。\n"); printf("有否定请把否定元加上括号,括号使用半角括号,例如:(!P)\n"); printf("表达式中不要出现空格,例如:Q|P&(Q|Y)|(!P)\n"); ...
  • 离散数学复习

    2020-07-20 11:17:57
    有限个文字的合称为简单合式(或短语) 有限个简单合式的吸取式称为析取范式 有限个简单析取式的合式称为合范式 范式存在定理:对于任意一个命题公式,都存在与其等价的析取范式和合取范式。 范式不唯一。...
  • 一、对偶式 在给定仅含有联结词¬、Λ和Ⅴ的命题公式A中,将联结词Ⅴ换成Λ,Λ换成Ⅴ...二、文字/合式/析取式 1.命题变元及其否定统称为文字 2.由若干个文字所组成的合式,称为基本积,而每个文字称为合项。
  • 离散数学中的范式转换,C++实现合式转换为合析取范式
  • (2)由有限个简单析取式构成的合式称为合范式 (3)析取范式与合范式统称为范式 析取范式和合取范式有由下面定理给出的性质: 定理2.2 (1)一个析取范式是矛盾式当且仅当它的每个简单合式都是矛盾式;...
  • 离散数学考前复习:(二)数理逻辑 2.1 命题及联结词 命题:命题是指一个判断(陈述)的语义(实际表达的概念),这个概念是可以被定义并观察的现象。...或:析取联结词(p∨q为真当且仅当p...
  • 数理逻辑—范式

    千次阅读 2019-04-28 12:12:21
    简单析取式与简单合式 定义: 仅由有限个命题变项或其否定构成的析取式称为简单析取式。仅由有限个命题变项或其否定构成的合式称为简单合式。 例如: ppp、¬p\lnot p¬p、p∨qp\lor qp∨q、p∨¬qp\lor\l...
  • 〉 p→q的合范式为 ¬p∨q(析取子句¬p∨q) 〉 ((p→q)∧¬p)∨¬q的合范式为 (¬p∨t)∧(¬p∨¬q) 或 ¬p∨¬q 一般使用逻辑等价式和代入原理、替换原理,可以求出任一一个公式的析取范式和合取范式。...
  • 离散数学笔记二

    千次阅读 2017-03-01 17:06:04
    析取范式和合取范式的性质:一个析取范式是矛盾式,当且仅当它的每个简单合式都是矛盾式;一个合范式是重言式当且仅当它的每个简单析取式都是重言式。 (6) 将公式转化为析取或者合范式 :将->和...

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

析取范式和合取范式