最小生成樹演算法

2021-10-02 18:26:48 字數 916 閱讀 6082

參考:prim

基本思想:每次併入的都是與已併入頂點相連的最小的邊

說明:演算法中要定義兩個陣列,陣列的有效長度為頂點的個數,其中乙個儲存起始頂點(新併入結果樹中的節點),另乙個儲存起始頂點和以 i 為終點的代價值

#include

using

namespace std;

const

int max =

100;

int graph[max]

[max]

;int

prim

(int graph[

][max]

,int n)

sta[1]

=0;//將節點1併入結果中

for(

int i =

2; i <= n;

++i)

} sum +

= min;

//cout << min << " ";

lowcost[imin]=0

;//將該條邊加入到結果樹中

for(

int j =

2; j <= n; j++)}

//cout << sum <}

return sum;

}int

main()

for(

int i =

1; i <= n;

++i)

for(

int i =

1; i <= m;

++i)

cout << endl;

int cost =

prim

(graph, m)

; cout << cost << endl;

return0;

}

最小生成樹演算法

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

最小生成樹演算法

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

演算法 最小生成樹

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