实验二:使用Prolog的一阶逻辑推理实验.doc_第1页
实验二:使用Prolog的一阶逻辑推理实验.doc_第2页
实验二:使用Prolog的一阶逻辑推理实验.doc_第3页
实验二:使用Prolog的一阶逻辑推理实验.doc_第4页
实验二:使用Prolog的一阶逻辑推理实验.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二:使用Prolog的一阶逻辑推理实验班级;智能1401 姓名:蒙寿伟 学号:201408070120一实验目的1.学会使用Prolog语言;2.用Prolog语言巩固一阶逻辑知识;3.能够使用prolog语言实现一阶逻辑的证明;二、实验的硬件、软件平台硬件:计算机软件:操作系统:WINDOWS10应用软件:Prolog三、实验内容及步骤熟悉prolog语言的使用并实现对于一阶逻辑推理的证明实验步骤: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)为真.运行结果: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). likes(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) if likes(tom,X). 推理分析:如果tom喜欢X,则bill喜欢X。相关事实:tom喜欢baseball结论:bill喜欢baseball运行结果:4. 构建与,或,非,异或表达,并验证。代码:and(X,Y) :- X,Y.or(X,Y) :- X;Y.no(X) :- not(X).xor(X,Y) :- X=Y.推理分析: 推理:X,Y都为真时and(X,Y)为真。X,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,bo).p(ba,wo).p(bo,tg).p(wo,tom).p(tg,jerry).sib(X,Y) :- p(Z,X),p(Z,Y), X=Y.co(X,Y) :- sib(A,B),p(A,X),p(B,Y),A=B,X=Y.sco(X,Y) :- co(A,B),p(A,X),p(B,Y),A=B,X=Y.推理分析:当X不等于Y,Y且Z是和Y的父亲,则X和Y是兄弟。当A不等于B,X不等于Y,A和B是兄弟,且A是X的父亲,B是Y的父亲,则X和Y是堂兄弟。当A不等于B,X不等于Y,A和B是堂兄弟,且A是X的父亲,B是Y的父亲,则X和Y是二代堂兄弟。相关事实:ye是ba和bo的父亲,ba是wo的父亲,bo是tg的父亲,wo是tom的父亲,tg是jerry的父亲。结论:Wo和tg是堂兄弟,tom和jerry是二代堂兄弟。运行结果:6.自动实现搜索算法-回溯,判断JOHN是谁的朋友TOM喜欢TALK,BILL喜欢游泳,BILL喜欢谈话;若X既喜欢TALK,有喜欢SWIM,则JOHN是X的朋友。代码:likes(tom,talk).likes(bill,swim).likes(bill,talk).friend(X,Y) :- likes(X,talk),likes(X,swim).推理分析:当X喜欢talk,且喜欢swimming,则X是Y的朋友。相关事实:bill喜欢talk,且喜欢swimming。结论:bill是JOHN的朋友。运行结果:7.谁是盗窃犯问题:某人被盗,公安局派出所派出5个侦察员去调查。研究案情时: 侦察员A说:“赵与钱中至少有一人作案”; 侦察员B说:“钱与孙中至少有一人作案”; 侦察员C说:“孙与李中至少有一人作案”; 侦察员D说:“赵与孙中至少有一人与此案无关”; 侦察员E说:“钱与李中至少有一人与此案无关”。 如果这5个侦察员的话都是可信的,试编程求出谁是盗窃犯,并给出Prolog.程序。 代码:spyA(X,Y):-(X=true);(Y=true).spyB(X,Y):-(X=true);(Y=true).spyC(X,Y):-(X=true);(Y=ture).spyD(X,Y):-(X=false);(Y=false).spyE(X,Y):-(X=false);(Y=false).find(Zhao,Qian,Sun,Li):-spyA(Zhao,Qian),spyB(Qian,Sun),spyC(Sun,Li),spyD(Zhao,Sun),spyE(Qian,Li).推理分析:定义谓词:Crime(x)表示x作案。则已知事实:(1) Crime(Zhao) Crime(Qian)(2) Crime(Sun) Crime(Qian)(3) Crime(Sun) Crime(Li)(4) Crime(Zhao) Crime(Sun)(5) Crime(Qian) Crime(Li)推理:Find(Zhao) V Crime(Qian)Find(Zhao) V Crime(Sun)Find(Zhao) V Crime(Li)归结结果,Zhao不是罪犯,按照同样的方法得:Qian 是罪犯,Sun 也是罪犯。结果:钱和孙作案。四、思考题1. 在题目2中PROLOG搜索过程是怎样的,试用树的结构表示,并计算其推理步数。readingmusicsportsmarybellMary 是 john的朋友1234先搜索是否有喜欢reading的,发现没有,然后搜索是否有喜欢sports的,发现bell和mary喜欢sports,继续搜索bell是否喜欢music,发现不喜欢,继续搜索mary是否喜欢music,发现喜欢,即mary满足是john朋友的条件,由此判断mary是john的朋友。故推理步数为4步。2. PROLOG语言和其它语言(如C语言)做逻辑推理,你更喜欢哪一个,简要说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论