第三章课后习题4、AO*算法中,第7步从S中选一个节点,要求其子孙不在S中出现,讨论应如何实现对S的控制使得能有效地选出这个节点。如下图所示,若E的耗散值发生变化时,所提出的对S的处理方法应能正确工作。错误!未找到引用源。5、如何修改AO*算法使之能处理出现回路的情况。如下图所示,若节点C的耗散值发生变化时,所修改的算法能正确处理这种情况。错误!未找到引用源。6、对3×3的一字棋,设用+1和-1分别表示两选手棋子的标记,用0表示空格,试给出一字棋产生式系统的描述。错误!未找到引用源。7、写一个α-β搜索的算法。错误!未找到引用源。8、用一个9维向量C来表示一字棋棋盘的格局,其分量根据相应格内的×,空或○的标记分别用+1,0,或-1来表示。试规定另一个9维向量W,使得点积C·W可作为MAX选手(棋子标记为×)估计非终端位置的一个有效的评价函数。用这个评价函数来完成几步极小-极大搜索,并分析该评价函数的效果。第四章课后习题13、一个积木世界的状态由下列公式集描述:ONTABLE(A)CLEAR(E)ONTABLE(C)CLEAR(D)ON(D,C)HEAVY(D)ON(B,A)WOODEN(B)HEAVY(B)ON(E,B)绘出这些公式所描述的状态的草图。下列语句提供了有关这个积木世界的一般知识:每个大的蓝色积木块是在一个绿色积木块上。每个重的木制积木块是大的。所有顶上没有东西的积木块都是蓝色的。所有木制积木块是蓝色的。以具有单文字后项的蕴涵式的集合表示这些语句。绘出能求解哪个积木块是在绿积木块上这个问题的一致解图(用B规则)。第五章课后习题1.将下面的公式化成子句集~(((P∨~Q)→R)→(P∧R))2.命题是数理逻辑中常用的公式,试使用归结法证明它们的正确性:a)P→(Q→P)b)(P→(Q→R))→((P→Q)→(P→R))c)(Q→~P)→((Q→P)→~Q)3.下列子句是否可以合一,如果可以,写出最一般合一置换a)P(x,B,B)和P(A,y,z)b)P(g(f(v)),g(u))和P(x,x)c)P(x,f(x))和P(y,y)d)P(y,y,B)和P(z,x,z)4.解释P(f(x,x),A)和P(f(y,f(y,A)),A)为什么不能合一5.将下列公式化为skolem子句形a)((x)P(x)∨(x)Q(x))→(x)(P(x)∨Q(x))b)(x)(P(x)→(y)((z)Q(x,y)→~(z)R(y,x)))c)(x)P(x)→(x)(((z)Q(x,z))∨(z)R(x,y,z))6.用归结法证明:存在一个绿色物体,如果有如下条件存在:a)如果可以推动的物体是蓝色的,那么不可以推动的物体是绿色的b)所有的物体或者是蓝色的,或者是绿色的,但不能同时具有两种颜色。c)如果存在一个不能推动的物体,那么所有的可推动的物体是蓝色的。d)物体O1是可以推动的e)物体O2是不可以推动的7.设S={P(x),Q(f(x),y)},试写出H域上的元素,并写出S的一个基例。答案部分第一章课后习题答案说明:由于人工智能的很多题目都很灵活,以下解答仅供参考。1、对N=5、k≤3时,求解传教士和野人问题的产生式系统各组成部分进行描述(给出综合数据库、规则集合的形式化描述,给出初始状态和目标条件的描述),并画出状态空间图。答:1,综合数据库定义三元组:(m,c,b)其中:,表示传教士在河左岸的人数。,表示野人在河左岸的认输。,b=1,表示船在左岸,b=0,表示船在右岸。2,规则集规则集可以用两种方式表示,两种方法均可。第一种方法:按每次渡河的人数分别写出每一个规则,共(30)、(03)、(21)、(11)、(10)、(01)、(20)、(02)八种渡河的可能(其中(xy)表示x个传教士和y个野人上船渡河),因此共有16个规则(从左岸到右岸、右岸到左岸各八个)。注意:这里没有(12),因为该组合在船上的传教士人数少于野人人数。规则集如下:r1:IF(m,c,1)THEN(m-3,c,0)r2:IF(m,c,1)THEN(m,c-3,0)r3:IF(m,c,1)THEN(m-2,c-1,0)r4:IF(m,c,1)THEN(m-1,c-1,0)r5:IF(m,c,1)THEN(m-1,c,0)r6:IF(m,c,1)THEN(m,c-1,0)r7:IF(m,c,1)THEN(m-2,c,0)r8:IF(m,c,1)THEN(m,c-2,0)r9:IF(m,c,0)THEN(m+3,c,1)r10:IF(m,c,0)THEN(m,c+3,1)r11:IF(m,c,0)THEN(m+2,c+1,1)r12:IF(m,c,0)THEN(m+1,c+1,1)r13:IF(m,c,0)THEN(m+1,c,1)r14:IF(m,c,0)THEN(m,c+1,1)r15:IF(m,c,0)THEN(m+2,c,1)r16:IF(m,c,0)THEN(m,c+2,1)第二种方法:将规则集综合在一起,简化表示。规则集如下:r1:IF(m,c,1)and0i+j〈=3and(i=jori=0)THEN(m-i,c-j,0)r2:IF(m,c,0)and0i+j〈=3and(i=jori=0)THEN(m+i,c+j,1)3,初始状态:(5,5,1)4,结束状态:(0,0,0)2、对量水问题给出产生式系统描述,并画出状态空间图。有两个无刻度标志的水壶,分别可装5升和2升的水。设另有一水缸,可用来向水壶灌水或倒出水,两个水壶之间,水也可以相互倾灌。已知5升壶为满壶,2升壶为空壶,问如何通过倒水或灌水操作,使能在2升的壶中量出一升的水来。答:1,综合数据库定义两元组:(L5,L2)其中:0=L5=5,表示容量为5升的壶的当前水量。0=L2=2,表示容量为2升的壶的当前水量。2,规则集r1:IF(L5,L2)THEN(5,L2)/*将L5灌满水*/r2:IF(L5,L2)THEN(L5,2)/*将L2灌满水*/r3:IF(L5,L2)THEN(0,L2)/*将L5水到光*/r4:IF(L5,L2)THEN(L5,0)/*将L2水到光*/r5:IF(L5,L2)andL5+L2=5THEN(L5+L2,0)/*L2到入L5中*/r6:IF(L5,L2)andL5+L25THEN(5,L5+L2-5)/*L2到入L5中*/r7:IF(L5,L2)andL5+L2=2THEN(0,L5+L2)/*L5到入L2中*/r8:IF(L5,L2)andL5+L25THEN(L5+L2-2,2)/*L5到入L2中*/3,初始状态:(5,0)4,结束条件:(x,1),其中x表示不定。当然结束条件也可以写成:(0,1)3、对梵塔问题给出产生式系统描述,并讨论N为任意时状态空间的规模。相传古代某处一庙宇中,有三根立柱,柱子上可套放直径不等的N个圆盘,开始时所有圆盘都放在第一根柱子上,且小盘处在大盘之上,即从下向上直径是递减的。和尚们的任务是把所有圆盘一次一个地搬到另一个柱子上去(不许暂搁地上等),且小盘只许在大盘之上。问和尚们如何搬法最后能完成将所有的盘子都移到第三根柱子上(其余两根柱子,有一根可作过渡盘子使用)。求N=2时,求解该问题的产生式系统描述,给出其状态空间图。讨论N为任意时,状态空间的规模。答:1,综合数据库定义三元组:(A,B,C)其中A,B,C分别表示三根立柱,均为表,表的元素为1~N之间的整数,表示N个不同大小的盘子,数值小的数表示小盘子,数值大的数表示大盘子。表的第一个元素表示立柱最上面的柱子,其余类推。2,规则集为了方便表示规则集,引入以下几个函数:first(L):取表的第一个元素,对于空表,first得到一个很大的大于N的数值。tail(L):取表除了第一个元素以外,其余元素组成的表。cons(x,L):将x加入到表L的最前面。规则集:r1:IF(A,B,C)and(first(A)first(B))THEN(tail(A),cons(first(A),B),C)r2:IF(A,B,C)and(first(A)first(C))THEN(tail(A),B,cons(first(A),C))r3:IF(A,B,C)and(first(B)first(C))THEN(A,tail(B),cons(first(B),C))r4:IF(A,B,C)and(first(B)first(A))THEN(cons(first(B),A),tail(B),C)r5:IF(A,B,C)and(first(C)first(A))THEN(cons(first(C),A),B,tail(C))r6:IF(A,B,C)and(first(C)first(B))THEN(A,cons(first(C),B),tail(C))3,初始状态:((1,2,...,N),(),())4,结束状态:((),(),(1,2,...,N))问题的状态规模:每一个盘子都有三中选择:在A上、或者在B上、或者在C上,共N个盘子,所以共有种可能。即问题的状态规模为。4、对猴子摘香蕉问题,给出产生式系统描述。一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为a,箱子位置为b,香蕉位置为c),如何行动可摘取到香蕉。答:1,综合数据库定义5元组:(M,B,Box,On,H)其中:M:猴子的位置B:香蕉的位置Box:箱子的位置On=0:猴子在地板上On=1:猴子在箱子上H=0:猴子没有抓到香蕉H=1:猴子抓到了香蕉2,规则集r1:IF(x,y,z,0,0)THEN(w,y,z,0,0)猴子从x处走到w处r2:IF(x,y,x,0,0)THEN(z,y,z,0,0)如果猴子和箱子在一起,猴子将箱子推到z处r3:IF(x,y,x,0,0)THEN(x,y,x,1,0)如果猴子和箱子在一起,猴子爬到箱子上r4:IF(x,y,x,1,0)THEN(x,y,x,0,0)如果猴子在箱子上,猴子从箱子上下来r5:IF(x,x,x,1,0)THEN(x,x,x,1,1)如果箱子在香蕉处,猴子在箱子上,猴子摘到香蕉其中x,y,z,w为变量3,初始状态(c,a,b,0,0)4,结束状态(x1,x2,x3,x4,1)其中x1~x4为变量。5、对三枚钱币问题给出产生式系统描述及状态空间图。设有三枚钱币,其排列处在正、正、反状态,现允许每次可翻动其中任意一个钱币,问只许操作三次的情况下,如何翻动钱币使其变成正、正、正或反、反、反状态。答:1,综合数据库定义四元组:(x,y,z,n)其中x,y,x∈[0,1],1表示钱币为正面,0表示钱币为方面。n=0,1,2,3,表示当前状态是经过n次翻钱币得到的。2,规则库r1:IF(x,y,z,n)THEN(~x,y,z,n+1)r2:IF(x,y,z,n)THEN(x,~y,z,n+1)r3:IF(x,y,z,n)THEN(x,y,~z,n+1)其中~x表示对x取反。3,初始状态(1,1,0,0)4,结束状态(1,1,1,3)或者(0,0,0,3)6、说明怎样才能用一个产生式系统把十进制数转换为二进制数,并通过转换141.125这个数为二进制数,阐明其运行过程。提示:将十进制数分为整数部分和小数部分两部分。用四元组(a,b,c,d)表示综合数据库,其中a,b表示到目前为止还没有转换的十进制数的整数部分和小数部分,c,d表示已经转换得到的二进制数的整数部分和小数部分。然后根据十进制数转换二进制数的原理,分别定义整数的转换规则和小数的转换规则,一次规则的执行,转换得到二进制数的一位。7、设可交换产生式系统的一条规则R可应用于综合数据库D来生成出D',试证明若R存在逆,则可应用于D'的规则集等同于可应用于D的规则集。答:设规则R的逆用R'表示。由题意有R应用于D后,得到数据库D',由可交换系统的性质,有:ru