资源描述:
《人工智能-启发式搜索》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告姓名:叶子烽学号:2220132380班级:软件二班实验名称:启发式搜索课程名称:人工智能实验日期:2015.11.09实验环境:VisualC++实验目的以及内容:1、实验内容:使用启发式搜索算法求解八数码问题。(1)编制程序实现求解八数码问题A*算法,采用估价函数其中:d(n)是搜索树中节点n的深度;w(n)为节点n的数据库中错放的棋子个数;p(n)为节点n的数据库中的每个棋子与其目标位置之间的距离的总和。(2)分析上述(1)中的两种估价函数求解八数码问题的效率差别,给出一个是p(n)的
2、上界的h(n)的定义,并测试使用该估价函数是否使算法失去可采纳性。2、实验目的:熟练的掌握启发式搜索A*算法及其可采纳性。3.实验原理:八数码问题是在3行和3列构成的九宫棋盘上放置数码为1到8的8个棋盘,剩下一个空格的移动来不断改变棋盘的布局,求解这类问题的方法是:给定初始布局(即初始状态)和目标布局(即目标状态),定义操作算子的直观方法是为每个棋牌制定一套可能的走步》上,下,左,右四种移动,再根据所定义的启发式搜索函数在搜索过程中选择最合适的操作算子,得到最优的路径。代码:#include"std
3、io.h"#definenum3voidshow(intbegin[num][num]){for(inti=0;i4、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;for(inti=0;i5、rncount;}intyidong(intbegin[num][num],intend[num][num],intright,intjishu,intji_shu[50][3][3],intbiaoji,introw,intcolumn){inttemp_zhi;show(begin);if(jishu>=20)return0;intnode;inttemp;for(intq=0;q6、0&&biaoji!=0){exchange(begin,row-1,column,row,column);temp=judge(be
7、gin,end);if(temp=right){temp_zhi=yidong(begin,end,temp,jishu+1,ji_shu,2,row-1,column);if(temp_zhi==1)return1;exchange(begin,row-1,column,row,column);}}if(column>0&&biaoji!=1){exchange(begin,row
8、,column-1,row,column);temp=judge(begin,end);if(temp=right){temp_zhi=yidong(begin,end,temp,jishu+1,ji_shu,3,row,column-1);if(temp_zhi==1)return1;exchange(begin,row,column-1,row,c