人工智能实验报告-八数码演示程序

人工智能实验报告-八数码演示程序

ID:338140

大小:327.50 KB

页数:12页

时间:2017-07-25

人工智能实验报告-八数码演示程序_第1页
人工智能实验报告-八数码演示程序_第2页
人工智能实验报告-八数码演示程序_第3页
人工智能实验报告-八数码演示程序_第4页
人工智能实验报告-八数码演示程序_第5页
资源描述:

《人工智能实验报告-八数码演示程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、人工智能实验报告-八数码演示程序人工智能实验报告八数码演示程序姓名:处添加内容学号:计算机科学与技术专业所学专业:八数码演示程序报告题目:2010年4月9日提交日期:人工智能实验报告-八数码演示程序八数码演示程序1.问题描述1.1八数码问题的解释八数码问题是人工智能经典难题之一。问题是在3×3方格盘上,放有八个数码,剩下一个为空,每一空格其上下左右的数码可移至空格。问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始位置转化为目标位置。本文介绍用A星算法,采用估计值h(n)(曼哈顿距离)和g(m)(当前深

2、度)的和作为估计函数。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*算法需要个估价(评价

3、)函数:f(x)=g(x)+h(x)人工智能实验报告-八数码演示程序g(x)通常表示移动至当前状态需要的步数,h(x)则是启发函数。在算法进行的时候,我们将对每一个可能移动到的状态做评价,计算其f(x),然后将其放入一个OPEN数组中,最后我们选取OPEN中f(x)值最小的状态作为下一步,再重复上述过程,因为f(x)值最小的状态意味着它最有可能(不是一定)最接近最终状态。1.算法介绍2.1搜索算法一般介绍A*算法是一种启发式搜索算法,是常用的最短路搜寻算法,在游戏领域中有广泛的应用。所谓启发式算法,它与常规的搜索

4、方法最大的不同是在执行过程中始终有一个提示性的信息在引导着算法的进行,使得我们不断靠近目标而不是盲目的遍历,这个提示信息就是由启发函数产生的,启发函数的好坏将直接影响算法的效率,从几篇文献看来,A*算法和广度优先、深度优先算法相比是有很明显的效率优势的。2.2算法伪代码InitializeOPEN、CLOSE、初始状态source,最终状态dest;Push(source,OPEN);While(!OPEN.isEmpty()){FindFirstElementOfOpen();cuNode=Pop(OPEN);

5、IfisTheSame(cuNode,dest)Thenexit;Push(cuNode,close)Extend(cuNode);}ExtendNewNode(NewNode){IfCLOSE.NOTcontains(NewNode)ThenIfOPEN.NOTcontains(NewNode)Push(NewNode,OPEN);ElseIfOPEN.get(NewNode).f>NewNode.fThenPush(NewNode,OPEN);}2.算法实现3.1实验环境与问题规模本文采用java语言进行程序

6、设计,在图形界面上可以显示八数码格局,并可以随机生成新的起始状态和目标状态。问题规模为8,解决八数码问题,但可以比较容易就能修改为对15数码问题的求解。人工智能实验报告-八数码演示程序3.2数据结构1.类Node,表示一个结点,也即搜索过程中的某一个状态,其内部数据成员有ID(可以唯一地表示一个状态结点),parentID(该状态结点的母结点,保存这个值是为了在找到目标结点时可以回溯其路径),a[][](一个二维数组,用于存放当前八数码的状态),g(表示从起始状态结点开始到当前状态结点所走过的步数),h(表示从当

7、前状态结点到目标状态结点有可能还要走多少步数),f(就是g值与h值的和)。2.OPEN表,实现的时候使用的是HashMap,以保证所存的每一个状态的唯一性;Open表的用途是存放产生的可能的新状态,这些新状态有待于扩展。3.CLOSE表,实现的时候使用的是HashMap,以保证所存的每一个状态的唯一性;存放ID=>Node结点键值对,用途是记录已经访问过的状态。3.3实验结果起始状态210785436终结状态012345678目标可达,总执行步数为21步,搜索算法所耗时间为31毫秒3.4系统中间及最终输出结果(要

8、求有屏幕显示)1.无解时的情形:人工智能实验报告-八数码演示程序2.有解时的情形:起始状态:自动演示时的移动过程截图:最后达到目标状态:人工智能实验报告-八数码演示程序参考文献人工智能游戏编程真言(美)SteveRabin主编Java项目开发实践陆正武,张志立编著JavaSE6.0编程指南吴亚峰,纪超编著数据结构经典算法实现与习题解答汪杰等编著SwingHacks:100

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。