人工智能实验报告毕业设计(论文)].docVIP

人工智能实验报告毕业设计(论文)].doc

  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文档。上传文档
查看更多
人工智能实验报告毕业设计(论文)]

人工智能实验报告 姓 名: 学 号: 所学专业: 报告题目: 提交日期: 八数码演示程序 问题描述 1.1八数码问题的解释 八数码问题是人工智能经典难题之一。问题是在3×3 方格盘上,放有八个数码,剩下一个为空,每一空格其上下左右的数码可移至空格。问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始位置转化为目标位置。本文介绍用A星算法,采用估计值h(n)(曼哈顿距离)和g(m)(当前深度)的和作为估计函数。 1.2八数码问题的搜索形式描述 初始状态:初始状态向量,规定向量中各分量对应的位置,各位置上的初始数字0,1,3,4,5,6,7,8,2 后继函数:移动规则,按照某条规则移动数字得到的新向量 0,1,3,4,5,6,7,8,9转移到4,1,3,0,5,6,7,8,2 目标测试:新向量是否是目标状态,也即为0,1,2,3,4,5,6,7,8 路径耗散函数:在搜索时,每深入一层则当前步数代价加1,代价总和由当前步数和可能还需要移动的步数之和。 1.3 解决方案介绍 首先,A*算法需要个估价(评价)函数: f(x)=g(x)+h(x) g(x)通常表示移动至当前状态需要的步数,h(x)则是启发函数。在算法进行的时候,我们将对每一个可能移动到的状态做评价,计算其f(x),然后将其放入一个OPEN数组中,最后我们选取OPEN中f(x)值最小的状态作为下一步,再重复上 述过程,因为f(x)值最小的状态意味着它最有可能(不是一定)最接近最终状态 算法介绍 2.1 搜索算法一般介绍 A*算法是一种启发式搜索算法,是常用的最短路搜寻算法,在游戏领域中有广泛的应用。所谓启发式算法,它与常规的搜索方法最大的不同是在执行过程中始终有一个提示性的信息在引导着算法的进行,使得我们不断靠近目标而不是盲目的遍历,这个提示信息就是由启发函数产生的,启发函数的好坏将直接影响算法的效率,从几篇文献看来,A*算法和广度优先、深度优先算法相比是有很明显的效率优势的。OPEN、CLOSE、初始状态最终状态 Push(source, OPEN); While(!OPEN.isEmpty()){ FindFirstElementOfOpen(); cuNode=Pop(OPEN); If isTheSame(cuNode,dest) Then exit; Push(cuNode,close) Extend(cuNode); } ExtendNewNode(NewNode){ If CLOSE.NOTcontains(NewNode) Then If OPEN.NOTcontains(NewNode) Push(NewNode,OPEN); Else If OPEN.get(NewNode).fNewNode.f Then Push(NewNode,OPEN); } 算法实现 3.1 实验环境与问题规模 本文采用java语言进行程序设计,在图形界面上可以显示八数码格局,并可以随机生成新的起始状态和目标状态。问题规模为8,解决八数码问题,但可以比较容易就能修改为对15数码问题的求解。 3.2 数据结构 1.类Node,表示一个结点,也即搜索过程中的某一个状态,其内部数据成员有ID(可以唯一地表示一个状态结点),parentID(该状态结点的母结点,保存这个值是为了在找到目标结点时可以回溯其路径),a[][](一个二维数组,用于存放当前八数码的状态),g(表示从起始状态结点开始到当前状态结点所走过的步数),h(表示从当前状态结点到目标状态结点有可能还要走多少步数),f(就是g值与h值的和)。 2.OPEN表,实现的时候使用的是,用途是存放产生的可能的新状态 3.CLOSE表,实现的时候使用的是,存放=Node结点键值对, 用途是记录已经访问过的状态。起始状态 2 1 0 7 8 5 4 3 6 终结状态 0 1 2 3 4 5 6 7 8 2.有解时的情形: 起始状态: 自动演示时的移动过程截图: 最后达到目标状态: 参考文献 人工智能游戏编程真言 (美) Steve Rabin主编 Java项目开发实践 陆正武, 张志立编著 Java SE 6.0编程指南 吴亚峰, 纪超编著 数据结构经典算法实现与习题解答 汪杰等编著 Swing Hacks:100个业界最尖端的技巧和工具 Joshua Marinacci, Chris Adamson著 Java综合实例经典 吴其庆编著 附录—源代码及其注释(算法部分,不包括界面设计的代码): package MyAI; import java.util.HashMap; import java.util.Iterator; import java.util.Map; imp

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档