人工智能(第3版)王万森部分习题答案教学文稿.doc
如有侵权,请联系网站删除,仅供学习与交流人工智能(第3版)王万森部分习题答案【精品文档】第 11 页第二章2.8 设有如下语句,请用相应的谓词公式分别把他们表示出来:(1) 有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花 。解:定义谓词P(x):x是人L(x,y):x喜欢y其中,y的个体域是梅花,菊花。将知识用谓词表示为:(x )(P(x)L(x, 梅花)L(x, 菊花)L(x, 梅花)L(x, 菊花)(2) 有人每天下午都去打篮球。解:定义谓词P(x):x是人B(x):x打篮球A(y):y是下午将知识用谓词表示为:(x )(y) (A(y)B(x)P(x)(3) 新型计算机速度又快,存储容量又大。解:定义谓词NC(x):x是新型计算机F(x):x速度快B(x):x容量大将知识用谓词表示为:(x) (NC(x)F(x)B(x)(4) 不是每个计算机系的学生都喜欢在计算机上编程序。解:定义谓词S(x):x是计算机系学生L(x, pragramming):x喜欢编程序U(x,computer):x使用计算机将知识用谓词表示为:¬ (x) (S(x)L(x, pragramming)U(x,computer)(5) 凡是喜欢编程序的人都喜欢计算机。解:定义谓词P(x):x是人L(x, y):x喜欢y将知识用谓词表示为:(x) (P(x)L(x,pragramming)L(x, computer)2.10 用谓词表示法求解农夫、狼、山羊、白菜问题。农夫、狼、山羊、白菜全部放在一条河的左岸,现在要把他们全部送到河的右岸去,农夫有一条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。似规划出一个确保全部安全过河的计划。请写出所用谓词的定义,并给出每个谓词的功能及变量的个体域。解:(1) 先定义描述状态的谓词要描述这个问题,需要能够说明农夫、狼、羊、白菜和船在什么位置,为简化问题表示,取消船在河中行驶的状态,只描述左岸和右岸的状态。并且,由于左岸和右岸的状态互补,因此可仅对左岸或右岸的状态做直接描述。本题选择对左岸进行直接描述的方法,即定义谓词如下:AL(x):x在左岸其中,x的个体域是农夫,船,狼,羊,白菜。对应地,¬AL(x)表示x在右岸。 问题的初始状态:AL(农夫)AL(船)AL(狼)AL(羊)AL(白菜) 问题的目标状态:¬AL(农夫)¬AL(船)¬AL(狼)¬AL(羊)¬AL(白菜) (2) 再定义描述操作的谓词本题需要以下4个描述操作的谓词:L-R:农夫自己划船从左岸到右岸L-R(x):农夫带着x划船从左岸到右岸R-L:农夫自己划船从右岸到左岸R-L(x) :农夫带着x划船从右岸到左岸其中,x的个体域是狼,羊,白菜。对上述每个操作,都包括条件和动作两部分。它们对应的条件和动作如下:L-R:农夫划船从左岸到右岸 条件:AL(船),AL(农夫),¬AL(狼)¬AL(羊),¬AL(羊)¬AL(白菜) 动作:删除表:AL(船),AL(农夫) 添加表:¬AL(船),¬AL(农夫)L-R(狼):农夫带着狼划船从左岸到右岸 条件:AL(船),AL(农夫),AL(狼),¬AL(羊) 动作:删除表:AL(船),AL(农夫),AL(狼) 添加表:¬AL(船),¬AL(农夫),¬AL(狼)L-R(羊):农夫带着羊划船从左岸到右岸 条件:AL(船),AL(农夫),AL(羊), AL(狼),AL(白菜) 或:AL(船),AL(农夫),AL(羊),¬AL(狼),¬AL(白菜) 动作:删除表:AL(船),AL(农夫),AL(羊) 添加表:¬AL(船),¬AL(农夫),¬AL(羊)L-R(白菜):农夫带着白菜划船从左岸到右岸 条件:AL(船),AL(农夫),AL(白菜),¬AL(狼) 动作:删除表:AL(船),AL(农夫),AL(白菜) 添加表:¬AL(船),¬AL(农夫),¬AL(白菜)R-L:农夫划船从右岸到左岸 条件:¬AL(船),¬AL(农夫),AL(狼)AL(羊),AL(羊)AL(白菜) 或:¬AL(船),¬AL(农夫) ,¬AL(狼),¬AL(白菜),AL(羊) 动作:删除表:¬AL(船),¬AL(农夫) 添加表:AL(船),AL(农夫)R-L(羊) :农夫带着羊划船从右岸到左岸 条件:¬AL(船),¬AL(农夫),¬AL(羊) ,¬AL(狼),¬AL(羊),AL(白菜) 动作:删除表:¬AL(船),¬AL(农夫),¬AL(羊) 添加表:AL(船),AL(农夫),AL(羊)(3) 问题求解过程AL(白菜)¬AL(农夫)¬AL(船)¬AL(狼)¬AL(羊)AL(农夫)AL(船)AL(狼)AL(白菜)¬AL(羊)AL(狼)AL(白菜)¬AL(农夫)¬AL(船)¬AL(羊)AL(农夫)R-L R-L(羊) L-R(狼)L-R(羊)AL(船)AL(狼)AL(羊)AL(白菜)AL(农夫)AL(船)AL(羊)AL(白菜)¬AL(狼)AL(农夫)AL(船)AL(羊)¬AL(白菜)¬AL(狼)AL(羊)¬AL(农夫)¬AL(船)¬AL(白菜)¬AL(狼)L-R(羊)¬AL(农夫)¬AL(船)¬AL(羊)¬AL(白菜)¬AL(狼)R-L L-R(白菜)2.18 请对下列命题分别写出它们的语义网络:(1) 每个学生都有一台计算机。gGSgGSGS解:占有权计算机学生AKOISAISAFOwnsOwnercosg(2) 高老师从3月到7月给计算机系学生讲计算机网络课。 解:7月8月StartEnd老师ISAObjectSubject高老师计算机系学生讲课事件ActionCaurse计算机网络讲课(3) 学习班的学员有男、有女、有研究生、有本科生。 解:参例2.14(4) 创新公司在科海大街56号,刘洋是该公司的经理,他32岁、硕士学位。 解:参例2.10(5) 红队与蓝队进行足球比赛,最后以3:2的比分结束。 解:比赛AKOParticipants1Outcome3:22足球赛红队Participants 2蓝队2.19 请把下列命题用一个语义网络表示出来:(1) 树和草都是植物;植物解:AKOAKO草树(2) 树和草都有叶和根;根叶 解:HaveHave植物是一种是一种草树(3) 水草是草,且生长在水中; 解:LiveAKOAKO水草水中植物草(4) 果树是树,且会结果; 解:CanAKOAKO果树结果植物树(5) 梨树是果树中的一种,它会结梨。 解:CanAKOAKO梨树树果树结梨2.26 按“师生框架”、“教师框架”、“学生框架”的形式写出一个框架系统的描述。解:师生框架Frame <Teachers-Students> Name:Unit(Last-name,First-name) Sex:Area(male,female) Default:male Age:Unit(Years)Telephone:Home Unit(Number)Mobile Unit(Number)教师框架Frame <Teachers > AKO<Teachers-Students > Major:Unit(Major-Name) Lectures:Unit(Course-Name) Field:Unit(Field-Name) Project :Area(National,Provincial,Other) Default:Provincial Paper:Area(SCI,EI,Core,General) Default:Core 学生框架Frame <Students> AKO< Teachers-Students > Major:Unit(Major-Name) Classes:Unit(Classes-Name) Degree:Area(doctor,mastor, bachelor) Default:bachelor2.37把下列谓词公式化为子句集(1) ("x)("y)(P(x, y)Q(x, y)(2) ("x)("y)(P(x, y)Q(x, y)(3) ("x)($y)(P(x, y)(Q(x, y)R(x, y)(4) ("x) ("y) ($z)(P(x, y)Q(x, y)R(x, z)解:(1) 由于("x)("y)(P(x, y)Q(x, y)已经是Skolem标准型,且P(x, y)Q(x, y)已经是合取范式,所以可直接消去全称量词、合取词,得 P(x, y), Q(x, y)再进行变元换名得子句集:S= P(x, y), Q(u, v)(2) 对谓词公式("x)("y)(P(x, y)Q(x, y),先消去连接词“”得:("x)("y)(¬P(x, y)Q(x, y)此公式已为Skolem标准型。再消去全称量词得子句集:S=¬P(x, y)Q(x, y)(3) 对谓词公式("x)($y)(P(x, y)(Q(x, y)R(x, y),先消去连接词“”得:("x)($y)(P(x, y)(¬Q(x, y)R(x, y)此公式已为前束范式。再消去存在量词,即用Skolem函数f(x)替换y得:("x)(P(x, f(x)¬Q(x, f(x)R(x, f(x)此公式已为Skolem标准型。最后消去全称量词得子句集:S=P(x, f(x)¬Q(x, f(x)R(x, f(x)(4) 对谓词("x) ("y) ($z)(P(x, y)Q(x, y)R(x, z),先消去连接词“”得:("x) ("y) ($z)(¬P(x, y)Q(x, y)R(x, z)再消去存在量词,即用Skolem函数f(x)替换y得:("x) ("y) (¬P(x, y)Q(x, y)R(x, f(x,y)此公式已为Skolem标准型。最后消去全称量词得子句集:S=¬P(x, y)Q(x, y)R(x, f(x,y)2.41 设已知:(1) 如果x是y的父亲,y是z的父亲,则x是z的祖父;(2) 每个人都有一个父亲。使用归结演绎推理证明:对于某人u,一定存在一个人v,v是u的祖父。 解:先定义谓词 F(x,y):x是y的父亲 GF(x,z):x是z的祖父 P(x):x是一个人 再用谓词把问题描述出来: 已知F1:(x) (y) (z)( F(x,y)F(y,z)GF(x,z) F2:(y)(P(x)F(x,y) 求证结论G:(u) (v)( P(u)GF(v,u) 然后再将F1,F2和¬G化成子句集: ¬F(x,y)¬F(y,z)GF(x,z) ¬P(r)F(s,r) P(u) ¬GF(v,u) 对上述扩充的子句集,其归结推理过程如下:¬F(x,y)¬F(y,z)GF(x,z)¬GF(v,u)¬F(x,y)¬F(y,z)¬P(r)F(s,r)¬F(y,z)¬P(y)¬P(r)F(s,r)¬P(y)¬P(z)¬P(y)P(u)NIL由于导出了空子句,故结论得证。2.42假设张被盗,公安局派出5个人去调查。案情分析时,贞察员A说:“赵与钱中至少有一个人作案”,贞察员B说:“钱与孙中至少有一个人作案”,贞察员C说:“孙与李中至少有一个人作案”,贞察员D说:“赵与孙中至少有一个人与此案无关”,贞察员E说:“钱与李中至少有一个人与此案无关”。如果这5个侦察员的话都是可信的,使用归结演绎推理求出谁是盗窃犯。解:(1) 先定义谓词和常量设C(x)表示x作案,Z表示赵,Q表示钱,S表示孙,L表示李(2) 将已知事实用谓词公式表示出来赵与钱中至少有一个人作案:C(Z)C(Q)钱与孙中至少有一个人作案:C(Q)C(S)孙与李中至少有一个人作案:C(S)C(L)赵与孙中至少有一个人与此案无关:¬ (C (Z)C(S),即 ¬C (Z) ¬C(S)钱与李中至少有一个人与此案无关:¬ (C (Q)C(L),即 ¬C (Q) ¬C(L)(3) 将所要求的问题用谓词公式表示出来,并与其否定取析取。设作案者为u,则要求的结论是C(u)。将其与其否)取析取,得:¬ C(u) C(u)(4) 对上述扩充的子句集,按归结原理进行归结,其修改的证明树如下:C(Z)C(Q)¬C (Z) ¬C(S)C(Q)¬C(S)C(Q)C(S)C(Q)¬C(u)C(u)C(Q) 因此,钱是盗窃犯。实际上,本案的盗窃犯不止一人。根据归结原理还可以得出:C(S)C(L)¬C (Q) ¬C(L)C(S)¬C(Q)C(Q)C(S)C(S)¬C(u)C(u)C(S) 因此,孙也是盗窃犯。第三章3.7 圆盘问题。设有大小不等的三个圆盘A、B、C套在一根轴上,每个盘上都标有数字1、2、3、4,并且每个圆盘都可以独立的绕轴做逆时针转动,每次转动90°,其初始状态S0和目标状态Sg如图4-31所示,请用广度优先搜索和深度优先搜索,求出从S0到Sg的路径。CC12222222 BAAB42 234131231331414443 初始状态S0 目标状态Sg 图 327 圆盘问题解:设用qA,qB和qC分别表示把A盘,B盘和C盘绕轴逆时针转动90º,这些操作(算符)的排列顺序是qA,qB,qC。应用广度优先搜索,可得到如下搜索树。在该搜索树中,重复出现的状态不再划出,节点旁边的标识Si,i=0,1,2,,为按节点被扩展的顺序给出的该节点的状态标识。由该图可以看出,从初始状态S0到目标状态Sg的路径是S02513(Sg)3221113334444233132314122344323141212434233114242413ABCqAqBqC331311224244qA322441311324qBqC413412332334123331313124422412344123412313324112244qC334213112244qA314241231234qB132314242413qC3.7题的广度优先搜索树S0S1S2S4S5S6S7S8S9S10S11S12即SgS3其深度优先搜索略。3.8图4-32是5个城市的交通图,城市之间的连线旁边的数字是城市之间路程的费用。要求从A城出发,经过其它各城市一次且仅一次,最后回到A城,请找出一条最优线路。 A 10 B 2 8 9 C 11 6 3 12 8 D 9 E3-28 交通费用图解:这个问题又称为旅行商问题(travelling salesman problem, TSP)或货郎担问题,是一个较有普遍性的实际应用问题。根据数学理论,对n个城市的旅行商问题,其封闭路径的排列总数为: (n!)/n=(n-1)!其计算量相当大。例如,当n=20时,要穷举其所有路径,即使用一个每秒一亿次的计算机来算也需要350年的时间。因此,对这类问题只能用搜索的方法来解决。下图是对图4-32按最小代价搜索所得到的搜索树,树中的节点为城市名称,节点边上的数字为该节点的代价g。其计算公式为 g(ni+1)=g(ni)+c(ni, ni+1)其中,c(ni,ni+1)为节点ni到ni+1节点的边代价。可以看出,其最短路经是 A-C-D-E-B-A或 A-B-E-D-C-A其实,它们是同一条路经。3.11设有如下结构的移动将牌游戏:BBWWE其中,B表示黑色将牌,W表是白色将牌,E表示空格。游戏的规定走法是:(1) 任意一个将牌可移入相邻的空格,规定其代价为1;(2) 任何一个将牌可相隔1个其它的将牌跳入空格,其代价为跳过将牌的数目加1。游戏要达到的目标什是把所有W都移到B的左边。对这个问题,请定义一个启发函数h(n),并给出用这个启发函数产生的搜索树。你能否判别这个启发函数是否满足下解要求?再求出的搜索树中,对所有节点是否满足单调限制?解:设h(x)=每个W左边的B的个数,f(x)=d(x)+3*h(x),其搜索树如下:3.14设有如图4-34的与/或/树,请分别按和代价法及最大代价法求解树的代价。ABCDt2t3t4t1图3.30 习题4.14的与/或树56217223E解:若按和代价法,则该解树的代价为: h(A)=2+3+2+5+2+1+6=21若按最大代价法,则该解树的代价为: h(A)=maxh(B)+5, h(C)+6 = max(h(E)+2)+5, h(C)+6 = max(max(2, 3)+2)+5, max(2, 1)+6=max(5+5, 2+6)=103.15设有如图4-35所示的博弈树,其中最下面的数字是假设的估值,请对该博弈树作如下工作:(1) 计算各节点的倒推值;(2) 利用-剪枝技术剪去不必要的分枝。图3.31 习题3.15的博弈树305-336-2354-3068-3369S0ABCDEFGHIJKLNM 解:各节点的倒推值和剪枝情况如下图所示:习题3.15的倒推值和剪枝情况305-336-2354-3068-336000-39334444-366S0ABCDEFGHIJKMNL