1、应用归结原理的习题应用归结原理的习题1/1/20231(一)应用归结原理进行定理证明应用归结原理进行定理证明的步骤:应用归结原理进行定理证明的步骤:设要被证明的定理表示为:A1A2An B(1)首先否定结论B,并将否定后的公式B与前提公式集组成如下形式的谓词公式:G=A1A2AnB(2)求谓词公式G的子句集S。(3)应用归结原理,证明子句集S的不可满足性。1/1/20232应用归结原理进行定理证明-习题1 例.已知:某些病人喜欢所有的医生,没有一个病人喜欢任意一个骗子。证明:任意一个医生都不是骗子。证明:知识表示:令 P(x):x是病人 D(x):x是医生 Q(x):x是骗子 L(x,y):x
2、喜欢yA1:x(P(x)y(D(y)L(x,y)A2:x(P(x)y(Q(y)L(x,y)B:x(D(x)Q(x)我们要证明B是A1和A2的逻辑结果,即公式A1A2B是不可满足的。1/1/20233A1=x(P(x)y(D(y)L(x,y)=x y(P(x)(D(y)L(x,y)-y(P(a)(D(y)L(a,y)A2=x(P(x)y(Q(y)L(x,y)=x(P(x)y(Q(y)L(x,y)=xy(P(x)Q(y)L(x,y)B=(x(D(x)Q(x)=x(D(x)Q(x)-D(b)Q(b)因此,公式A1A2B的子句集为SP(a),D(y)L(a,y),P(x)Q(y)L(x,y),D(b)
3、,Q(b)1/1/20234S不可满足的归结演绎序列为:(1)P(a)(2)D(y)L(a,y)(3)P(x)Q(y)L(x,y)(4)D(b)(5)Q(b)(6)L(a,b)由(2)、(4)mgu:b/y(7)Q(y)L(a,y)由(1)、(3)mgu:a/x(8)L(a,b)由(5)、(7)mgu:b/y(9)由(6)、(8)1/1/20235应用归结原理进行定理证明-习题2练习:设有下列知识:练习:设有下列知识:F1:自然数都是大于等于零的整数;:自然数都是大于等于零的整数;F2:所有整数不是偶数就是奇数;:所有整数不是偶数就是奇数;F3:偶数除以:偶数除以2是整数。是整数。求证:所有自
4、然数不是奇数就是其一半为整数的数。求证:所有自然数不是奇数就是其一半为整数的数。定义谓词:定义谓词:N(x):x是自然数;是自然数;I(x):x是整数;是整数;GZ(x):x大于等于零大于等于零;E(x):x是偶数是偶数;O(x):x是奇数。是奇数。定义函数定义函数f(x):x除以除以2。1/1/20236应用归结原理进行定理证明-习题3练习:练习:(1)马科斯马科斯(Marcus)是男人;是男人;(2)马科斯是庞贝人;马科斯是庞贝人;(3)所有庞贝人都是罗马人;所有庞贝人都是罗马人;(4)恺撒恺撒(Caesar)是一位统治者;是一位统治者;(5)所有罗马人忠于或仇恨恺撒;所有罗马人忠于或仇恨
5、恺撒;(6)每个人都忠于某个人;每个人都忠于某个人;(7)男人们只想暗杀他们不忠于的统治者;男人们只想暗杀他们不忠于的统治者;(8)马科斯试图暗杀恺撒。马科斯试图暗杀恺撒。证明:马科斯仇恨恺撒。证明:马科斯仇恨恺撒。定义谓词:定义谓词:Man(x):x是男人;是男人;Pompeian(x):x是庞贝人;是庞贝人;Roman(x):x是罗马人是罗马人;Ruler(x):x是统治者是统治者;Loyalto(x,y):x忠于忠于y;Hate(x,y):x仇恨仇恨y;Tryassassinate(x,y):x试图暗杀试图暗杀y。1/1/20237练习:练习:“快乐学生快乐学生”问题问题假设:任何通过计
6、算机考试并获奖的人都是快乐的;假设:任何通过计算机考试并获奖的人都是快乐的;任何肯学习或幸运的人都可以通过所有考试;任何肯学习或幸运的人都可以通过所有考试;张不肯学习但他是幸运的;张不肯学习但他是幸运的;任何幸运的人都能获奖。任何幸运的人都能获奖。证明:张是快乐的。证明:张是快乐的。定义谓词定义谓词Pass(x,y):x通过考试通过考试y;Win(x):x获奖获奖;Happy(x):x快乐;快乐;Study(x):x肯学习肯学习;Lucky(x):x幸运。幸运。应用归结原理进行定理证明-习题41/1/20238应用归结原理进行定理证明-习题5 练习练习-“激动人心的生活激动人心的生活”问题问题
7、假设:假设:所有不贫穷并且聪明的人都是快乐的;所有不贫穷并且聪明的人都是快乐的;那些看书的人是聪明的;那些看书的人是聪明的;李明能看书且不贫穷;李明能看书且不贫穷;快乐的人过着激动人心的生活。快乐的人过着激动人心的生活。求证:李明过着激动人心的生活。求证:李明过着激动人心的生活。定义谓词:定义谓词:Poor(x):x贫穷;贫穷;Smart(x):x聪明;聪明;Happy(x):x快乐;快乐;Read(x):x看书;看书;Exciting(x):x过着激动人心的生活。过着激动人心的生活。1/1/20239(二)利用归结原理求取问题答案(二)利用归结原理求取问题答案利用归结原理求取问题答案的步骤:
8、利用归结原理求取问题答案的步骤:(1)把已知前提条件用谓词公式表示出来,并化成相应的子句集,)把已知前提条件用谓词公式表示出来,并化成相应的子句集,设该子句集的名字为设该子句集的名字为S1。(2)把待求解的问题也用谓词公式表示出来,然后将其否定,并)把待求解的问题也用谓词公式表示出来,然后将其否定,并与一谓词与一谓词ANSWER构成析取式。谓词构成析取式。谓词ANSWER是一个专为求是一个专为求解问题而设置的谓词,其变量必须与问题公式的变量完全一致。解问题而设置的谓词,其变量必须与问题公式的变量完全一致。(3)把()把(2)中的析取式化为子句集,并把该子句集与)中的析取式化为子句集,并把该子句
9、集与S1合并构成合并构成子句集子句集S。1/1/202310(4)对子句集)对子句集S应用归结原理进行归结,在归应用归结原理进行归结,在归结的过程中,通过合一,改变结的过程中,通过合一,改变ANSWER中的中的变元。变元。(5)如果得到归结式)如果得到归结式ANSWER,则问题的答案,则问题的答案即在即在ANSWER谓词中。谓词中。1/1/202311利用归结原理求取问题答案利用归结原理求取问题答案-习题习题1例例.任何兄弟都有同一个父亲,任何兄弟都有同一个父亲,John和和Peter是兄弟,且是兄弟,且John的父亲是的父亲是David,问问:Peter的父亲是谁?的父亲是谁?解解 第一步:
10、将已知条件用谓词公式表示出来,并化成子第一步:将已知条件用谓词公式表示出来,并化成子句集,那么要先定义谓词。句集,那么要先定义谓词。(1)定义谓词:定义谓词:设设Father(x,y)表示表示x是是y的父亲。的父亲。Brother(x,y)表示表示x和和y是兄弟。是兄弟。1/1/202312(2)将已知事实用谓词公式表示出来。将已知事实用谓词公式表示出来。F1:任何兄弟都有同一个父亲。:任何兄弟都有同一个父亲。x y z(Brother(x,y)Father(z,x)Father(z,y)F2:John和和Peter是兄弟。是兄弟。Brother(John,Peter)F3:John的父亲是的
11、父亲是David。Father(David,John)(3)将它们化成子句集得:将它们化成子句集得:S1=Brother(x,y)Father(z,x)Father(z,y),Brother(John,Peter),Father(David,John)1/1/202313第二步:把问题用谓词公式表示出来,第二步:把问题用谓词公式表示出来,并将其否定与谓词并将其否定与谓词ANSWER作析取。作析取。设设Peter的父亲是的父亲是u,则有:,则有:Father(u,Peter)。将其否定与将其否定与ANSWER作析取,得:作析取,得:G:Father(u,Peter)ANSWER(u)1/1/20
12、2314第三步:将上述公式第三步:将上述公式G化为子句集化为子句集S2,并将并将S1和和S2合并到合并到S。S2=Father(u,Peter)ANSWER(u)S=S1S2将将S中各子句列出如下:中各子句列出如下:(1)Brother(x,y)Father(z,x)Father(z,y)。(2)Brother(John,Peter)。(3)Father(David,John)。(4)Father(u,Peter)ANSWER(u)。1/1/202315第四步:应用归结原理进行归结第四步:应用归结原理进行归结(5)Brother(John,y)Father(David,y)(1)与()与(3)
13、归结)归结=David/z,John/x(6)Brother(John,Peter)ANSWER(David)(4)与()与(5)归结)归结=David/u,Peter/y(7)ANSWER(David)(2)与()与(6)归结)归结第五步:得到了归结式第五步:得到了归结式ANSWER(David),答案即在其中,所以,答案即在其中,所以u=David。即。即Peter的父亲是的父亲是David。1/1/202316利用归结原理求取问题答案利用归结原理求取问题答案-习题习题2练习:练习:已知:已知:F1:王先生是小李的老师;王先生是小李的老师;F2:小李与小张是同班同学;小李与小张是同班同学;
14、F3:如果如果x与与y是同班同学,则是同班同学,则x的老师也是的老师也是y的老师。的老师。求:小张的老师是谁?求:小张的老师是谁?定义谓词:定义谓词:T(x,y):x是是y的老师;的老师;C(x,y):x与与y是同班同学。是同班同学。1/1/202317利用归结原理求取问题答案利用归结原理求取问题答案-习题习题3 练习:某记者到一个孤岛上采访,遇到了一个难题,即岛上有许练习:某记者到一个孤岛上采访,遇到了一个难题,即岛上有许多人说假话,因而难以保证新闻报道的正确性。不过有一点她是多人说假话,因而难以保证新闻报道的正确性。不过有一点她是清楚的,这个岛上的人有一特点,说假话的人从来不说真话,说清楚
15、的,这个岛上的人有一特点,说假话的人从来不说真话,说真话的人也从来不说假话。有一次,记者遇到了孤岛上的三个人,真话的人也从来不说假话。有一次,记者遇到了孤岛上的三个人,为了弄清楚谁说真话,谁说假话,她向三个人中的每一个都提了为了弄清楚谁说真话,谁说假话,她向三个人中的每一个都提了同样的问题,即同样的问题,即“谁是说谎者?谁是说谎者?”结果,结果,a 回答:回答:“b和和c都是说谎都是说谎者者”;b回答:回答:“a和和c都是说谎者都是说谎者”;c回答:回答:“a和和b至少有一个是至少有一个是说谎者说谎者”。试问记者如何才能从这些回答中理出头绪。试问记者如何才能从这些回答中理出头绪。定义谓词:定义
16、谓词:T(x):x说真话。说真话。1/1/202318利用归结原理求取问题答案利用归结原理求取问题答案-习题习题4破案问题:在一栋房子里发生了一件神秘的谋杀破案问题:在一栋房子里发生了一件神秘的谋杀案,现在可以肯定以下几点事实:案,现在可以肯定以下几点事实:(1)在这栋房子里仅住有在这栋房子里仅住有A,B,C三人;三人;(2)是住在这栋房子里的人杀了是住在这栋房子里的人杀了A;(3)谋杀者非常恨受害者谋杀者非常恨受害者A;(4)A所恨的人,所恨的人,C一定不恨;一定不恨;(5)除了除了B以外,以外,A恨所有的人;恨所有的人;(6)B恨所有不比恨所有不比A富有的人;富有的人;1/1/202319(7)A所恨的人,所恨的人,B也恨;也恨;(8)没有一个人恨所有的人;没有一个人恨所有的人;(9)杀人嫌疑犯一定不会比受害者富有。杀人嫌疑犯一定不会比受害者富有。为了推理需要,增加如下常识:为了推理需要,增加如下常识:(10)A不等于不等于B。问:谋杀者是谁?问:谋杀者是谁?定义谓词:定义谓词:L(x):住在这栋房子里;住在这栋房子里;SK(x,y):x杀了杀了y;H(x,y):x恨恨y;R(x,y):x比比y富有。富有。1/1/202320