ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:41.09KB ,
资源ID:3412542      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3412542.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三 归结原理.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三 归结原理.docx

1、实验三 归结原理人工智能实验大作业实验题目: 归结原理 专业 信息与计算科学 年级 091001 姓名 马昊 学号 * 指导老师 时华 日期 2012-12-5 实验三归结原理一、实验目的在本实验中,主要熟悉和掌握归结原理的基本思想和基本方法,通过实验培养了我们利用逻辑方法表示知识,并掌握采用机器推理来进行问题求解的基本方法。二、实验要求1.熟悉归结原理的基本思想和归结否证的步骤;2.本实验JAVA语言编程实现实验内容;3.利用所学的知识及实验结果,来完成实验报告的各项内容。三、实验背景知识归结原理是一种推理规则。从谓词公式转化为子句集的过程中看出,在子句集中子句之间是合取关系,其中只要有一个

2、子句不可满足,则子句集就不可满足。若一个子句集中包含空子句,则这个子句集一定是不可满足的。归结原理就是基于这一认识提出来的。他的原理就是:P-Q,Q-R则P-R由于P-Q就是PQ而Q-R就是QR所以,他相当于将Q和Q合并。也就是说,P1与P2可以归结为12其中1,2是文字的集合归结否证包含以下步骤:(1)把前提或公理转换成子句形式;(2)把求证目标的否定的子句形式加到公理集合中;(3)对所有这些子句进行归结,产生它们的逻辑结果子句;(4)用产生空子句的方法来得出矛盾;(5)否定目标的否证在用于产生空子句的代换下为真。如何把前提或公理化为子句形式是进行归结的前提,其过程包含如下步骤:(1)消去蕴

3、涵符号用PQ替换PQ(2)减少否定符号的辖域每个否定符号最多只作用在一个谓词符号上(3)对变量标准化每个变量仅受一个量词作用(4)消去存在量词若存在量词前没有全称量词,则直接消去;否则,要Skolem。化。(5)化为前束范式前束范式:一个公式,如果量词均非否定地出现在公式最前面,其辖域延伸到整个公式的末尾,且在公式中仅含有联结词,则称此种形式为前束范式。前束范式=(前缀)(母式)(6)化母式为合取范式(7)消去全称量词(8)消去连接词符号用A,B替代(AB)(9)将分离的变元归一化四、实验内容1.问题描述:四对夫妇中,王结婚时,周送了礼;周和钱是同一排球队的队员;李的爱人是陈的爱人的表哥;陈夫

4、妇与邻居吵架时,徐、周、吴的爱人都去助战;李、徐、周结婚前住在同一宿舍,试用归结原理求王、周、钱、陈、李、徐、吴、孙几人谁和谁是夫妇。2.实验源代码:importjava.lang.*;publicclassGuessCouple2 /*数据类型*/ publicclassPerson privateStringname; privatebooleansex; privatePersonspouse; publicPerson(Stringname) this.name=name; this.sex=false; this.spouse=null; publicPerson() name=nu

5、ll; sex=false; spouse=null; publicPerson(Stringname,booleansex,Personspouse) this.name=name; this.sex=sex; this.spouse=spouse; publicvoidsetName(Stringname) this.name=name; publicStringgetName() returnname; publicvoidsetSex(booleansex) this.sex=sex; publicbooleangetSex() returnsex; publicvoidsetSpou

6、se(Personperson1) this.spouse=person1; publicPersongetSpouse() returnspouse; PersonsortBySpouse1=newPerson8; PersonsortBySpouse2=newPerson8; intx=0,y=0; PersonsortByEqualSex1=newPerson8; PersonsortByEqualSex2=newPerson8; intn=0,p=0,f=0; Personwoman=newPerson4; Personman=newPerson4; intk=0,s=0,r=0; b

7、ooleansign=true; booleansign1=true; booleansign2=true; booleansign3=true; booleansign4=true; booleansign5=true; booleansign6=true; booleansign7=true; Personcouple1=newPerson4; Personcouple2=newPerson4; Personcouple3=newPerson4; Personcouple4=newPerson4; inta=0,b=0,c=0,d=0; inta2=0,b2=0,c2=0,d2=0; pu

8、blicvoidisCouple(Personperson1,Personperson2) if(person1.getSpouse().getName()=person2.getName() person1.setSex(!person2.getSex(); person2.setSex(!person1.getSex(); System.out.println(person1.getName()+的性别和 +person2.getName()+的性别不相同); publicvoidmarriage(Personperson1,booleanperson1Marriage, Personpe

9、rson2,booleanperson2giveGiftPerson1) if(person1Marriage&person2giveGiftPerson1) if(!person1.getName().equals(person2.getName() System.out.println(person1.getName()+和 +person2.getName()+不是夫妻); sortBySpouse1x+=person1; sortBySpouse2y+=person2; publicvoidoneVolleyballGroup(booleanoneGroup,Personperson1

10、, Personperson2) if(oneGroup&person1.getSex()=person2.getSex() System.out.println(person1.getName()+和+person2.getName() +是相同的性别); sortByEqualSex1n+=person1; sortByEqualSex1n+=person2; f=n; publicvoidliveCollectivityDorm(booleanliveTogether,Personperson1, Personperson2,Personperson3) if(liveTogether&

11、!person1.getName().equals(person2.getName() &!person1.getName().equals(person3.getName() &!person2.getName().equals(person3.getName() System.out.println(person1.getName()+的性别和 +person2.getName()+的性别相同 +person3.getName()+的性别相同); sortByEqualSex2p+=person1; sortByEqualSex2p+=person2; sortByEqualSex2p+=

12、person3; publicvoidisbrotherInLaw(Personperson1,Personperson2, booleanp1SIsBrotherInLawP2S) if(!person1.getName().equals(person2.getName() &p1SIsBrotherInLawP2S) person1.setSex(false); sortBySpouse1x+=person1; sortBySpouse2y+=person2; System.out.println(person1.getName()+是一个女人); womank+=person1; r=k

13、; System.out.println(person1.getName()+的性别是女和 +person1.getName()+的配偶是男); publicvoidassistInFighting(booleancCoupleQuarrel,PersoncCouple, Personperson1,Personperson2,Personperson3) if(cCoupleQuarrel) if(!cCouple.getName().equals(person1.getName() &!cCouple.getName().equals(person2.getName() &!cCouple

14、.getName().equals(person3.getName() &!person1.getName().equals(person2.getName() &!person1.getName().equals(person3.getName() &!person2.getName().equals(person3.getName() System.out.println(cCouple.getName()+的配偶不是 +person1.getName()+和+cCouple.getName() +的配偶不是+person1.getName() +的配偶); System.out.prin

15、tln(cCouple.getName()+的配偶不是 +person2.getName()+和+cCouple.getName() +的配偶不是+person2.getName() +的配偶); System.out.println(cCouple.getName()+的配偶不是 +person3.getName()+和+cCouple.getName() +的配偶不是+person3.getName() +的配偶); sortBySpouse1x+=cCouple; sortBySpouse2y+=person1; sortBySpouse1x+=cCouple; sortBySpouse

16、2y+=person2; sortBySpouse1x+=cCouple; sortBySpouse2y+=person3; sortBySpouse1x+=person1; sortBySpouse2y+=person2; sortBySpouse1x+=person1; sortBySpouse2y+=person3; sortBySpouse1x+=person2; sortBySpouse2y+=person3; publicvoidguessCoupleByRules() Personperson=newPerson8; person0=newPerson(王,false,perso

17、n0); person1=newPerson(陈,false,person1); person2=newPerson(周,false,person2); person3=newPerson(钱,false,person3); person4=newPerson(吴,false,person4); person5=newPerson(孙,false,person5); person6=newPerson(李,false,person6); person7=newPerson(许,false,person7); marriage(person0,true,person2,true); oneVol

18、leyballGroup(true,person2,person3); isbrotherInLaw(person6,person1,true); assistInFighting(true,person1,person7,person2,person4); liveCollectivityDorm(true,person6,person7,person2); for(intv=0;vf;v+) for(intt=0;tp;t+) if(sortByEqualSex1v.getName().equals( sortByEqualSex2t.getName() for(intz=0;zp;z+)

19、 for(intj=0;jf;j+) if(!sortByEqualSex2z.getName().equals( sortByEqualSex1j.getName() ; else sortByEqualSex1j=sortByEqualSex2z; sign2=false; if(sign2) sortByEqualSex1n+=sortByEqualSex2z; sign2=true; for(intm=0;mr;m+) for(intq=0;qn;q+) if(womanm.getName().equals(sortByEqualSex1q.getName() for(intl=0;l

20、n;l+) for(intj=0;jr;j+) if(!sortByEqualSex1l.getName().equals( womanj.getName() ; else womanj=sortByEqualSex1l; sign=false; if(sign) womank+=sortByEqualSex1l; sign=true; r=k; if(r=4) for(intj=0;j8;j+) intw=0; for(inti=0;ir;i+) if(!personj.getName().equals(womani.getName() w+; if(w=r) mans+=personj;

21、System.out.println(); System.out.println(得到的男和女分别是:); System.out.print(女:+); for(inti=0;ir;i+) womani.setSex(false); System.out.print(womani.getName()+); System.out.println(); System.out.println(); System.out.print(男:+); for(intj=0;js;j+) manj.setSex(true); System.out.print(manj.getName()+); System.

22、out.println(); System.out.println(); for(inti=0;ix;i+) if(sortBySpouse1i.getSex()!=sortBySpouse2i.getSex() if(!sortBySpouse1i.getSex() Persontemp=newPerson(); temp=sortBySpouse1i; sortBySpouse1i=sortBySpouse2i; sortBySpouse2i=temp; publicvoidpartitionCouple() for(inti1=0;i1x;i1+) for(inti2=0;i2s;i2+

23、) if(sortBySpouse1i1.getName().equals(mani2.getName() for(inti=0;ir;i+) if(!sortBySpouse2i1.getName().equals( womani.getName() &sortBySpouse2i1.getSex()=womani .getSex() if(mani2.getName().equals(王) inta1=a; for(intj=0;ja1;j+) if(!couple1j.getName().equals( womani.getName() ; else couple1j=womani; s

24、ign3=false; if(sign3) couple1a+=womani; sign3=true; elseif(mani2.getName().equals(陈) intb1=b; for(intj=0;jb1;j+) if(!couple2j.getName().equals( womani.getName() ; else couple2j=womani; sign4=false; if(sign4) couple2b+=womani; sign4=true; elseif(mani2.getName().equals(吴) intc1=c; for(intj=0;jc1;j+) i

25、f(!couple3j.getName().equals( womani.getName() ; else couple3j=womani; sign5=false; if(sign5) couple3c+=womani; sign5=true; else intd1=d; for(intj=0;jd;j+) if(!couple4j.getName().equals( womani.getName() ; else couple4j=womani; sign6=false; if(sign6) couple4d+=womani; sign6=true; for(inti=0;ix;i+) if(sortBySpouse1i.getName().equals(王) for(intj=0;ja;j+) if(sortBySpous

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1