雙向搜索

雙向搜索算法是一種圖的遍歷算法 ， 用於在中搜索從一個頂點到另一個頂點的最短路徑 。 算法同時運行兩個搜索 ： 一個從初始狀態正向搜索 ， 另一個從目標狀態反向搜索 ， 當兩者在中間匯合時搜索停止 。 在很多情況下該算法更快 ， 假設搜索一棵分支因子b的樹 ， 初始節點到目標節點的距離爲d ， 該算法的正向和反向搜索複雜度都是O ( bd / 2 ) ( 大O符號 ) ， 兩者相加後遠遠小於普通的單項搜索算法 （ 複雜度爲O ( bd ) ） 。 在A * 搜尋演算法中 ， 雙向搜索的啓發式函數可以定義爲 ： 正向搜索爲到目標節點的距離 ， 反向搜索爲到初始節點的距離 。 第一個設計並實現了雙向啓發式搜索算法 。 Andrew Goldberg和其他人解釋了雙向搜索版的戴克斯特拉算法的正確完結條件 。