你用導航 App 找「從家到公司最省時的路線」時,背後就是在一張「路口是點、道路是邊、每條路花多少時間是成本」的圖上算最短路徑。Dijkstra 像每一步都先挑眼前最近的岔路走,速度快;但它有個死穴——碰到「走這段反而倒賺成本」的負數邊就會算錯。Bellman-Ford 慢一點,卻肯反覆檢查每條路,連負成本、甚至「越繞越省」的怪圈都揪得出來。下面你會看到同一張圖上,兩種方法怎麼一步步把各點距離越修越短,以及誰會在負邊上翻車。
這頁比較兩種「從起點算到各點最短距離」的方法。Dijkstra 快,但有前提:每條邊的成本不能是負數; Bellman-Ford 慢一些,但能處理負成本的邊,還能偵測「繞一圈反而更省」的負環。 你可以同步看它們怎麼一步步把各點的暫定距離越修越短(鬆弛),以及各花了幾輪。重點是體會:能不能有負邊,決定你該選哪個。