Boruvka求最小生成樹(菠蘿演算法)

HarlemBlog發表於2024-10-22
更新日誌

前言

據說Boruvka演算法是最古早的最短路演算法,多半是真的。

為什麼叫菠蘿演算法?不知道。多半是音譯吧。

思路

這個演算法需要執行多輪,直到生成最小生成樹。

在每一輪中,對於每一個點(或者說,連通塊),都找出以它為一個端點(或者說,一個端點在這個連通塊中)的最短的邊,並且將這條邊加入最小生成樹,並將其連線的兩個點(連通塊)合併。

每一輪中至少都可以使聯通塊數除二(因為每條邊都連線了兩個連通塊,而最多隻會有兩條邊重合。),故而時間複雜度是 \(O(logn)\) 的。

通常情況下,菠蘿演算法用於解決邊特別多的情況,例如完全圖。

細節以及模板暫缺

細節

模板

例題

程式碼

前注:非題解,不做詳細講解

相關文章