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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验三 归结原理.docx

1、实验三 归结原理 人工智能 实验大作业实验题目: 归结原理 专业 信息与计算科学 年级 091001 姓名 马昊 学号 091001106 指导老师 时华 日 期 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) 否定目标的否证在用于产生空子句的代换下为真。如何

3、把前提或公理化为子句形式是进行归结的前提,其过程包含如下步骤:(1)消去蕴涵符号 用 PQ 替换 PQ(2)减少否定符号的辖域 每个否定符号 最多只作用在一个谓词符号上(3)对变量标准化 每个变量仅受一个量词作用(4)消去存在量词 若存在量词前没有全称量词,则直接消去;否则,要Skolem。化。(5)化为前束范式 前束范式:一个公式,如果量词均非否定地出现在公式最前面,其辖域延伸到整个公式的末尾,且在公式中仅含有联结词 ,则称此种形式为前束范式。 前束范式 = (前缀) (母式)(6)化母式为合取范式(7)消去全称量词(8)消去连接词符号 用A,B替代(AB) (9)将分离的变元归一化四、实验

4、内容1.问题描述:四对夫妇中,王结婚时,周送了礼;周和钱是同一排球队的队员;李的爱人是陈的爱人的表哥;陈夫妇与邻居吵架时,徐、周、吴的爱人都去助战;李、徐、周结婚前住在同一宿舍,试用归结原理求王、周、钱、陈、李、徐、吴、孙几人谁和谁是夫妇。2.实验源代码:import java.lang.*;public class GuessCouple2 /* 数据类型 */ public class Person private String name; private boolean sex; private Person spouse; public Person(String name) this

5、.name = name; this.sex = false; this.spouse = null; public Person() name = null; sex = false; spouse = null; public Person(String name, boolean sex, Person spouse) this.name = name; this.sex = sex; this.spouse = spouse; public void setName(String name) this.name = name; public String getName() retur

6、n name; public void setSex(boolean sex) this.sex = sex; public boolean getSex() return sex; public void setSpouse(Person person1) this.spouse = person1; public Person getSpouse() return spouse; Person sortBySpouse1 = new Person8; Person sortBySpouse2 = new Person8; int x = 0, y = 0; Person sortByEqu

7、alSex1 = new Person8; Person sortByEqualSex2 = new Person8; int n = 0, p = 0, f = 0; Person woman = new Person4; Person man = new Person4; int k = 0, s = 0, r = 0; boolean sign = true; boolean sign1 = true; boolean sign2 = true; boolean sign3 = true; boolean sign4 = true; boolean sign5 = true; boole

8、an sign6 = true; boolean sign7 = true; Person couple1 = new Person4; Person couple2 = new Person4; Person couple3 = new Person4; Person couple4 = new Person4; int a = 0, b = 0, c = 0, d = 0; int a2 = 0, b2 = 0, c2 = 0, d2 = 0; public void isCouple(Person person1, Person person2) if (person1.getSpous

9、e().getName() = person2.getName() person1.setSex(!person2.getSex(); person2.setSex(!person1.getSex(); System.out.println(person1.getName() + 的性别和 + person2.getName() + 的性别不相同); public void marriage(Person person1, boolean person1Marriage, Person person2, boolean person2giveGiftPerson1) if (person1Ma

10、rriage & person2giveGiftPerson1) if (!person1.getName().equals(person2.getName() System.out.println(person1.getName() + 和 + person2.getName() + 不是夫妻); sortBySpouse1x+ = person1; sortBySpouse2y+ = person2; public void oneVolleyballGroup(boolean oneGroup, Person person1, Person person2) if (oneGroup &

11、 person1.getSex() = person2.getSex() System.out.println(person1.getName() + 和 + person2.getName() + 是相同的性别); sortByEqualSex1n+ = person1; sortByEqualSex1n+ = person2; f = n; public void liveCollectivityDorm(boolean liveTogether, Person person1, Person person2, Person person3) if (liveTogether & !per

12、son1.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; sortByEq

13、ualSex2p+ = person3; public void isbrotherInLaw(Person person1, Person person2, boolean p1SIsBrotherInLawP2S) if (!person1.getName().equals(person2.getName() & p1SIsBrotherInLawP2S) person1.setSex(false); sortBySpouse1x+ = person1; sortBySpouse2y+ = person2; System.out.println(person1.getName() + 是一

14、个女人); womank+ = person1; r = k; System.out.println(person1.getName() + 的性别是女和 + person1.getName() + 的配偶是男); public void assistInFighting(boolean cCoupleQuarrel, Person cCouple, Person person1, Person person2, Person person3) if (cCoupleQuarrel) if (!cCouple.getName().equals(person1.getName() & !cCou

15、ple.getName().equals(person2.getName() & !cCouple.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() + 和 + cCoupl

16、e.getName() + 的配偶不是 + person1.getName() + 的配偶); System.out.println(cCouple.getName() + 的配偶不是 + person2.getName() + 和 + cCouple.getName() + 的配偶不是 + person2.getName() + 的配偶); System.out.println(cCouple.getName() + 的配偶不是 + person3.getName() + 和 + cCouple.getName() + 的配偶不是 + person3.getName() + 的配偶); so

17、rtBySpouse1x+ = cCouple; sortBySpouse2y+ = person1; sortBySpouse1x+ = cCouple; sortBySpouse2y+ = person2; sortBySpouse1x+ = cCouple; sortBySpouse2y+ = person3; sortBySpouse1x+ = person1; sortBySpouse2y+ = person2; sortBySpouse1x+ = person1; sortBySpouse2y+ = person3; sortBySpouse1x+ = person2; sortB

18、ySpouse2y+ = person3; public void guessCoupleByRules() Person person = new Person8; person0 = new Person(王, false, person0); person1 = new Person(陈, false, person1); person2 = new Person(周, false, person2); person3 = new Person(钱, false, person3); person4 = new Person(吴, false, person4); person5 = n

19、ew Person(孙, false, person5); person6 = new Person(李, false, person6); person7 = new Person(许, false, person7); marriage(person0, true, person2, true); oneVolleyballGroup(true, person2, person3); isbrotherInLaw(person6, person1, true); assistInFighting(true, person1, person7, person2, person4); live

20、CollectivityDorm(true, person6, person7, person2); for (int v = 0; v f; v+) for (int t = 0; t p; t+) if (sortByEqualSex1v.getName().equals( sortByEqualSex2t.getName() for (int z = 0; z p; z+) for (int j = 0; j f; j+) if (!sortByEqualSex2z.getName().equals( sortByEqualSex1j.getName() ; else sortByEqu

21、alSex1j = sortByEqualSex2z; sign2 = false; if (sign2) sortByEqualSex1n+ = sortByEqualSex2z; sign2 = true; for (int m = 0; m r; m+) for (int q = 0; q n; q+) if (womanm.getName().equals(sortByEqualSex1q.getName() for (int l = 0; l n; l+) for (int j = 0; j r; j+) if (!sortByEqualSex1l.getName().equals(

22、 womanj.getName() ; else womanj = sortByEqualSex1l; sign = false; if (sign) womank+ = sortByEqualSex1l; sign = true; r = k; if (r = 4) for (int j = 0; j 8; j+) int w = 0; for (int i = 0; i r; i+) if (!personj.getName().equals(womani.getName() w+; if (w = r) mans+ = personj; System.out.println(); Sys

23、tem.out.println(得到的男和女分别是:); System.out.print(女 : + ); for (int i = 0; i r; i+) womani.setSex(false); System.out.print(womani.getName() + ); System.out.println(); System.out.println(); System.out.print(男 : + ); for (int j = 0; j s; j+) manj.setSex(true); System.out.print(manj.getName() + ); System.o

24、ut.println(); System.out.println(); for (int i = 0; i x; i+) if (sortBySpouse1i.getSex() != sortBySpouse2i.getSex() if (!sortBySpouse1i.getSex() Person temp = new Person(); temp = sortBySpouse1i; sortBySpouse1i = sortBySpouse2i; sortBySpouse2i = temp; public void partitionCouple() for (int i1 = 0; i

25、1 x; i1+) for (int i2 = 0; i2 s; i2+) if (sortBySpouse1i1.getName().equals(mani2.getName() for (int i = 0; i r; i+) if (!sortBySpouse2i1.getName().equals( womani.getName() & sortBySpouse2i1.getSex() = womani .getSex() if (mani2.getName().equals(王) int a1 = a; for (int j = 0; j a1; j+) if (!couple1j.

26、getName().equals( womani.getName() ; else couple1j = womani; sign3 = false; if (sign3) couple1a+ = womani; sign3 = true; else if (mani2.getName().equals(陈) int b1 = b; for (int j = 0; j b1; j+) if (!couple2j.getName().equals( womani.getName() ; else couple2j = womani; sign4 = false; if (sign4) couple2b+ = womani; sign4 = true;

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

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