您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 湖南大学人工智能实验2报告
人工智能1实验二使用Prolog的一阶逻辑推理实验201208070124易雪媛智能1201一、实验目的1.学会使用Prolog语言;2.用Prolog语言巩固一阶逻辑知识;3.能够使用prolog语言实现一阶逻辑的证明;二、实验的硬件、软件平台1.硬件:计算机2.软件:操作系统:WINDOWS20003.应用软件:Prolog三、实验内容及步骤熟悉prolog语言的使用并实现对于一阶逻辑推理的证明关于prolog语言:此实验中提到的语言使用来讲解:例如:p(b).p(a):-p(b).p(a):-p(c)分别表示:p(b)为真;由p(b)为真可以推出p(a)为真;由p(c)为真可以推出p(a)为真.其中语句之间‘,’表示且,‘;’表示或,‘.’表示语句结束;likes(bell,sports).表示bell喜欢sports。实验步骤:1.对于a,b,c,d四种输入情况,验证|?-p(a).的真假;a.p(b).p(a):-p(b).p(a):-p(c)推理分析:事实:p(b)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真.结论:p(a)为真.人工智能2运行结果:b.p(c).p(a):-p(b).p(a):-p(c).推理分析:事实:p(c)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真.结论:p(a)为真.运行结果:c.p(b).p(a):-p(b),p(c).推理分析:事实:p(b)为真.推理:由p(b)为真且p(c)为真可以推出p(a)为真.结论:p(a)为假.因为p(b)未知.运行结果:d.p(c).p(a):-p(b);p(c).推理分析:事实:p(b)为真.推理:由p(b)为真或p(c)为真可以推出p(a)为真.结论:p(a)为真.运行结果:2.验证?-friend(john,Y).likes(bell,sports).likes(mary,music).likes(mary,sports).人工智能3likes(jane,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).推理分析:推理:1.如果X喜欢音乐,而且喜欢阅读,那么X是john的朋友。2.如果X喜欢音乐,而且喜欢运动,那么X是john的朋友。相关事实:mary喜欢音乐也喜欢运动。结论:mary是john的朋友。运行结果:3.验证likes(bill,X)likes(ellen,tennis).likes(john,football).likes(tom,baseball).likes(eric,swimming).likes(mark,tennis).likes(bill,X):-likes(tom,X).推理分析:推理:如果tom喜欢X,则bill喜欢X。相关事实:tom喜欢baseball结论:bill喜欢baseball运行结果:4.构建与,或,非,异或表达,并验证。and(X,Y):-X,Y.or(X,Y):-X;Y.no(X):-xor(X,true).xor(X,Y):-X\==Y.推理分析:推理:X,Y都为真时and(X,Y)为真。人工智能4X,Y有一个为真时or(X,Y)为真。X为真时no(X)为真。X不等于Y时,异或xor(X,Y)为真。运行结果:5.已知兄弟sib(X,Y)的定义如下sib(X,Y):-p(Z,X),p(Z,Y),X\==Y.5.1:定义堂兄弟co(X,Y);5.2;定义二代堂兄弟sco(X,Y),X,Y的父母是堂兄弟。并做验证。p(ye,ba).p(ye,shu).p(ba,er).p(shu,ge).p(er,bob).p(ge,tom).sib(X,Y):-p(Z,X),p(Z,Y),X\==Y.co(X,Y):-sib(A,B),p(A,X),p(B,Y),X\==Y,A\==B.sco(X,Y):-co(A,B),p(A,X),p(B,Y),X\==Y,A\==B.推理分析:推理:当X不等于Y,且Z是XY的父亲,则XY为兄弟。当X不等于Y,A不等于B,且A是X的父亲,B是Y的父亲,AB是兄弟,则XY为堂兄弟。当X不等于Y,A不等于B,且A是X的父亲,B是Y的父亲,AB是堂兄弟,则XY为堂兄弟。相关事实:ye是ba和shu的父亲,ba是er的父亲,shu是ge的父亲,er是bob的父亲,ge是tom的父亲。结论:er和ge是堂兄弟,bob和tom是二代堂兄弟。运行结果:人工智能55.自动实现搜索算法-回溯,判断JOHN是谁的朋友TOM喜欢TALK,BILL喜欢游泳,BILL喜欢谈话;若X既喜欢TALK,有喜欢SWIM,则JOHN是X的朋友。likes(tom,talk).likes(bill,swimming).likes(bill,talk).friend(X,Y):-likes(X,talk),likes(X,swimming).推理分析:推理:当X喜欢talk,且喜欢swimming,则X是Y的朋友。相关事实:bill喜欢talk,且喜欢swimming。结论:bill是JOHN的朋友。运行结果:人工智能66.谁是盗窃犯问题:某人被盗,公安局派出所派出5个侦察员去调查。研究案情时:侦察员A说:“赵与钱中至少有一人作案”;侦察员B说:“钱与孙中至少有一人作案”;侦察员C说:“孙与李中至少有一人作案”;侦察员D说:“赵与孙中至少有一人与此案无关”;侦察员E说:“钱与李中至少有一人与此案无关”。如果这5个侦察员的话都是可信的,试编程求出谁是盗窃犯,并给出Prolog.程序。rule1(X,Y):-(X=true);(Y=true).rule2(X,Y):-(X=true);(Y=true).rule3(X,Y):-(X=true);(Y=ture).rule4(X,Y):-(X=false);(Y=false).rule5(X,Y):-(X=false);(Y=false).bool(true).bool(false).solution([Zhao,Qian,Sun,Li]):-bool(Zhao),bool(Qian),bool(Sun),bool(Li),rule1(Zhao,Qian),rule2(Qian,Sun),rule3(Sun,Li),rule4(Zhao,Sun),rule5(Qian,Li).推理分析:首先定义谓词:F(x)表示x作案则已知的前提可以表示为:∧(1)F(Zhao)∨F(Qian)人工智能7(2)F(Sun)∨F(Qian)(3)F(Sun)∨F(Li)(4)̚F(Zhao)∨̚F(Sun)(5)̚F(Qian)∨̚F(Li)待求解的问题为:(6)̚F(x)∨Ans(x)上面已经是子句集,直接进行归结:(7)Ans(Qian)∨F(Zhao)(8)Ans(Qian)̚∨F(Sun)(9)Ans(Qian)∨F(Qian)(10)Ans(Qian)所以Qian是罪犯。另一方面,还可以进行如下归结:(11)Ans(Sun)∨F(Qian)(12)Ans(Sun)∨̚F(Li)(13)Ans(Sun)∨F(Sun)(14)Ans(Sun)所以,Sun也是罪犯。同时根据(4)和(5)可知:Zhao和Li不是罪犯。运行结果:
本文标题:湖南大学人工智能实验2报告
链接地址:https://www.777doc.com/doc-2246338 .html