八数码问题c语言a星算法详细实验报告含代码解析

八数码问题c语言a星算法详细实验报告含代码解析

ID:13593072

大小:174.56 KB

页数:13页

时间:2018-07-23

八数码问题c语言a星算法详细实验报告含代码解析_第1页
八数码问题c语言a星算法详细实验报告含代码解析_第2页
八数码问题c语言a星算法详细实验报告含代码解析_第3页
八数码问题c语言a星算法详细实验报告含代码解析_第4页
八数码问题c语言a星算法详细实验报告含代码解析_第5页
资源描述:

《八数码问题c语言a星算法详细实验报告含代码解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、实验内容和要求八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。例如:28312316484705765(a)初始状态(b)目标状态图1八数码问题示意图请任选一种盲目搜索算法(广度优先搜索或深度优先搜索)或任选一种启发式搜索方法(全局择优搜索,加权状态图搜索,A算法或A*算法)编程求解八数码问题(初始状态任选)。选择一个初始状态,画出搜索树,填写相应的OPEN表和CLOSE

2、D表,给出解路径,对实验结果进行分析总结,得出结论。二、实验目的1.熟悉人工智能系统中的问题求解过程;2.熟悉状态空间的盲目搜索和启发式搜索算法的应用;3.熟悉对八数码问题的建模、求解及编程语言的应用。三、实验算法A*算法是一种常用的启发式搜索算法。在A*算法中,一个结点位置的好坏用估价函数来对它进行评估。A*算法的估价函数可表示为:f'(n)=g'(n)+h'(n)这里,f'(n)是估价函数,g'(n)是起点到终点的最短路径值(也称为最小耗费或最小代价),h'(n)是n到目标的最短路经的启发值。由于这个f'(n)

3、其实是无法预先知道的,所以实际上使用的是下面的估价函数: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必须小于等于实际的从当前节点到达目标节点的最小耗费h(n)<=h'(

4、n)。第二点特别的重要。可以证明应用这样的估价函数是可以找到最短路径的。3.A*算法的步骤A*算法基本上与广度优先算法相同,但是在扩展出一个结点后,要计算它的估价函数,并根据估价函数对待扩展的结点排序,从而保证每次扩展的结点都是估价函数最小的结点。A*算法的步骤如下:1)建立一个队列,计算初始结点的估价函数f,并将初始结点入队,设置队列头和尾指针。2)取出队列头(队列头指针所指)的结点,如果该结点是目标结点,则输出路径,程序结束。否则对结点进行扩展。3)检查扩展出的新结点是否与队列中的结点重复,若与不能再扩展的结点

5、重复(位于队列头指针之前),则将它抛弃;若新结点与待扩展的结点重复(位于队列头指针之后),则比较两个结点的估价函数中g的大小,保留较小g值的结点。跳至第五步。4)如果扩展出的新结点与队列中的结点不重复,则按照它的估价函数f大小将它插入队列中的头结点后待扩展结点的适当位置,使它们按从小到大的顺序排列,最后更新队列尾指针。5)如果队列头的结点还可以扩展,直接返回第二步。否则将队列头指针指向下一结点,再返回第二步。四、程序框图五、实验结果及分析输入初始状态:283目标状态:123164804705765运行结果屏幕打印O

6、PEN表与CLOSE表:OPENCLOSE12340234560123467015234689015723489100157623481112130157692348121314150157691134812131415161701576911248121314151617181901576911234812131415161719200157691123188121314151617192122015769112318412131415161719212223015769112318481213141516171

7、92122242501576911231848231213141516171921222426015769112318482324发现26为目标节点0…7283104765搜索树:2..112831647051…72031847654..112831407653..1128301476522.1428314576019.1228371406521.1228314376518.1008321476511.1428316475010.142831647056…92301847655…80231847657…912308

8、476510.1123418076520.11803214765注释:每个方格中最上面两个数字分别为编号与启发值,下面九个数字为八数码。较粗的箭头为解路径8..121237840659..1012380476511..910382476523..912378460513.1312384076512.1312386470524..812370468525.12

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

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

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