八数码问答题实验报告

八数码问答题实验报告

ID:43429037

大小:262.50 KB

页数:8页

时间:2019-10-02

八数码问答题实验报告_第1页
八数码问答题实验报告_第2页
八数码问答题实验报告_第3页
八数码问答题实验报告_第4页
八数码问答题实验报告_第5页
资源描述:

《八数码问答题实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/'《八数码问题》实验报告一、实验目的:熟练掌握启发式搜索算法。二、实验内容:使用启发式搜索算法求解8数码问题。编制程序实现求解8数码问题算法,采用估价函数,其中:是搜索树中结点的深度;为结点的数据库中错放的棋子个数;为结点的数据库中每个棋子与其目标位置之间的距离总和。三、实验原理:1.问题描述:八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格(以数字0来表示),与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,

2、找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓问题的一个状态就是棋子在棋盘上的一种摆法。解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态。2.原理描述:启发式搜索(1)原理启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。(2)估价函数计算一个节点的估价函数,可以分成两个部分:1、已经付出的代价(起始节点到当前节

3、点);2、将要付出的代价(当前节点到目标节点)。节点n的估价函数定义为从初始节点、经过n、到达目标节点的路径的最小代价的估计值,即=+。是从初始节点到达当前节点n的实际代价;是从节点n到目标节点的最佳路径的估计代价。/'所占的比重越大,越趋向于宽度优先或等代价搜索;反之,的比重越大,表示启发性能就越强。(3)算法描述:①把起始节点S放到OPEN表中,并计算节点S的;②如果OPEN是空表,则失败退出,无解;③从OPEN表中选择一个值最小的节点。如果有几个节点值相同,当其中有一个为目标节点时,则选择此目标节点;否则就选择其中任一个

4、节点作为节点;④把节点从OPEN表中移出,并把它放入CLOSED的已扩展节点表中;⑤如果是个目标节点,则成功退出,求得一个解;⑥扩展节点,生成其全部后继节点。对于的每一个后继节点:计算;如果既不在OPEN表中,又不在CLOCED表中,则用估价函数把它添入OPEN表中。从加一指向其父节点的指针,以便一旦找到目标节点时记住一个解答路径;如果已在OPEN表或CLOSED表中,则比较刚刚对计算过的和前面计算过的该节点在表中的值。如果新的较小,则(I)以此新值取代旧值。(II)从指向,而不是指向他的父节点。(III)如果节点在CLOSE

5、D表中,则把它移回OPEN表中。⑦转向②,即GOTO②。(3)算法流程图:/'四、实验结果输入矩阵:目标矩阵:283123145804760765五、实验小结通过本次试验,我对启发式搜索有了更加深入的了解。在实验中,通过对两种启发式搜索所扩在的节点数来看,看来比更加有效,能在复杂情况下求得更加优质的解,避免不必要的节点的扩展。所以,要更好地定义一个估价函数还有待深入讨论。/'源代码:#include"stdio.h"#definenum3//宏定义数码的行列数为3/*显示当前待调整数码矩阵*/voidshow(intbegin

6、[num][num]){for(inti=0;i

7、temp=begin[row_two][column_two];begin[row_two][column_two]=begin[row_one][column_one];begin[row_one][column_one]=temp;}/*判断待调整的数码与最终数码相比正确位置数码的个数*/intjudge(intbegin[num][num],intend[num][num]){intcount=0;//count记录数码中正确位置的个数for(inti=0;i

8、;j

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

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

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