采用A星算法实现八数码问题.docx

采用A星算法实现八数码问题.docx

ID:53109854

大小:58.02 KB

页数:27页

时间:2020-04-01

采用A星算法实现八数码问题.docx_第1页
采用A星算法实现八数码问题.docx_第2页
采用A星算法实现八数码问题.docx_第3页
采用A星算法实现八数码问题.docx_第4页
采用A星算法实现八数码问题.docx_第5页
资源描述:

《采用A星算法实现八数码问题.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告人工智能实验一报告题目:采用A*算法解决八数码问题成员:李文、郭弯弯学号:、┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告专业:计算机科学与技术完成日期:2016/04/09┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告一、实验要求、目的及分工1.1实验要求使用A*算法实现八数码问题,并用图形界面展示。1.2实验目的a.熟悉人工智能系统中的问题求解过程;b.熟悉状态空间的盲目搜索和启发式搜索算法的应用

2、;c.熟悉对八数码问题的建模、求解及编程语言的应用。1.3实验分工我们小组共两个人,共同查找背景资料,李文同学主要负责源代码,郭弯弯同学主要负责实验报告以及演示文稿的完成。二、实验问题2.1问题描述所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8的八块正方形数码牌任意地放在一块3×3的数码盘上。放牌时要求不能重叠。于是,在3×3的数码盘上出现了一个空格。现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标状态。空格方块在中间位置时有上、下、左、右4个方向可移动,在四个角落上有2个方

3、向可移动,在其他位置上有3个方向可移动,问题描述如下图所示:第25页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告150478326832451670(a)初始状态(b)目标状态图1八数码问题示意图2.2问题解释首先,八数码问题包括一个初始状态(START)和目标状态(TRAGET),所谓解决八数码问题就是在两个状态间寻找一系列可过渡状态:(START>STATE1>STATE2>...>TARGET)这个状态是否存在就是我们要解决的第一个问题;第二个问题是我们要求出走的路径是什么。2.3八数码问题形式化描述初始状态:初

4、始状态向量:规定向量中各分量对应的位置,各位置上的数字。把3×3的棋盘写成一个二维向量。我们可以设定初始状态:<1,5,2,4,0,3,6,7,8>后继函数:第25页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告按照某种规则移动数字得到的新向量。例如:<1,5,2,4,0,3,6,7,8>®<1,0,2,4,5,3,6,7,8>路径耗散函数:规定每次移动代价为1,即每执行一条规则后总代价加1。2.4解决方案选择该问题是一个搜索问题。它是一种状态到另一种状态的变换。要解决这个问题,必须先把问题转化为数字描述。由于八数码是一个3

5、*3的矩阵,但在算法中不是用矩阵,而是将这个矩阵转化为一个二维数组,使用这个二维数组来表示八数码,但是移动时要遵守相关规则。按规则,每一次可以将一个与空格相邻的棋子移动到空格中,实际上也可以看做空格的相反方向移动。空格的移动方向可以是上下左右,当然不能出边界。棋子的位置,也就是保存状态的数组元素的下标,空格移动后,相应位置发生变化。经分析,问题的求解实际上就是在这个图中找到一条路径可以从开始到结果。这个寻找的过程就是状态空间搜索。常用的状态空间搜索有深度优先和广度优先。广度优先是从初始状态一层一层向下找,直到找到目标为止。深度优先是按照一定的顺序前查找完一个分支,

6、再查找另一个分支,以至找到目标为止。启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提高了效率。所以,本实验采用启发式A*搜索算法来实现。一、A*算法3.1算法介绍A*算法是一种常用的启发式搜索算法。第25页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊实验报告在A*算法中,一个结点位置的好坏用估价函数来对它进行评估。A*算法的估价函数可表示为:f'(n)=g'(n)+h'(n)这里,f'(n)是估价函数,g'(n)是起点到终点的最短路径值(也

7、称为最小耗费或最小代价),h'(n)是n到目标的最短路经的启发值。由于这个f'(n)其实是无法预先知道的,所以实际上使用的是下面的估价函数:f(n)=g(n)+h(n)其中g(n)是从初始结点到节点n的实际代价,h(n)是从结点n到目标结点的最佳路径的估计代价。在这里主要是h(n)体现了搜索的启发信息,因为g(n)是已知的。用f(n)作为f'(n)的近似,也就是用g(n)代替g'(n),h(n)代替h'(n)。这样必须满足两个条件:(1)g(n)>=g'(n)(大多数情况下都是满足的,可以不用考虑),且f必须保持单调递增。(2)h必须小于等于实际的从当前节点到达目

8、标节点的最

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

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

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