码迷,mamicode.com
首页 > 其他好文 > 详细

A*寻路入门

时间:2015-06-22 23:28:15      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

基本概念
 
     a*实现算法很多,下文仅以启发式算法为例
     公式 F = G + H ,h为当前点至目标点消耗(距离),g为起始点至当前点的消耗(距离) , F为代价
 
主要做两件事
     一.生成导航图
     二.计算代价,寻找最少代价的路径
 

1.生成导航图
      a.根据地图的宽度高度决定不同网格尺寸与网格密度
      b.检测地图中需要碰撞的物体
 
2.导航图(图中白点)已生成
     a.下面是计算并寻找最小代价路径
 
定义 开启集合
定义 关闭集合
定义 当前点
将起始点添加到开始集合中 
 
While(开始集合包含至少一个node){
当前点 =开启集合中最小的F值的点 
当前点点移除开启集合中 
当前点点加入关闭集合中 
 
如果当前点是目标点 结束查询
 
遍历当前点的每个相邻点 
如果相邻点不能访问或则相邻点在关闭集合中,则跳过此相邻点 
 
如果新的路径到相邻点的距离更短(H),或者相邻点不在开启集合中 
重设F值
重设其父节点为当前点
如果相邻点不在开启集合中 
添加相邻点到开启集合中
}
 
      b.得到关闭集合,与当前点,此时当前点等于目标点,通过回溯当前点可以得到下图,黑色为最终路径,黄色区域为探索过的区域
 

技术分享

A*寻路入门

标签:

原文地址:http://www.cnblogs.com/Keyle/p/4594192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!