給一個圖,起點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