最短路徑矩陣

最短路徑矩陣(Shortest Path Matrix)是用來解決最短路徑問題的一種數據結構。在圖論中,最短路徑問題是指給定一個圖(圖形)和兩個頂點,找到連接這兩個頂點的權重最小的路徑。

最短路徑矩陣是一個n x n的矩陣,其中n是圖中頂點的數量。矩陣中的每個元素代表從一個頂點到另一個頂點的最短路徑的權重。如果兩個頂點之間沒有路徑,那麼該元素的值通常是無窮大(∞)或一個特殊的標誌值,表示不存在最短路徑。

最短路徑矩陣可以用迪傑斯特拉(Dijkstra)算法或弗洛伊德(Floyd)算法來計算。迪傑斯特拉算法用於找到單源最短路徑(從一個特定的頂點到其他所有頂點的最短路徑),而弗洛伊德算法可以找到所有頂點之間的最短路徑。

例如,考慮一個簡單的圖,有四個頂點A, B, C, D,邊的權重如下圖所示:

  A  --- 2 --- B
    |     |     |
    +--- 3 --- C
        |     |
        +--- 1 --- D

最短路徑矩陣可能如下所示:

  A B C D
A 0 2 3 ∞
B ∞ 0 1 2
C ∞ ∞ 0 1
D ∞ ∞ ∞ 0

這個矩陣表示從每個頂點到其他頂點的最短路徑的權重。例如,從頂點A到頂點B的最短路徑是直接連接,權重為2;從頂點A到頂點C的最短路徑是通過頂點B的中轉,權重為2 + 1 = 3;從頂點A到頂點D的最短路徑是直接連接,權重為∞(因為沒有直接連接的邊)。

最短路徑矩陣在圖形搜尋、路由選擇、運輸網絡設計等領域有著廣泛的應用。它可以在一次矩陣查詢中提供整個圖形的最短路徑信息,而不需要重新計算。