1、1,第4章 自动推理,2,第4章 自动推理,4.1 引言 4.2 自然演绎推理 4.3 归结演绎推理-1 4.3 归结演绎推理-2,3,4.3 归结演绎推理-2,4,对命题逻辑应用归结原理的重要步骤是在一个子句中找出与另一子句中的某个文字互补的文字。对于不含变量的子句是容易做到的。当子句中含有变量时,问题要复杂很多。如研究子句C1中没有文字与C2中的任何文字互补。但是若在C1中用f(a)置换x,在C2中用a置换y,便得出其中 和 分别是C1和C2的基例。从上述例子可以看到,用适当的项置换C1和C2的变量可以产生新子句。,4.3.3 置换和合一,5,定义4.7 置换(substitution)是
2、形为的有限集合,其中 是互不相同的变量,ti是不同于vi的项(可以为常量、变量、函数) 。ti/vi表示用ti置换vi,不允许ti与vi相同,也不允许vi循环地出现在另一个tj中。 不含任何元素的置换称为空置换(Null substitution),用 表示。,1、置换,6,例如: 就是一个置换,但是, 不是一个置换。因为置换的目的是为了使某些变元被另外的变元、常量或函数取代,使之不再出现在公式中,而该置换在x和y之间出现了循环置换的情况,既没有消去x,也没有消去y。,1、置换,7,定义4.8 令 为置换,E为表达式。设E是用项ti同时代换E中出现的所有变量vi(1in)而得出的表达式。称E为
3、E的特例或例(Instance)。,例4.3 令 , 则有,1、置换,8,定义4.9 令为两个置换。 和 复合也是一个置换,称 为复合置换(composite substitution),用 表示,它由在集合:中删除下面两类元素得出的: 当 删除 当 删除,1、置换,9,例4.4 令在构造 时,首先建立集合:由于 ,所以要删除 。上述集合中的 第三、四元素中的变量x,y都出现在x,y 中,所以还应删除 。最后得出,1、置换,10,(1) 空置换 是左么元和右么元,即对任意的置换 , 恒有 (2) 对任意表达式E,恒有E( )(E ) 。 (3) 若对任意表达式E恒有E E ,则 。,2、置换的
4、性质,11,(4) 对任意置换 , , 恒有即置换的合成满足结合律。 (5) 设A和B为表达式集合,则注意: 置换的合成不满足交换律。,2、置换的性质,12,定义4.10 若表达式集合 存在一个置换 ,使得则称集合 是可合一的(Unifiable),置换 称为合一置换(Unifier)。,3、合一,13,例4.5 集合 是可合一的,因为 是它的合一置换。例4.6 集合 是可合一的,因为 是它的合一置换。 另外, 也是一个合一置换。所以合一置换是不唯一的。但是 比 更一般,因为用任意常量置换y都可以得到无穷个基置换。,3、合一,14,定义4.11 表达式集合 的合一置换 是最一般的合一置换(MG
5、U, Most General Unifier),当且仅当对该集合的每个合一置换 都存在置换 使得 。例如,在例4.6中,mgu 但 =f(a)/x, a/y 不是mgu,并存在置换有,3、合一,15,例4.7 表达式集合P(x), P(y),显然y/x与x/y都是该集合的mgu。这也说明: MGU一般情况下也不是唯一的。但是它们除了相差一个置换名以外是相同的。,3、合一,16,4.3.4 合一算法,本节将对有限非空可合一的表达式集合给出求取最一般合一置换(MGU)的合一算法。当集合不可合一时,算法也能给出不可合一的结论,并且结束。 研究集合 。集合中的两个表达式是不同的,差别是在P(a)中出
6、现a,而在P(x)中出现x。为了求出该集合的合一置换,应首先找出两个表达式的不一致之处,然后再试图消除。对P(a)和P(x),不一致之处可用集合a,x表示。由于x是变量,可以取 ,于是有即 是 的合一置换。这就是合一算法所依据的思想。,17,定义4.12 表达式的非空集合W的差异集(difference set)是按下述方法得出的子表达式的集合:(1)在W的所有表达式中找出对应符号不全相同的第一个符 号(自左算起)。(2)在W的每个表达式中,提取出占有该符号位置的子表达式。这些子表达式的集合便是W的差异集D。,1、差异集,在讨论合一算法之前先讨论差异集的概念。,18,例4.8 例如 , 在W的
7、3个表达式中,前4个符号-“P(x,”是相同的,第5个符号不全相同,所以W的不一致集合(差异集)为:,1、差异集,19,假设D是W的差异集,显然有下面的结论。 (1) 若D中无变量符号,则W是不可合一的。 例:(2) 若D中只有一个元素,则W是不可合一的例:(3) 若D中有变量符号x和项t,且x出现在t中,则W是不可合一的。例:,1、差异集,20,2、合一算法,(1)置 。(2) 若Wk中只有一个元素,终止,并且 为W的最一般合一。否则求出Wk的差异集Dk。(3) 若Dk中存在元素vk和tk,并且vk是不出现在tk中的变量,则转向第(4)步。否则终止,并且W是不可合一的。,21,2、合一算法,
8、(4)置 (注意: ) (5) 置k=k+1,转向第(2)步。,注意:在第(3)步,要求vk不出现在tk中,这称为Occur检查,算法的正确性依赖于它。,22,例4.9 求出的最一般合一。 (1) (2) 未合一,差异集合为 。 (3) 中存在变量 和常量 。 (4) 令 ,2、合一算法,23, 未合一,差异集合为 。 中存在元素 , ,并且变量 x不出现在f(a)中。 令 = 未合一,差异集合为 。 中的变量 不出现在 中。令 =,2、合一算法,24,a.,b. W3中只含一个元素,所以,是W的最一般合一。,2、合一算法,25,注意:上述合一算法对任意有限非空的表达式集合总是能终止的。否则将
9、会产生出有限非空表达式集合的一个无穷序列 该序列中的任一集合 都比相应的集合少含一个变量(即 含有 ,但 不含 )。由于 中只含有限个不同的变量,所以上述情况不会发生。这里不加证明地给出下述定理。,2、合一算法,26,定理4.1 若W为有限非空可合一表达式集合,则合一算法总能终止在第二步上,并且最后的 便是W的最一般合一(MGU)。,2、合一算法,27,4.3.4 归结式,定义4.13 若由子句C中的两个或多个文字构成的集合存在最一般合一置换 , 则称 为C的因子(factor)。若 是单位子句,则称它为C的单位因子(Unit factor)。 例4.10 令由C中前两个文字构成的集合存在最一
10、般合一置换 ,所以是C的因子。,28,定义4.14 令 和 为两个无公共变量的子句。令和 分别为 和 中的两个文字。 若集合 , 存在最一般合一置换 ,则子句称为 和 的二元归结式(Binary resolvent)。文字 和 称为被归结的文字。,1、二元归结式,例4.11 令求C1,C2二元归结式。,29,因C1,C2中都出现变量x, 所以重新命名C2中的变量,取C2=P(a) R(y),选择L1=P(x), L2=P(a), 则L1,L2=P(x), P(a)存在最一般合一置换 。于是有 (U Y),1、二元归结式,便是C1,C2的二元归结式。,30,定义4.15 子句 和 的归结式是下述
11、某个二 元归结式。 (1) 和 的二元归结式。 (2) 的因子和 的二元归结式。 (3) 的因子和 的二元归结式。 (4) 的因子和 的因子的二元归结式。,1、二元归结式,31,4.3.5 归结反演,归结原理指出了证明子句集不可满足性的方法。对于定理证明,经常见到的形式是:这里, 是前提条件,而B则是逻辑结论。为了证明B是 的逻辑结论,只需证明是不可满足的。要证明公式的不可满足性,只要证明其相应子句集的不可满足性即可。所以应用归结原理进行定理证明的步骤如下:,32,设要被证明的定理可用谓词公式表示为如下的形式:(1)首先否定结论B,并将否定后的公式B与前提公式集组成如下形式的谓词公式:(2)
12、求谓词公式G的子句集S。 (3) 应用归结原理,证明子句集S的不可满足性,从而证明谓词公式G的不可满足性。这就说明对结论B的否定是错误的,推断出定理的成立。,4.3.5 归结反演,33,例4.12 证明“由梯形的对角线形成的内错角是相等的”。,首先定义谓词,并描述该问题所包含的知识。 T(x,y,u,v):表示“xyuv是左上顶点为x,右上顶点为 y,右下顶点为u,左下顶点为v的梯形”; P(x,y,u,v):表示“线段xy平行于线段uv”; E(x,y,z,u,v,w):表示“角xyz等于角uvw”。,归结反演例题,34,(由梯形定义),由上述公理应该能够断定 为真,即为有效的公式。根据归结
13、反演过程,否定该 结论并且证明是不可满足的。把它化成下述子句集:,于是由几何知识,有下述公理:,归结反演例题,(由平行线性质),35,现在用归结证明S是不可满足的: (1) (2) (3) (4) (5) (2)和(4)的归结式 (6) (5)和(1)的归结式 (7) (3)和(6)的归结式 最后一个子句是由S导出的空子句,可以断定 S是不可满足的。,归结反演例题,36,例4.14 “有些患者喜欢任一医生。没有任一患者喜欢任一庸医。所以没有庸医的医生”。,归结反演例题,37,例4.14 “有些患者喜欢任一医生。没有任一患者喜欢任一庸医。所以没有庸医的医生”。定义谓词为: P(x):“x是患者p
14、atient”; D(x):“x是医生doctor”; Q(x):“x是庸医quack”,L(x,y):“x喜欢(like)y”。则前提和结论可以符号化如下:目的是证明G是 和 的逻辑结论,即证明是不可满足的。首先求出子句集:,归结反演例题,38,因此 的子句集合S为:,39,归结证明S是不可满足的: (1) (2) (3) (4) (5) (6) (2)(4)归结 (7) (1)(3)归结 (8) (5)(7)归结 (9) (6)(8)归结,S,40,4.3.6 答案的提取,下面是利用归结原理求取问题答案的步骤:(1) 把已知前提条件用谓词公式表示出来,并化成相应的子句集,设该子句集的名字为
15、S1。(2) 把待求解的问题也用谓词公式表示出来,然后将其否定,并与一谓词ANS构成析取式。谓词ANS是一个专为求解问题而设置的谓词,其变量必须与问题公式的变量完全一致。,41,4.3.6 答案的提取,(3) 把问题公式与谓词ANS构成的析取式化为子句集,并把该子句集与S1合并构成子句集S。(4) 对子句集S应用谓词归结原理进行归结,在归结的过程中,通过合一置换,改变ANS中的变元。(5) 如果得到归结式ANS,则问题的答案即在ANS谓词中。,42,例4.15 某人被盗,公安局派出所派出5个侦察员去调查。研究案情时:侦察员A说:“赵与钱中至少有一人作案”;侦察员B说:“钱与孙中至少有一人作案”
16、;侦察员C说:“孙与李中至少有一人作案”;侦察员D说:“赵与孙中至少有一人与此案无关”;侦察员E说:“钱与李中至少有一人与此案无关”。如果这5个侦察员的话都是可信的,试问谁是盗窃犯呢?,4.3.6 答案的提取,43,第一步: 设谓词P(x)表示x是作案者,所以根据题意:A: P(zhao) P(qian) B: P(qian) P(sun)C: P(sun) P(li) D: P(zhao) P(sun)E: P(qian) P(li)以上每个侦查员的话都是一个子句。 第二步:将待求解的问题表示成谓词。设y是盗窃犯,则问题的谓词公式为P(y),将其否定并与ANS(y)做析取得:P(y) ANS
17、(y) 第三步:求前提条件及P(y) ANS(y)的子句集,并将各子句列表如下:,解: 将5位侦察员的话表示成谓词公式,为此先定义谓词。,44,(1) P(zhao) P(qian) (2) P(qian) P(sun) (3) P(sun) P(li) (4) P(zhao) P(sun) (5) P(qian) P(li) (6) P(y) ANS(y) 第四步:应用归结原理进行推理。 (7) P(qian) P(sun) (1) 与 (4) 归结 (8) P(zhao) P(li) (1) 与 (5) 归结,45,(9) P(qian) P(zhao) (2) 与 (4) 归结 (10)
18、 P(sun) P(li) (2) 与 (5) 归结 (11) P(zhao) P(li) (3) 与 (4) 归结 (12) P(sun) P(qian) (3) 与 (5) 归结 (13) P(qian) (2) 与 (7) 归结 (14) P(sun) (2) 与 (12) 归结 (15) ANS(qian) (6) 与 (13) 归结, (16) ANS(sun) (6) 与 (14) 归结, 所以,本题的盗窃犯是两个人:钱和孙。,46,P先生、Q先生都具有足够的推理能力。这天,他们正在接受推理面试。他们知道桌子的抽屉里有如下16张扑克牌: 红桃 A、Q、4 黑桃 J、8、4、2、7、
19、3 草花 K、Q、5、4、6 方块 A、5 从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把 这张牌的花色告诉Q先生。这时,问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗? P先生:“我不知道这张牌。“ Q先生:“我知道你不知道这张牌。“ P先生:“现在我知道这张牌了。“ Q先生:“我也知道了。“ 请问:这张牌是什么牌?,47,红桃 A、Q、4 黑桃 J、8、4、2、7、3 草花 K、Q、5、4、 6 方块 A、5 P知道点数,Q知道花色. (1)注意:P先生只知道点数,根据P先生的话,可知这张牌肯定有点数一样的另外N张牌(N1,2,.)因此可知这张牌可能为:A,Q
20、,5,4 (2)注意:Q先生只知道花色,根据Q先生的话,可知:就算P先生不讲话,Q先生也知道P先生猜不出,因此可以推断出:这张牌所在的花色中任何一张牌在其它花色中都有重复出现过。因此,排除花色:黑桃和草花 (3)这时P先生听了Q先生的话,说“我现在知道这张牌了”,说明:这张牌的点数在红桃和方块中的点数是唯一的,因此:排除A的可能。(4)注意:Q先生的第二句话是重点。Q先生听了P先生的话后说“我也知道这张牌了”,这说明:这张牌所在的花色里,有且只有两张牌的点数在其它花色中有重复,且其中一张一定为A,否则不能确定。而红桃中除了A之外,还有A和4两张均有重复不能排除,因此我们可以推知:这张牌一定不在红桃内。 (5)在方块中,根据(3)中得结论,可以很明显得出答案:方块5。,48,习题4.5 习题4.7 习题4.8,作业,