人工智能导论实验报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能导论实验报告 学号:1130310225 姓名:薛正 TOC \o 1-5 \h \z \o Current Document \h 人工智能导论实验报告 1 学号:1130310225 1 姓名:薛正 1 黑白块问题 3 \o Current Document \h 一般合一算法 7 \o Current Document \h Nim博弈 10 黑白块问题nn 黑白块问题 nn ?问题描述: 七个格子水平排列,共有三个黑色格子,三个白色格子与一个空 格。格子之间的移动只能通过空格完成,与空格相邻的格子可以与空 格交换位置,代价为1;与空格相隔一个距离(格子)的格可以与空 格交换,代价为2;与空格相隔两个距离(格子)的格可以与空格交 换,代价为2. 现在七格的状态为:黑色三格占据1,2,3位置,白色三格占据4,5,6 位置,空格在7. ?实验耍求: 采用a*算法,设计最小代价使得黑色格子全部移动到白色格子的 右边。输出最短路径。 3?解决策略: a*算法的核心是设计每一个节点的估值算法,即估计出该节点与 目标节点的代价,设节点为n,则代价为f(n),要求f(n)总是不大于 实际的代价。 我设计的f(n): 以现在节点的黑色格子右边白色格子的总和作为估值,即在开 始状态下,黑色格子处于123,对于每个黑色格子来说,右边都 有3个白色格子,3+3+3=9,估计值为9o下面证明f(n)=实际值: 设黑色格子从左到右依次为a,b,c,设黑色格子右边的白色格子数 为g(n)。则黑色格了右边口色格了数为g(a),g⑹,g(c) 此时略去空格,七格变为7、?格,并且假设,黑白可以直接互换,代价 为下标差,此时,成功状态为黑色格子占据4,5,6,此时a所在的位 置为 6-(g(a)+2)=4-g(c),b 的位置为 6-(g(b)+l)=5-g(c),c 的位置为 6-g(c), 此时,到成功状态的最小代价为(4+5+6)?(4-g(a)+5?g(b)+4?g(c))= g(a)+g(b)+g(c) 而对于七格来说,格子间的移动需要空格辅助,并且多了空格一个, 代价必然大于g(a)+g(b)+g(c) 4 ?代码清单(python): class Node(object): def_init_(self,a = 0,b = l,c = 2,space = 6,value = 0,parent 二 None): self.a = a self.b = b seltc = c self.space = space self.value = value self.parent = parent def guess_value(self): tempi = 4 - self.a-(self.spaceself.a) temp2 = 5 - self.b-(self.spaceself.b) temp3 = 6 - self.c-(self.spaceself.c) return temp 1 + temp2 + temp3 def is_equal(self,other): return (self.a,self.b5self.c,self.space) == (other.a,other.b,othe匚c,othe匚space) def calc_value(self): return self value + self.guess_value() def is_success(self): return self.guess_value() == 0 def jump _left(self,v): if self.space - v=0: if self.space - v in [self.a,self.b,selfc]: if self.space - v == self.a: temp Node(a=self.space,b=self.b,c=self.c,space=self.space-v,value=self.value+v,parent=self) elif self.space - v == self b: temp Node(a=self.a,b=self.space,c=self.c5space=self.space-v,value=self.value+v,parent=self) else: temp Node(a=self.a,b=self.b,c=self.space,space=self.space-v,value=self.value+v,parent=self) else: temp Node(a=self.a,b=self.b,c=self.c,space=self.space-v,va

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档