什麼是最短路徑

最短路徑(Shortest Path)是在一個有向圖(Directed Graph)或無向圖(Undirected Graph)中,從一個頂點到另一個特定頂點的所有路徑中,距離最短的路徑。這裡的距離可以是實際的距離,也可以是經過的邊數或者其他代數和。最短路徑問題是一個廣泛研究的問題,在圖論、運籌學、地理信息系統、路由協議和機器學習等領域都有應用。

在圖論中,最短路徑問題通常分為單源最短路徑(Single-Source Shortest Path)和多源最短路徑(All-Pairs Shortest Path)問題。

解決最短路徑問題的算法包括:

  1. 迪傑斯特拉算法(Dijkstra's algorithm):用於解決單源最短路徑問題,它是一個貪心算法,可以在有權重的無向圖或是有向圖上運行。
  2. 佛洛伊德算法(Floyd-Warshall algorithm):用於解決多源最短路徑問題,它可以在有權重的無向圖上運行,並且可以處理帶負權重的邊。
  3. 貝爾曼-福特算法(Bellman-Ford algorithm):用於解決單源最短路徑問題,它可以處理帶負權重的邊,但在無向圖上不適用。
  4. Johnson's algorithm:用於解決所有頂點對之間的最短路徑問題,它結合了迪傑斯特拉算法和貝爾曼-福特算法。

這些算法的時間複雜度和空間複雜度各不相同,選擇哪種算法取決於圖的特徵、要求的精度和可用的計算資源。