给一个图,起点s、终点t、k,求起点到终点的第k短路。
基本思路:
首先反向图中求出终点 t 到其他所有点的距离(预处理优化),
再从起点开始使用优先队列进行宽搜,用cnt记录到达终点的次数,当cnt==k时的路径长度即为所得。
搜索的方向用一个估价函数 f=g+h 来确定,其中g表示到当前点的路径长度,h表示当前点到终点的最短路径,即之前的预处理。
A*算法结合了启发式搜索(充分利用题目所给信息来动态的做出决定,使搜索次数大大降低),和形式化方法(不利用图给出的信息,仅利用数学的形式分析,如dij算法)。
它通过一个估价函数 f(h) 来决定搜索方向。估价函数=当前值+当前位置到终点的距离,每次扩展估价函数值最小的一个。
#include
#include
#include
#include
#include
#include
#include
#include
#include