2008级_高级人工智能_试卷答案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《高级人工智能》试卷答案(2008级) 简答题: 初始状态S0=(0,1,2,1,3,0),首先定义两个操作:分别把箱子A,箱子B推到目标状态。 首先机器人向左推3格得到状态S1=(0,1,2,1,0,0),机器人推箱子向上走两格得到状态S2=(0,3,2,1,0,2) 第二步,机器人返回去推箱子B,得状态S3=(0,3,2,1,3,1),机器人推箱子B向左走一格得状态S4=(0,3,1,1,2,1),机器人再向下走一格,再向左走格得状态S5=(0,3,1,3,3,0) 最后机器人推着箱子B向上走两眇到达目标状态S6=(0,3,1,3,3,0) FOIL算法 生成训练子集合T(包括正例和负例),如果T包含正例,则继续,否则结束; 用目标谓词初始化1个新子句头P(V1,V2…..,Vk); 生成一个新的训练集合T1,T1-T; 如果T1中包含负例,则在背景知识中找到一个约束L,添加在子句P的右边,否则车到7) 生成新的空的训练集合T2,如果T1中的每个元素ti和基于约束L的每一个绑定(扩展)bi都满足L,则将bi加入到ti中,将ti加入到T2中。 T1-T2,转到4); 结束。 从结点S0开始搜索,S0不是目标结点G,则扩展S0,由f(n)=V(n)/10+D(n)得如下两式: f(S1)=3/10+1 f(S2)=7/10+1 由于S1、S2不是目标结点G,则从S1、S2中选取代价最小的进行扩展,对S1进行扩展得如下两式: f(S3)=5/10+2 f(S4)=10/10+2 由于S3、S4不是目标结点G,则从S3、S4、S2中选取代价最小的进行扩展,对S2进行扩展得如下两式: f(G)=14/10+2 f(S5)=13/10+2 找到所求结点G,搜索停止。 4. 9个方格的一字棋博弈问题算法 具体实现(C++实现) #includestdio.h #includestring.h #includeiostream.h const int maxwin=32767; const int minwin=-32767; const int MAX=3; int pai; struct node { int value; int father; char pf[MAX][MAX]; int floor; int son; }; class chess { private: int dep; int p,q,ppp; node queue[10000]; int sign[10000]; public: void init(); void print(char temp[3][3]); int equal(char a[MAX][MAX],char b[MAX][MAX]); int GetAllMoves(node f,int p,int bit); int che(char f[MAX][MAX],int x,char ch); int check(char f[MAX][MAX]); int fun(char f[MAX][MAX]); int maxnum(int a,int b); int minnum(int a,int b); int max(int depth,node f,int vf_min); int min(int depth,node f,int vf_max); int work(char sump[3][3],int x,int y); }; void chess::print(char temp[3][3]) { int i,j; printf(state is:\n); printf(+-+-+-+\n); for (i=0;iMAX;i++) { for (j=0;jMAX;j++) { if(temp[i][j]==c)printf(| ); else printf(|%c,temp[i][j]); } printf(|\n+-+-+-+\n); } //printf(Its value is %d,its floor is %d\n,f.value,f.floor); return; } //打印结点的状态 int chess::che(char f[MAX][MAX],int x,char ch) { if (x==0) if (f[0][0]==ch f[0][1]==ch f[0][2]==ch) return 1; if (x==1) if (f[1][0]==ch f[1][1]==ch f[1][2]==ch) re

文档评论(0)

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

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

1亿VIP精品文档

相关文档