1.A算法也是对bfs算法的一个优化,是一种启发式搜索算法,同样适用于搜索空间较大的情况。
2.A算法的核心思想是通过一个估值函数f(x),一个优先队列(小根堆),通过每次先拓展最有可能先找到答案的状态来减少搜索的时间。
3.优先队列排序的依据是起点到当前状态的真实距离+估值距离 。
4.估值函数f(x)表示估计的当前状态到终点的距离,f(x)需要小于等于当前状态到终点的真实距离。
只有满足上述情况,当终点第一次出队时,对应的距离才是最小距离
证明(反证法):假设满足上述情况时,终点第一次出队时不是最小距离,那么必有dist[end]+f[end]>realdist(最终结果)>dist[k]+f[k](k为最优路径上的任意一点,一定可以找到这样的k因为最坏情况下起点在队列中),与优先队列的性质矛盾,故得证。
5.通过这种方法优先搜索可能性较大的状态可以减少时间
6.A*算法要求必须有解