基本算法:单源最短路+A*
估价函数f(h):估计当前点到中点的距离,以此确定搜索方向
f(p)=g(p)+h(p)
g(p):源点到当前点的距离
h(p):当前点到终点的最短路,可以通过单源最短路算法预处理得到
算法步骤:
(1)将有向边反向,由终点求一次单源最短路作为预处理结果
(2)建优先队列,将源点s加入队列
(3)从优先队列中弹出f最小的点p,判断:如果p是t,t的出队次数加1,若达到k次,当前路径长度就是第k短路长度,结束算法。
否则,遍历与p相连的边,将拓展出的p的邻接点加入优先队列中。