基于归结原理的自动推理及其应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于归结原理的自动推理及其应用
[摘要]归结原理使用较广,是定理机器证明的理论基础。既可以用来证明一些目标公式和逻辑结论的成立,又可以用来求解应用问题的答案。比如一个目标公式xW(x),有时我们不但要求证明它成立,而且希望知道变元x的一个例,即如果回答x=A,W是否为真?可直接用归结反演证明,但要回答x=? W为真时,就需要问题的答案。本文给出了归结原理在这两方面的应用,最后指出了使用水平浸透法证明不可满足性所带来的子句冗余,以及避免子句冗余的一个方法。
[关键词]归结原理;人工智能;机器证明;水平浸透法
自动定理证明是人工智能科学中的一个重要的研究领域,许多数学问题甚至是非数学问题(如医疗诊断,机器人行动规划)都可以归结为一个定理证明的问题。在定理机器证明中,已知一公式集F1,F2…Fn,要证明一个公式W是否成立,即要证明W是公式集的逻辑推论时,一种方法是要证明F1∧F2∧…∧Fn→W 为永真,如果直接运用推理规则进行推导,由于演绎技巧等因素,给建立机器证明系统带来困难。另一种证明方法是采用间接法(反证法),即不去证明F1∧F2∧…∧Fn→W为真,而是去证明F=F1∧F2∧…∧Fn∧~W为永假,这就等价于证明F对应的子句集S=S0∨{~W}为不可满足的。这时候如果用归结作为推理规则使用时,就可以使机器证明简化了。
归结原理的思想是设法检验扩充的子句集S1是否有空子句。若S中有空子句,则S为不可满足的,若没有空子句,就进一步用归结法从S导出S1,然后再检验S1是否有空子句,可以证明用归结法导出的扩大子句集S1,其不可满足性是不变的,所以S1中有空子句,也就证明了S的不可满足性。归结过程可以一直进行下去,就是要通过归结过程演绎出S的不可满足性来,从而使定理得到证明。
一、基本原理
对于子句集S中的任意两个子句C1,C2,若在C1中有一个文字L1,它是子句C2中文字L2的补,那么从C1,C2中分别消去L1和L2,并将剩下的子句构成析取,这样的新子句称为C1,C2的归结式。
定理:设两个子句C1,C2,它们的归结式是C12,则C12是C1和C2的有效逻辑推论。
推论:子句集S={C1,C2,…,Cn}与子句集S1={C,C1,C2…,Cn}的不可满足性是相同的S1中的C是C1,C2的归结式,即S1是对S应用归结法后导出的子句集。
二、归结过程
对于公理集F和命题P,则归结过程如下:
(1)把F转化为子句集形式,得到子句集S0。
(2)把命题的否定也转化为子句集表示,并加入到S0中,得S=S0∨{S~p}。
(3)对子句集反复使用归结规则,直到导出含有空子句的子句集为止。即出现归结式为空子句情况是,表明矛盾产生,证明结束。
(4)对有需要的地方分别使用替换或合一替换规则。
下面以例子来说明上述思想。
例:(1)会朗读的人是识字的(2)海豚都不识字(3)有些还豚是很机灵的
求证:有些机灵的东西不会朗读。
证明:首先把上述知识用谓词逻辑对应表示如下:
(1)x(R(x)→L(x))
(2)x(D(x)→~ L(x))
(3)x(D(x)∧I(x))
目标公式表示为:x(I(x)∧~ R(x))
然后将(1)(2)(3)化为如下的子句集:
1. ~R(x)∨L(x)
2. ~D(y)∨~ L(y)
3.D(A)
4.I(A)
目标公式的否定化为子句集
5.~I(w)∨R(w)
归结过程如下:
6. R(A)4、5
7.L(A)6、1
8. ~D(A)7、2
9. NIL 8、3
故得证。
上述的反演一般可以用来证明目标公式的成立,但如果含有存在量词量化变元的目标公式,如xW(x),有时我们不但要求证明它成立,而且希望知道变元X的一个例,可以直接用反演法证明,但要回答X=?W为真,就需要问题的答案。这种问题的解答步骤如下:
(1)把已知前提的谓词公式化为相应的子句集,设为S
(2)把待求解的问题也用谓词公式表示出来,然后把它否定
(3)设一个ANSWER谓词,其变元与问题公式的变元完全相同,把它与(2)析取,并化为子句集,然后把它并入S中。
(4)对S应用归结原理进行归结。
(5)若得到的归结式是ANSWER,则答案就在ANSWER中。
例已知:王先生是小李的老师,小李是小张的同班同学,如果X与Y是同班同学,则X的老师也是Y 的老师。
求:小张的老师是谁?
解:T(x,y):x 是y的老师
C(x,y)x 是y的同学
则根据上述条件有:(1)T(wang ,li);
(2) C (li ,zhang);
(3)x y z(C(x,y)∧T(z,x)→T(z,y))
(4)~ xT(x,zhang)∨ANSWER(x)
把上述化为子句S有:
(1)T (wang ,li)
(2) C (li ,zhang);
(3)~C(x,y)∨~ T(z,x)∨T(z,y)
(4)~T(u,zhang)∨ANSWER(wang)
对上述子句集进行归结有:
(5)~C(li,y)∨T(wang,y)(1)(3)
(6)~C(li,zhang)∨ANSWER(wang)(4)(5)
(7)ANSWER(wang)(2)(6)
所以得出结论:小张的老师是王老师。
上述例子都是基于水平浸透法的归结证明,会产生大量不相干的和多余的子句,再如下例:
令S={~P∨~Q∨R,P∨R,Q∨R,~R}。用水平浸透法证明S的不可满足性,过程如下:S0:(1)~P∨~Q∨R
(2)P∨R
(3)Q∨R
(4)~R
S1:(5)~Q∨R(1),(2)
(6)~P∨R(1),(3)
(7)~P∨~Q (1),(4)
(8)P(2),(4)
(9)Q(3),(4)
S2:(10)~Q∨R(删除)(1),(8)
(11)~P∨R(删除)(1),(9)