电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

A星算法求八数码问题实验报告

A星算法求八数码问题实验报告_第1页
1/7
A星算法求八数码问题实验报告_第2页
2/7
A星算法求八数码问题实验报告_第3页
3/7
人工智能实验报告 实验名称:八数码问题 姓名:x x 学号:*******x x x x 计算机学院 2 0 1 4 年 1 月 1 4 日 一.实验目的 掌握A*的思想,启发式搜索,来求解在代价最小的情况下将九宫格从一个状态转为另状态的路径。 二.实验内容 给定九宫格的初始状态,要求在有限步的操作内,使其转化为目标状态,且所得到的解是代价最小解(即移动的步数最少)并打印出求解路径。例如 2 8 3 1 6 4 7 0 5 2 8 3 1 6 4 7 0 5 三、A *算法思想: 1、思想: A*算法是一种静态路网中求解最短路最有效的直接搜索方法。估价值与实际值越接近,估价函数取得就越好 2、原理: 估价函数公式表示为: f(n)=g(n)+h(n), 其中 f(n) 是从初始点经由节点 n 到目标点的估价函数,g(n) 是在状态空间中从初始节点到n 节点的实际代价,h(n) 是从n 到目标节点最佳路径的估计代价。保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取: 估价值 h(n)<= n 到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。并且如果 h(n)=d(n),即距离估计 h(n)等于最短距离,那么搜索将严格沿着最短路径进行此时的搜索效率是最高的。如果估价值>实际值,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。 四、算法流程: 是 是,输出路径 否,生成 n 的所有子状态 Heuristic_Search(启发式搜索) While(未拓展表不为空?) 从未拓展表中删除第一个状态n N为目标状态? Case:此子状态不在拓展表和未拓展表中 Case:此子状态在未拓展表中 Case:此子状态在拓展表 计算该子状态的估价函数值; 记录比已有的路径更短的路径 记录比已有的路径更短的路径 返回 五、关键技术: 1、使用了 CreateChild()函数,求得了任意未拓展九宫格的扩展结点,便于拓展子空间,搜索所有情况。 关键代码: bool CreateChild(NOExtend ns[],NOExtend ne){ int i,j,k=0; for(i=0;i<3;i++){ for(j=0;j<3;j++){ if(ne.cur_sudoku.num[i][j]==0){ //寻找九宫格空缺所在的坐标 if(i-1>=0){ //将空格向上移动 CopySudoku(ns[k].cur_sudoku,ne.cur_sudoku);//先把未改变的九宫格复制给九宫格数组的某一元素 ns[k].cur_sudoku.num[i][j]=ne.cur_sudoku.num[i-1][j];//然后仅改变此二维九宫格的两项值即可 ns[k].cur_sudoku.num[i-1][j]=0; ns[k].dx=1; k++; } if(...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

A星算法求八数码问题实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部