A*算法学习
2013-6-20
(1)是一种启发式搜索,其中很重要的影响因素是估价函数。
启发式搜索——不是简单的DFS和BFS,启发式搜索会根据当前的状态空间,对每一个搜索的位置进行评估,选择最优的节点直到达到目的节点。 这样提高了效率。
估价函数——启发式的,在迷宫和地图问题中,常用曼哈顿算法(距离=|x轴的差值|+|y轴的差值|)
(2)算法思路
关键因素—— F = G + H
整个算法中维护两个列表:open表 和 close表(用于存放节点)
算法过程:
把起点放到open表中,设为当前节点A。
1.寻找该点周围可达的点,也放入open表(此时记录每个点的父节点为A,同时把A节点移动到close表中)。
* 若周围可达的点叫B已经在open表中,看看以A作为B的父节点是否减小了B的F值,如果是的话则进行B节点上值的更新。
2.计算这些节点的F值。G表示从起始节点到该节点的距离值。H表示从该节点到终点的距离值(这个值的计算就需要使用到估算函数,目前有很多各种各样的估算函数,算法最开间的就是选择的估算函数的优劣)
按照f值的大小从小到大,所以表可以用数据结构中的最小堆来进行维护
3.把f值最小的节点放到clo