归结反演
设已知下列句子:
(1)Whoever can read is literate(能阅读的都是有文化的)。
("x)[R(x) ® L(x)]
(2)Dolphins are not literate(海豚是没有文化的)。
("x)[D(x) ® ØL(x)]
(3)Some dolphins are intelligent(某些海豚是有智能的)。
($z)[D(z)ÙI(z)]
证明语句:
(4)Some who are intelligent cannot read(某些有智能的并不能阅读)。
($w)[I(w)ÙØR(w)]
已知的三个语句对应的子句集为
(1){ØR(x)Ú L(x)}
(2){ØD(y)ÚØ L(y)}
(3){D(A)Ú I(A)}
目标语句的否定为
("w)[ØI(w)ÚR(w)]
将目标语句的否定式化成子句形式:
(4) {ØI(w)ÚR(w)}
采用归结反演方法,根据(1)——(4)列出的子句集进行归结,将归结式加入到子句集中去,再继续进行归结,直至产生空子句或无法归结为止。如果归结出空子句,则证明成功的结束。本例的归结过程如下图所示:
图4—1
上图为上面例子的一棵反演树,它由空子句及其祖先组成。图中的结点表示子句和子句生成的归结式。图中并没有画出所有生成的结点,我们称包括所有生成的结点的整个搜索图为引导图。
归结反演过程主要就是证明一个集合S是不可满足的过程,即从集合S归结出空子句的过程。该过程可表示如下:
过程RESOLUTION
(1) cLAUSES ¬ S
(2) until NIL Î cLAUSES,do
(3) begin
(4) 在cLAUSES中选则两个不同的可归结的子句ci和cj。
(5) 计算ci和cj的归结式rij
(6) cLAUSES ¬ cLAUSES ∪{rij}
(7) end
习题
1、用归结反演法证明下列公式的永真性。
(1) ($x){[P(x)® P(A)]Ù[P(x)® P(b)]}
(2) ("z)[Q(z) ® P(z)]® ($x){[Q(x)® P(A)]Ù[Q(x)® P(b)]}
2、我们来考虑下列一段指示:Tony、Mike和John属于Alpine俱乐部,Alpine俱乐部的成员不是滑雪运动员就是登山运动员。登山运动员不喜欢雨,而且任何不喜欢雪的人不是滑雪运动员。Mike讨厌Tony所喜欢的一切东西,而喜欢Tony所讨厌的一切东西。Tony喜欢雨和雪。
以谓词演算语句的集合表示这段知识,用归结反演的方法回答问题:“有没有Alpine俱乐部的一个成员,他是一个登山运动员但不是一个滑雪运动员呢?”