A星算法理解

A星算法是一种探测性算法,实现需要关注的重点:二维地图数组,关闭列表,开放列表(小根堆),每个点的父节点。

 二维地图数组用来存储地图上是否可通过的标记信息,假设现在要从地图的起始点A移动到目的点B,如何寻找到最短的路径呢?

1.      把地图上的A点放入关闭列表中,然后将A点周围的可走点放入一个以小堆为结构的开放列表,并把它们的父节点指向A点。

2.      计算周围可走点到A点的距离H和周围可走点到B点的预测距离V,将H和V相加调整更新小根堆。

3.      取出堆顶的点放到关闭列表中,继续把该点的周围可走点(该点不在关闭和开放列表中)放入开放列表中,重复第2步。(如果该点已经在开放列表中,就需要再次计算H 值,是否可以更改它的父节点值)

4.      直到最后遇到B点才结束探测。

5.      最后通过父节点不断追溯,便可以得到最短的路径。

点赞