演算法8 2 最小生成樹貪婪演算法

2021-06-22 12:47:39 字數 557 閱讀 8130

為了簡化問題,我們需要作出一些假設。假設圖中每條邊的權重都是不一樣的,假設整個圖是連通的。這樣假設的目的就是讓最小生成樹的計算結果是唯一的。

介紹演算法之前,需要先了解圖的切割。圖的切割就是將頂點分割成兩部分,切到的邊稱之為交叉邊。下圖紅色的先就是交叉邊。

在最小生成樹中,無論如何切割,最小生成樹總是從交叉邊中選擇最小的一條邊。下圖中紅色的粗邊就是最小生成樹上的邊。

貪婪演算法的步驟如下:

所有的邊在一開始都是灰色的,最小生成樹的邊是黑色的。

任意選擇一種切割方法,只要不切割到黑色的邊即可。從被切割到的邊中選擇最短的一條邊標記成黑色,表示這條邊屬於最小生成樹

重複步驟2,直到黑色的邊連線所有的頂點為止

貪婪演算法的效能比較差,後續將會介紹kruskai演算法、prim演算法和boruvka,因此這裡就不編寫**了。

最小生成樹演算法

由帶權的連通圖生成的數的各邊加起來稱為生成樹的權,把權值最小的生成樹稱為最小生成樹 minimum spanning tree 簡稱為mst 構造最小生成樹的方法就是利用mst性質,一條一條地選擇可以加入的邊。下面介紹兩種用於構造最小生成樹的演算法,其中第一種演算法稱為prim演算法,第二種演算法稱...

最小生成樹演算法

乙個最簡單的最小生成樹 圖結構練習 最小生成樹 time limit 1000ms memory limit 65536k 有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。輸...

演算法 最小生成樹

前言 最小生成樹是在乙個給定的無向圖中求一棵樹,這棵樹包含無向圖中的所有頂點,且樹中的邊都來自無向圖中的邊,並且要滿足整棵樹的邊權之和最小。1 最小生成樹是樹,其邊數等於頂點數減1,且不會有環 2 對於給定的圖最小生成樹可以不唯一,但是邊權之和一定是唯一的。3 其根節點可以是這棵樹上的任何乙個節點,...