最短路徑樹
此條目需要補充更多來源。 (2018年1月5日) |
定義
考慮一個連通無向圖 ,一個以頂點 為根節點的最短路徑樹 是圖 滿足下列條件的生成樹——樹 中從根節點 到其它頂點 的路徑距離,在圖 中是從 到 的最短路徑距離。
在一個所有最短路徑都明確(例如沒有負長度的環)的連通圖中,我們可以使用如下算法構造最短路徑樹:
- 使用戴克斯特拉算法或貝爾曼-福特算法計算圖 G 中從根節點 v 到 頂點 u 的最短距離
- 對於所有的非根頂點 ,我們可以給 分配一個父頂點 , 連接至u且 。當有多個 滿足條件時,選擇從v到 的最短路徑中邊最少的 。當存在零長度環的時候,這條規則可以避免循環。
- 用各個頂點和它們的父節點之間的邊構造最短最短路徑樹。
上面的算法保證了最短路徑樹的存在。像最小生成樹一樣,最短路徑樹通常也不是唯一的。
在所有邊的權重都相同的時候,最短路徑樹和廣度優先搜索樹一致。在存在負長度的環時,從 到其它頂點的最短簡單路徑不一定構成最短路徑樹。
外部文獻
- Cahn, Robert S. Wide Area Network Design. 1998.