人工智能(蔡自兴)实验2事实表示
- 格式:doc
- 大小:466.50 KB
- 文档页数:17
第三章搜索推理技术3-1什么是图搜索过程?其中,重排OPEN表意味着什么,重排的原则是什么?图搜索的一般过程如下:(1) 建立一个搜索图G(初始只含有起始节点S),把S放到未扩展节点表中(OPEN表)中。
(2) 建立一个已扩展节点表(CLOSED表),其初始为空表。
(3) LOOP:若OPEN表是空表,则失败退出。
(4) 选择OPEN表上的第一个节点,把它从OPEN表移出并放进CLOSED表中。
称此节点为节点n,它是CLOSED表中节点的编号(5) 若n为一目标节点,则有解并成功退出。
此解是追踪图G中沿着指针从n到S这条路径而得到的(指针将在第7步中设置)(6) 扩展节点n,生成不是n的祖先的那些后继节点的集合M。
将M添入图G中。
(7) 对那些未曾在G中出现过的(既未曾在OPEN表上或CLOSED表上出现过的)M成员设置一个通向n的指针,并将它们加进OPEN表。
对已经在OPEN或CLOSED表上的每个M成员,确定是否需要更改通到n的指针方向。
对已在CLOSED表上的每个M成员,确定是否需要更改图G中通向它的每个后裔节点的指针方向。
(8) 按某一任意方式或按某个探试值,重排OPEN表。
(9) GO LOOP。
重排OPEN表意味着,在第(6)步中,将优先扩展哪个节点,不同的排序标准对应着不同的搜索策略。
重排的原则当视具体需求而定,不同的原则对应着不同的搜索策略,如果想尽快地找到一个解,则应当将最有可能达到目标节点的那些节点排在OPEN表的前面部分,如果想找到代价最小的解,则应当按代价从小到大的顺序重排OPEN表。
3-2 试举例比较各种搜索方法的效率。
宽度优先搜索(1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。
(2) 如果OPEN是个空表,则没有解,失败退出;否则继续。
(3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED扩展节点表中。
(4) 扩展节点n。
第五章机器学习7-1 什么是学习和机器学习?为什么要研究机器学习?按照人工智能大师西蒙的观点,学习就是系统在不断重复的工作中对本身能力的增强或者改进,使得系统在下一次执行同样任务或类似任务时,会比现在做得更好或效率更高。
机器学习是研究如何使用机器来模拟人类学习活动的一门学科,是机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。
这里所说的“机器”,指的就是计算机。
现有的计算机系统和人工智能系统没有什么学习能力,至多也只有非常有限的学习能力,因而不能满足科技和生产提出的新要求。
7-2 试述机器学习系统的基本结构,并说明各部分的作用。
环境向系统的学习部分提供某些信息,学习部分利用这些信息修改知识库,以增进系统执行部分完成任务的效能,执行部分根据知识库完成任务,同时把获得的信息反馈给学习部分。
影响学习系统设计的最重要的因素是环境向系统提供的信息。
更具体地说是信息的质量。
7-3 试解释机械学习的模式。
机械学习有哪些重要问题需要加以研究?机械学习是最简单的机器学习方法。
机械学习就是记忆,即把新的知识存储起来,供需要时检索调用,而不需要计算和推理。
是最基本的学习过程。
任何学习系统都必须记住它们获取的知识。
在机械学习系统中,知识的获取是以较为稳定和直接的方式进行的,不需要系统进行过多的加工。
要研究的问题:(1) 存储组织信息只有当检索一个项目的时间比重新计算一个项目的时间短时,机械学习才有意义,检索的越快,其意义也就越大。
因此,采用适当的存储方式,使检索速度尽可能地快,是机械学习中的重要问题。
(2) 环境的稳定性与存储信息的适用性问题机械学习基础的一个重要假定是在某一时刻存储的信息必须适用于后来的情况(3) 存储与计算之间的权衡如果检索一个数据比重新计算一个数据所花的时间还要多,那么机械学习就失去了意义。
7-4 试说明归纳学习的模式和学习方法。
归纳是一种从个别到一般,从部分到整体的推理行为。
归纳学习的一般模式为:给定:观察陈述(事实)F,假定的初始归纳断言(可能为空),及背景知识求:归纳断言(假设)H,能重言蕴涵或弱蕴涵观察陈述,并满足背景知识。
人工智能作业题1 - 1 什么是人工智能?试从学科和能力两方面加以说明。
1 - 4 现在人工智能有哪些学派?它们的任知观是什么?1 - 6 人工智能的主要研究和应用领域是什么?其中,哪些是新的研究热点?2 - 6 用谓词演算公式表示下列英文句子 ( 多用而不是省用不同谓词和项。
例如不要用单一的谓词字母来表示每个句子 ) 。
A computer system is intelligent if it can perform a task which,if performed by a human, requires intelligence.2 - 7 把下列语句表示成语义网络描述:(1) All man are mortal.(2) Every cloud has a silver liming.(3) All branch managers of DEC participate in a profit-sharing plan.2 - 9 试构造一个描述你的寝室或办公室的框架系统。
补充题:1 、张某被盗,公安局派出五个侦察员去调查。
研究案情时,侦察员 A 说“赵与钱中至少有一人作案”;侦察员 B 说“钱与孙中至少有一人作案”;侦察员 C 说“孙与李中至少有一人作案”;侦察员 D 说“赵与孙中至少有一人与此案无关”;侦察员 E 说“钱与李中至少有一人与此案无关”。
如果这五个侦察员的话都是可信的,试用归结演绎推理求出谁是盗窃犯。
3 -4 如何通过消解反演求取问题的答案?3 - 11 规则演绎系统和产生式系统有哪几种推理方式?各自的特点为何?3 - 6 下列语句是一些几何定理,把这些语句表示为基于规则的几何证明系统的产生式规则:(1) 两个全等三角形的各对应角相等。
(2) 两个全等三角形的各对应边相等。
3 - 17 把下列句子变换成子句形式:4 - 1 计算智能的含义是什么?它涉及哪些研究分支?4 - 6 构作一个神经网络,用于计算含有两个输入的 XOP 函数。
可编辑修改精选全文完整版人工智能及其应用(蔡自兴)课后答案第二章知识表示方法2-1 状态空间法、问题归约法、谓词逻辑法和语义网络法的要点是什么?它们有何本质上的联系及异同点?答:状态空间法:基于解答空间的问题表示和求解方法,它是以状态和算符为基础来表示和求解问题的。
一般用状态空间法来表示下述方法:从某个初始状态开始,每次加一个操作符,递增的建立起操作符的试验序列,直到达到目标状态为止。
问题规约法:已知问题的描述,通过一系列变换把此问题最终变成一个子问题集合:这些子问题的解可以直接得到,从而解决了初始问题。
问题规约的实质:从目标出发逆向推理,建立子问题以及子问题的子问题,直至最后把出示问题规约为一个平凡的本原问题集合。
谓词逻辑法:采用谓词合式公式和一阶谓词算法。
要解决的问题变为一个有待证明的问题,然后采用消解定理和消解反演莱证明一个新语句是从已知的正确语句导出的,从而证明这个新语句也是正确的。
语义网络法:是一种结构化表示方法,它节点和弧线或链组成。
节点用于表示物体、概念和状态,弧线用于表示节点间的关系。
语义网络的解答是一个经过推理和匹配而得到的具有明确结果的新的语义网络。
语义网络可用于表示多元关系,扩展后可以表示更复杂的问题2-2 设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到左岸去。
该船的负载能力为两人。
在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。
他们怎样才能用这条船安全地把所有人都渡过河去?用Si(nC, nY) 表示第i次渡河后,河对岸的状态,nC表示传教士的数目,nY表示野人的数目,于总人数的确定的,河对岸的状态确定了,河这边的状态也即确定了。
考虑到题目的限制条件,要同时保证,河两岸的传教士数目不少于野人数目,故在整个渡河的过程中,允许出现的状态为以下3种情况: 1. nC=0 2. nC=33. nC=nY>=0 (当nC不等于0或3)用di(dC, dY)表示渡河过程中,对岸状态的变化,dC表示,第i次渡河后,对岸传教士数目的变化,dY表示,第i次渡河后,对岸野人数目的变化。
人工智能作业题1 - 1 什么是人工智能?试从学科和能力两方面加以说明。
1 - 4 现在人工智能有哪些学派?它们的任知观是什么?1 - 6 人工智能的主要研究和应用领域是什么?其中,哪些是新的研究热点?2 - 6 用谓词演算公式表示下列英文句子 ( 多用而不是省用不同谓词和项。
例如不要用单一的谓词字母来表示每个句子 ) 。
A computer system is intelligent if it can perform a task which,if performed by a human, requires intelligence.2 - 7 把下列语句表示成语义网络描述:(1) All man are mortal.(2) Every cloud has a silver liming.(3) All branch managers of DEC participate in a profit-sharing plan.2 - 9 试构造一个描述你的寝室或办公室的框架系统。
补充题:1 、张某被盗,公安局派出五个侦察员去调查。
研究案情时,侦察员 A 说“赵与钱中至少有一人作案”;侦察员 B 说“钱与孙中至少有一人作案”;侦察员 C 说“孙与李中至少有一人作案”;侦察员 D 说“赵与孙中至少有一人与此案无关”;侦察员 E 说“钱与李中至少有一人与此案无关”。
如果这五个侦察员的话都是可信的,试用归结演绎推理求出谁是盗窃犯。
3 -4 如何通过消解反演求取问题的答案?3 - 11 规则演绎系统和产生式系统有哪几种推理方式?各自的特点为何?3 - 6 下列语句是一些几何定理,把这些语句表示为基于规则的几何证明系统的产生式规则:(1) 两个全等三角形的各对应角相等。
(2) 两个全等三角形的各对应边相等。
3 - 17 把下列句子变换成子句形式:4 - 1 计算智能的含义是什么?它涉及哪些研究分支?4 - 6 构作一个神经网络,用于计算含有两个输入的 XOP 函数。
人工智能作业题1 - 1 什么是人工智能?试从学科和能力两方面加以说明。
1 - 4 现在人工智能有哪些学派?它们的任知观是什么?1 - 6 人工智能的主要研究和应用领域是什么?其中,哪些是新的研究热点?2 - 6 用谓词演算公式表示下列英文句子 ( 多用而不是省用不同谓词和项。
例如不要用单一的谓词字母来表示每个句子 ) 。
A computer system is intelligent if it can perform a task which,if performed by a human, requires intelligence.2 - 7 把下列语句表示成语义网络描述:(1) All man are mortal.(2) Every cloud has a silver liming.(3) All branch managers of DEC participate in a profit-sharing plan.2 - 9 试构造一个描述你的寝室或办公室的框架系统。
补充题:1 、张某被盗,公安局派出五个侦察员去调查。
研究案情时,侦察员 A 说“赵与钱中至少有一人作案”;侦察员 B 说“钱与孙中至少有一人作案”;侦察员 C 说“孙与李中至少有一人作案”;侦察员 D 说“赵与孙中至少有一人与此案无关”;侦察员 E 说“钱与李中至少有一人与此案无关”。
如果这五个侦察员的话都是可信的,试用归结演绎推理求出谁是盗窃犯。
3 -4 如何通过消解反演求取问题的答案?3 - 11 规则演绎系统和产生式系统有哪几种推理方式?各自的特点为何?3 - 6 下列语句是一些几何定理,把这些语句表示为基于规则的几何证明系统的产生式规则:(1) 两个全等三角形的各对应角相等。
(2) 两个全等三角形的各对应边相等。
3 - 17 把下列句子变换成子句形式:4 - 1 计算智能的含义是什么?它涉及哪些研究分支?4 - 6 构作一个神经网络,用于计算含有两个输入的 XOP 函数。
第二章知识表示方法2-1 状态空间法、问题归约法、谓词逻辑法和语义网络法的要点是什么?它们有何本质上的联系及异同点?答:状态空间法:基于解答空间的问题表示和求解方法,它是以状态和算符为基础来表示和求解问题的。
一般用状态空间法来表示下述方法:从某个初始状态开始,每次加一个操作符,递增的建立起操作符的试验序列,直到达到目标状态为止。
问题规约法:已知问题的描述,通过一系列变换把此问题最终变成一个子问题集合:这些子问题的解可以直接得到,从而解决了初始问题。
问题规约的实质:从目标(要解决的问题)出发逆向推理,建立子问题以及子问题的子问题,直至最后把出示问题规约为一个平凡的本原问题集合。
谓词逻辑法:采用谓词合式公式和一阶谓词算法。
要解决的问题变为一个有待证明的问题,然后采用消解定理和消解反演莱证明一个新语句是从已知的正确语句导出的,从而证明这个新语句也是正确的。
语义网络法:是一种结构化表示方法,它由节点和弧线或链组成。
节点用于表示物体、概念和状态,弧线用于表示节点间的关系。
语义网络的解答是一个经过推理和匹配而得到的具有明确结果的新的语义网络。
语义网络可用于表示多元关系,扩展后可以表示更复杂的问题2-2 设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到左岸去。
该船的负载能力为两人。
在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。
他们怎样才能用这条船安全地把所有人都渡过河去?用S i(nC, nY) 表示第i次渡河后,河对岸的状态,nC表示传教士的数目,nY表示野人的数目,由于总人数的确定的,河对岸的状态确定了,河这边的状态也即确定了。
考虑到题目的限制条件,要同时保证,河两岸的传教士数目不少于野人数目,故在整个渡河的过程中,允许出现的状态为以下3种情况:1. nC=02. nC=33. nC=nY>=0 (当nC不等于0或3)用d i(dC, dY)表示渡河过程中,对岸状态的变化,dC表示,第i次渡河后,对岸传教士数目的变化,dY表示,第i次渡河后,对岸野人数目的变化。
实验2 Prolog程序事实表示Visual Prolog是面向对象的、严格类型化的和模式检验的程序设计语言。
在编写Visual Prolog程序时,必须掌握这些内容,但是在这里将集中在编写代码这个核心问题上,也就是说,编写这些代码时暂时不考虑类、类型和模式。
为此,将使用包含在Visual Prolog 6 中的PIE例子。
PIE是一个经典的Prolog解释器,通过它,可以学会和实现Prolog程序,而不必关心类、类型等方面的知识。
这里的内容是基于使用Build6004或者是以后的Visual Prolog 6版本,否则,PIE应用程序将不会象现在描述的这样工作。
这个编译号可以在VDE的About对话框中找到。
1.Horn子句逻辑Visual Prolog 和其它Prolog用语都是基于Horn子句逻辑的。
Horn 子句逻辑是对事物及其相互关系进行推理的形式系统。
在自然语言中,可以有这样样的一个陈述句:John是Bill的父亲。
这里涉及两个实体,John和Bill,以及他们之间的关系,即一个是另一个的父亲.在Horn子句逻辑中,可以这样形式化地表述上面的陈述句:father(“Bill”,”John”).上面的father是带两个参量的一个谓词或关系,它表示第2个人是第1个人的父亲。
注意:此处已经选择了第2个人是第1个人的父亲,也可以选择另外的方式,变量的顺序形式化设计者的选择,然而一旦选定了,就必须保持一致,在这里的表述中,父亲始终是第2个人。
已经选择用人名来代表人,因为在现实世界中,许多人有相同的名字,所以这一方法不一定有效。
但在这里,用这一简单的形式化表示。
有了上面的形式化方法,可以表示任何人之间的任何类型的家庭关系,但是,为了让这些表述更为有趣,制定下面的规则。
X是Z的祖父,如果X是Y的父亲且Y是Z的父亲其中X,Y,Z指人。
在Horn子句逻辑中,可以这样表述grandFathe(Person,GrandFathe):-father(Person,Father),father(Father,GrandFather).已经选择使用了比X,Y,Z更容易理解的变量名。
另外,还引入了一个谓词来描述祖父关系。
再次选择了祖父作为第二个变量,像这样的保持一致是明智的,不同谓词的变量可以遵循相同的规则,当解读这些规则时,可以将:-解释为“如果(if)”,将隔开关系的逗号解释为“与(and)”.像“John是Bill的父亲”这样的陈述称为事实,而“X是Z的祖父,如果X是Y的父亲且Y是Z的父亲“称为规则。
可以用事实和规则来形成定理,一个定理是事实和规则的集合,下面陈述一个小定理:father(“Bill”,”John”).fathaer(“Pam””Bill”). grandFather(Person,GrandFather):-father(Person,Father), father(Father,GrandFather). 这个定理的作用是回答这样的一些问题:John是Sue的父亲吗?谁是Pam的父亲?John是Pam的祖父吗?^……这些问题称为目标(goal),它们可以这样形式化表示:?- father(“Sue”,”John”).?-father(“Pam”,X). ?- grandfather(“Pam”,”John”).这些问题被称为目标子句(goal clause)或简称为目标。
事实(facts),规则(rules)及目标合起来称为Horn子句,因此得名为Horn子句逻辑。
某些目标,如第一个和最后一个目标,可以简单地用“是”或“不是”来回答,其他目标,如第2个目标,需要寻找一个解,例如,X=“Bill”.一个目标可以有多个解,例如:?- father(X,Y).E有两个解:X=“Bill”,Y=”John”.X=“Pam”,Y=”Bill”.一个Prolog程序是一个定理和目标的集合。
当程序开始时,它试图使用定理为目标找到一个解。
探索PrologProlog在英语中的意思就是Programming in LOGic(逻辑编程)。
它是建立在逻辑学的理论基础之上的,最初是运用于自然语言的研究领域。
然而现在它被广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。
同时它对一些通常的应用程序的编写也很有帮助。
使用它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。
从纯理论的角度来讲,Prolog是一种令人陶醉的编程语言,但是在这本书中还是着重介绍他的实际使用方法。
逻辑编程什么叫逻辑编程?也许你还没有一个整体的印象,还是让我们首先来研究一个简单的例子吧。
运用经典的逻辑理论,我们可以说“所有的人(person)都属于人类(moral)”,如果用Prolog的语言来说就是“对于所有的X,只要X是一个人,它就属于人类。
”moral(X):-person(X) . 同样,我们还可以加入一些简单的事实,比如:苏格拉底(socrates)是一个人。
person(socrates).有了这两条逻辑声明,Prolog就可以判断苏格拉底是不是属于人类。
在Prolog的Listener中键入如下的命令:?-mortal(socrates). (此句中的'?-'是Listener的提示符,本句表示询问苏格拉底是不是属于人类。
)Linstener将给出答案:yes我们还可以询问,“谁属于人类?”?-mortal(X).我们会得到如下的答案:X= socrates这个简单的例子显示了Prolog的一些强大的功能。
它能让程序代码更简洁、更容易编写。
在多数情况下Prolog的程序员不需要关心程序的运行流程,这些都由Prolog自动地完成了。
当然,一个完整的程序不能只包括逻辑运算部分,还必须拥有输入输出,乃至用户界面部分。
很遗憾,Prolog在这些方面做得不好,或者说很差。
不过它还是提供了一些基本的方法的。
下面是上述的程序一个完整的例子。
把这个程序调入Listener中,运行mortal_report.。
?- mortal_report.Known mortals are:socratesplatoaristotleno以上程序中的一些函数以后还会详细的介绍的。
最后的那个no表示没有其他的人了。
进入下一章从下一章起,就开始正式介绍Prolog的编程方法了。
我将用一个实例来介绍Prolog,这是一个文字的冒险游戏,你所扮演的角色是一个三岁的小女孩,你想睡觉了,可是没有毛毯(nani)你就不能安心的睡觉。
所以你必须在那个大房子中找到你的毛毯,这就是你的任务。
这个游戏能够显示出一些Prolog的独到之处,不过Prolog的功能远不止编个简单的游戏,所以文中还将介绍一些其他的小程序。
事实 (facts) 注:斜粗体字表示Prolog的专有名词事实(facts)是prolog中最简单的谓词(predicate)。
它和关系数据库中的记录十分相似。
在下一章中我们会把事实作为数据库来搜索。
事实的语法结构如下:pred(arg1, arg2, ... argN).其中pred为谓词的名称。
arg1,...为参数,共有N个。
‘.’是所有的Prolog子句的结束符。
没有参数的谓词形式如下:pred.参数可以是以下四种之一:整数(integer)绝对值小于某一个数的正数或负数。
原子(atom)由小写字母开头的字符串。
变量(variable)由大写字母或下划线(_)开头。
结构(structure)在以后的章节介绍。
不同的Prolog还增加了一些其他的数据类型,例如浮点数和字符串等。
Prolog字符集包括:大写字母,A-Z;小写字母,a-z;数字,0-9;+-/\^,.~:.?#$等。
原子通常是字母和数字组成,开头的字符必须是小写字母。
例如:hellotwoWordsTogetherx14为了方便阅读,可以使用下划线把单词分开。
例如:a_long_atom_namez_23下面的是不合法的原子,no-embedded-hyphens123nodigitsatbeginning_nounderscorefirstNocapsfirst使用单引号扩起来的字符集都是合法的原子。
例如:'this-hyphen-is-ok''UpperCase''embedded blanks'下面的由符号组成的也是合法的原子:-->++变量和原子相似,但是开头字符四大写字母或是下划线。
例如:XInput_List_4th_argumentZ56有了这些基本的知识,我们就可以开始编写事实了。
事实通常用来储存程序所需的数据。
例如,某次商业买卖中的顾客数据。
customer/3。
(/3表示customer有三个参数)customer('John Jones', boston, good_credit).customer('Sally Smith', chicago, good_credit).必须使用单引号把顾客名引起来,因为它们是由大写字母开头的,并且中间有空格。
再看一个例子,视窗系统使用事实储存不同的窗口信息。
在这个例子中参数有窗口名称和窗口的位置坐标。
window(main, 2, 2, 20, 72).window(errors, 15, 40, 20, 78).某个医疗专家系统可能有如下的疾病数据库。
disease(plague, infectious). {疾病(瘟疫,有传染性)} Prolog的解释器提供了动态储存事实和规则的方法,并且也提供了访问它们的方法。
数据库的更新是通过运行‘consult’或‘reconsult’命令。
我们也可以直接在解释器中输入谓词,但是这些谓词不会被储存到硬盘上。
寻找Nani下面我们正式开始“寻找Nani”游戏的编写。
我们从定义基本的事实开始,这些事实是本游戏的基本的数据库。
它们包括:房间和它们的联系∙物体和它们的位置∙物体的属性∙玩家在游戏开始时的位置图2.1 “寻找Nani”游戏的的房间格局首先我们使用room/1谓词定义房间,一共有五条子句,它们都是事实,如图2.1。
room(kitchen).room(office).room(hall).room('dining room').room(cellar).我们使用具有两个参数的谓词来定义物体的位置。
第一个参数代表物体的名称,第二个参数表示物体的位置。
开始时,我们加入如下的物体。
location(desk, office).location(apple, kitchen).location(flashlight, desk).location('washing machine', cellar).location(nani, 'washing machine').location(broccoli, kitchen).location(crackers, kitchen).location(computer, office).注意:我们定义的那些符号,例如:kitchen、desk等对于我们是有意义的,可是它们对于Prolog是没有任何意义的,完全可以使用任何符号来表示房间的名称。