实验三 归原理.docVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《 人工智能 》 实验大作业 实验题目: 归结原理 专业 信息与计算科学 年级 091001 姓名 马昊 学号 091001106 指导老师 时华 日 期 2012-12-5 实验三 归结原理 一、实验目的 在本实验中,主要熟悉和掌握归结原理的基本思想和基本方法,通过实验培养了我们利用逻辑方法表示知识,并掌握采用机器推理来进行问题求解的基本方法。 二、实验要求 1.熟悉归结原理的基本思想和归结否证的步骤; 2.本实验JAVA语言编程实现实验内容; 3.利用所学的知识及实验结果,来完成实验报告的各项内容。 三、实验背景知识 归结原理是一种推理规则。从谓词公式转化为子句集的过程中看出,在子句集中子句之间是合取关系,其中只要有一个子句不可满足,则子句集就不可满足。若一个子句集中包含空子句,则这个子句集一定是不可满足的。归结原理就是基于这一认识提出来的。 他的原理就是: P-Q,Q-R 则 P-R 由于 P-Q 就是 ¬P∨Q   而 Q-R 就是 ¬Q∨R 所以,他相当于将Q 和 ¬Q合并。也就是说,   P∨{∑1} 与 ~P∨{∑2} 可以归结为 {∑1}∨{∑2} 其中∑1,∑2是文字的集合归结否证包含以下步骤: 把前提或公理转换成子句形式; 把求证目标的否定的子句形式加到公理集合中; 对所有这些子句进行归结,产生它们的逻辑结果子句; 用产生空子句的方法来得出矛盾; 否定目标的否证在用于产生空子句的代换下为真。 如何把前提或公理化为子句形式是进行归结的前提,其过程包含如下步骤: (1)消去蕴涵符号 用~ P∨Q 替换 P→Q (2)减少否定符号的辖域 每个否定符号~ 最多只作用在一个谓词符号上 (3)对变量标准化 每个变量仅受一个量词作用 (4)消去存在量词 若存在量词前没有全称量词,则直接消去;否则,要Skolem。化。 (5)化为前束范式 前束范式:一个公式,如果量词均非否定地出现在公式 最前面,其辖域延伸到整个公式的末尾,且在公式中仅含有联结词~ ,∨,∧,则称此种形式为前束范式。 前束范式 = (前缀) (母式) (6)化母式为合取范式 (7)消去全称量词 (8)消去连接词符号∧ 用{A,B}替代(A∧B) (9)将分离的变元归一化 四、实验内容 1.问题描述:四对夫妇中,王结婚时,周送了礼;周和钱是同一排球队的队员;李的爱人是陈的爱人的表哥;陈夫妇与邻居吵架时,徐、周、吴的爱人都去助战;李、徐、周结婚前住在同一宿舍,试用归结原理求王、周、钱、陈、李、徐、吴、孙几人谁和谁是夫妇。 2.实验源代码: import java.lang.*; public class GuessCouple2 { /** 数据类型 */ public class Person { private String name; private boolean sex; private Person spouse; public Person(String name) { = name; this.sex = false; this.spouse = null; } public Person() { name = null; sex = false; spouse = null; } public Person(String name, boolean sex, Person spouse) { = name; this.sex = sex; this.spouse = spouse; } public void setName(String name) { = name; } public String getName() { return name; } public void setSex(boolean sex) { this.sex = sex; } public boolean getSex() { return sex; } public void setSpouse(Person person1) { this.spouse = person

文档评论(0)

mg60065 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档