您的当前位置是:第三章 确定性推理>>学习内容>>知识点五

2.消解反演

下面继续学习消解原理

设S是子句集,c是子句。若存在一个子句序列c1,…,cn满足

①cn=c;

②任意一个ci或者属于S或者它前面的子句ck,cl(i>k,i>l)的消解式;

则称c1,…,cn是从子句集S到子句c的一个消解演绎;当 c=NIL时的消解演绎称为(消解)反演。

反演的基本算法如下,其流程图如图3.30所示。

①把谓词公式转化为子句集S(所有子句的变量名不同);

②如空子句成为子句集的子句,则算法结束;

③在子句集中选取两个不同的可以消解的子句ci,cj

④计算ci,cj的消解式rij

⑤把rij加到子句集中,形成新的子句集S;

⑥转到②。

例3.11

设子句集为S={P∨Q,~P∨Q,P∨~Q,~P∨~Q}求S的一个反演。

S的一个反演如下:

①P∨Q    (S)

②~P∨Q    (S)

③P∨~Q    (S)

④~P∨~Q    (S)

⑤Q    ①②

⑥~Q    ③④

⑦NIL    ⑤⑥

反演过程不唯一,还可以给出S的另一个反演如下:

⑤P    ①③

⑥~P    ②④

⑦NIL    ⑤⑥

例3.12

设S={

    ~P(z1,a)∨~P(z1,x1)∨~P(x1,z1),

    P(z2,f(z2))∨P(a,z2),

    P(f(z3),z3)∨P(a,z3) }

求S的一个反演。

反演过程:

①~P(z1,a)∨~P(z1,x1)∨~P(x1,z1)    (S)

②P(z2,f(z2))∨P(a,z2)    (S)

③P(f(z3),z3)∨P(a,z3)    (S)

④P(a,f(a))    (①②),ß={a/x1,a/z1,a/z2}

⑤P(f(a),a)    (①③),ß={a/x1,a/z1,a/z3}

⑥~P(f(a),a)    (①④)ß={a/x1,f(a)/z1}

⑦NIL    (⑤⑥)

3.消解推理规则

命题的特殊情况:

①假言推理

父辈字句P    ~P∨Q(即P=>Q)

消解式Q

②合并

父辈字句P∨Q    ~P∨Q

消解式Q∨Q=Q

③重言式

父辈字句P∨Q    ~P∨~Q

消解式Q∨~Q

P∨Q    ~P∨~Q

P∨~P

④空子句(矛盾)

~P        P

NIL

⑤链式(三段论)

~P∨Q,(即P=>Q)    ~Q∨R,(即Q=>R)

~P∨R,(即P=>R)

含有变量的消解式(谓词情况)

例3.13

1.

B(x)    ~B(y)∨C(y)

置换σ={x/y}

C(x)

2.

P(x)∨Q(x)    ~Q[f(y)]

置换σ={f(y)/x}

P[f(y)]

3.

P[x,f(y)]∨Q(x)∨R[f(a),y]    ~P[f(f(a)),z]∨R(z,w)

σ={f(f(a))/x,f(y)/z}

Q[f(f(a))]∨R[f(a),y]∨R[f(y),w]

4.消解反演求解过程

消解反演证明定理的思路非常类似于数学中的反证法。

给定一个公式集S(前提条件)和目标公式L(结论),通过反演来求证目标公式L,其证明过程为:

①否定L,得到~L;

②把~L加到S中;

③把新形成的集合{S,~L}化为子句集;

④应用消解原理,试图导出一个表示矛盾的空子句。

1  2  3  4  5