渣渣演算法回顧 最小生成樹之kruskal演算法

2021-06-21 09:57:40 字數 653 閱讀 7080

最近在學二分圖 那就先回顧下圖論的幾個基本演算法吧

最小生成樹---即最小權重生成樹

權威定義:

在一給定的無向圖g = (v, e) 中,(u, v) 代表連線頂點 u 與頂點 v 的邊(即),而 w(u, v) 代表此邊的權重,若存在 t 為 e 的子集(即)且為無迴圈圖,使得

的 w(t) 最小,則此 t 為 g 的最小生成樹

今天我們先來講下kruskal演算法(它不能處理權重為負的情況)

1.首先 這個演算法第一步是要將圖中所有的邊進行排序 這個過程我們可以直接呼叫sort完成 不僅因為它方便 而且效率也不低

2.因為我們所要的生成樹是權重最小的 所以排序是從小到大的 我們依次取出每條邊(u,v)

3.這邊的關鍵是加進邊的時候 判斷它的連通性:這裡我們運用很強大的union-find-set(並查集)

並查集 我這邊並不想展開去談 而且對於這個演算法 我只是用到了它的最基礎的路徑壓縮的查詢函式

累了 剛和小夥伴們玩了好久 導致這個頁面靜止很久了…… 接下來 我就直接給出kruskal的渣渣模板(你有任何疑問 去訪問大牛的部落格)--我這邊純粹是個人的回顧和輸給同學的賭

int cmp(const int i , cosnt int j)

{ return value[i]

國王的煩惱 藍橋杯(最小生成樹 kru)

歷屆試題 城市建設 時間限制 1.0s 記憶體限制 256.0mb 問題描述 棟棟居住在乙個繁華的c市中,然而,這個城市的道路大都年久失修。市長準備重新修一些路以方便市民,於是找到了棟棟,希望棟棟能幫助他。c市中有n個比較重要的地點,市長希望這些地點重點被考慮。現在可以修一些道路來連線其中的一些地點...

最小生成樹之prim演算法

最小生成樹的演算法思想和介面介紹過的求單源的最短路徑演算法dijkstra演算法有很多相似地方,甚至很多 都是一樣。prim演算法要解決的主要問題是路徑的最短問題。假設平面上有很多點,各個點之間有很多的線連線起來,並且到達各個點的距離不相同,需要求出一條路徑,使得各個點都能被連線起來,並且他們的距離...

最小生成樹之prim演算法

普利姆演算法 prim algorithm 最小生成樹的概念 所謂最小生成樹,就是在乙個具有n個頂點的帶權連通圖g中,如果存在某個子圖g 其包含了圖g中的所有頂點和一部分邊,且不形成迴路,並且子圖g 的各邊權值之和最小,則稱g 為圖g的最小生成樹。普利姆演算法 prim algorithm 演算法描...