跳至主要內容
Lizely

最小生成樹求解器

以確定性的 Kruskal 選擇,找出連接每個命名節點的精確最小權重樹,並明確提示未連通圖形。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.列出 2 到 50 個以逗號分隔且互不重複的節點名稱。
  2. 2.用已宣告的節點名稱,以「起點、終點、權重」加入每條無向邊。
  3. 3.建立 MST、確認連通性與建模假設,再複製選中的 V−1 條邊。

關於最小生成樹求解器

最小生成樹求解器會在不形成迴圈的前提下,找出一組連接所有命名節點、總權重最低的無向邊。輸入以逗號分隔的節點名稱,以及「起點、終點、權重」格式的邊列,結果會列出選中的邊與總權重。所有處理都留在瀏覽器中,樹也可複製為純文字。

已連通無向圖的生成樹可到達每個頂點、不含迴圈,且恰好有 V−1 條邊。最小生成樹(MST)是在所有生成樹中邊權重總和最小者。它最小化的是輸入的抽象邊總權重,並不表示每一條個別路徑都是最短路徑;Princeton Algorithms 文件說明了這些定義與本工具使用的 Kruskal 程序。

Kruskal 演算法會從最輕到最重排序邊。當一條邊的兩端目前屬於不同連通元件時便加入;若加入會形成迴圈則跳過。並查集資料結構會有效追蹤元件。接受 V−1 條邊後,選中的集合就是最小生成樹。相同權重會保留輸入順序,因此當有多棵同樣最優的 MST 時,工具會得到一個可重現的有效答案。

節點名稱以不分大小寫方式保持唯一,每個邊端點都必須符合已宣告節點。圖形是無向的,所以 A,B 與 B,A 視為重複配對並會被拒絕,而不是悄悄互相競爭。自迴圈無法幫助生成樹,也會被拒絕。權重可為正、零或負數,因為 Kruskal 對有限實數權重仍有效。

圖形必須連通。若輸入的邊無法把分離元件連起來,就不存在生成樹,頁面會顯示明確錯誤而不是誤導性的森林。為保持互動反應,瀏覽器限制輸入最多 50 個節點與 500 條邊;標籤不能包含逗號,因為逗號是欄位分隔符。

MST 不是從某處開始走訪每個節點的路線,也不是任兩點間的最短路徑,並且忽略方向。封閉走訪順序應使用旅行推銷員模型;適當權重下的兩點最短距離應使用 Dijkstra 類演算法;邊具有方向時則應使用有向樹方法。

八個人工審查的黃金案例涵蓋兩節點邊界、三角形、相同權重、零與負權重、五節點迴圈以及以一條高成本橋連接的元件。測試會驗證選出 V−1 條邊與精確總權重,也要求未連通圖形失敗,避免實作只是挑最便宜的邊卻沒有阻止迴圈。

此工具適合演算法學習、小型網路設計草圖、線纜配置範例或核對手算的 Kruskal 過程。真實基礎設施規劃還需要地理、備援、容量、可靠性、法規、既有資產與施工限制。最小標量權重樹沒有備援,作業上可能脆弱,因此行動前必須驗證模型。

平行邊不在這個簡化輸入契約中。若有替代方案連接相同端點,請先選擇有效權重或以額外節點建模,並記錄該決定,避免把捨棄的選項誤解為演算法選擇。

方法與來源

將節點名稱正規化並驗證唯一性,驗證最多 500 條唯一、無向且有限權重的邊,依權重與輸入順序穩定排序,再以並查集只接受連接不同元件的邊。必須恰好選出 V−1 條邊,否則回報圖形未連通。

常見問題

結果一定是最小的嗎?
是,前提是輸入為已連通的無向圖,且權重為有限值。權重相同的圖可能存在多棵同樣最小的樹。
權重可以是負數嗎?
可以。Kruskal 演算法仍然有效,能選擇有用的負權重邊,同時避免形成迴圈。
為什麼未連通圖形會失敗?
除非圖形連通,否則沒有任何生成樹能到達每個節點。
這是穿越所有節點的最短路線嗎?
不是。MST 是分支連接結構,不是走訪順序,也不是任兩點間的最短路徑。

計算工具 使用指南

查看全部