赞
踩
A*算法的核心在于估价函数的设计上,如下式所示:
其中 到目标节点
的估计代价;
表示从起始节点经由节点
到目标节点的估计代价。
同Dijkstra算法类似,A*算法也维持一个Open表。Open表中节点的优先级是依据 的大小排列的,
值越小,被搜索到的优先级越高。为保证能搜索到最优解,启发函数
不能太大,不能大于节点
到目标节点的实际代价;但如果
,则A*算法退化为Dijkstra算法,虽能保证得到最优路径,但算法效率低;如果
恰好等于节点
到目标节点的实际代价,则A*算法探索的节点恰好就是最优路径上的节点。所以
的取值直接影响算法的速度和精确度,常见的
的取值有两点之间的欧几里得距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。