最小生成樹之prime演算法實現

2021-06-08 03:22:47 字數 1047 閱讀 4821

prime演算法的精髓在於:

每次選取一條邊。

該邊滿足:1、一端已選,一端未選;2、該邊權值最小。

直到選取n-1條邊或選取n個頂點演算法結束,求出mst或者判斷出不存在mst。

**設計:

1、利用兩個集合存放已選頂點和未選頂點

(choosed存放已選頂點,unchoosed存放未選頂點)

2、每次選取的邊都是一端在choosed中,另一端在unchoosed中的權值最小的邊

3、利用stl中vector可以方便的實現圖的臨界表儲存

4、記錄組成mst的每條邊很方便,只要在選取到一條滿足條件的邊時記錄下起點、終點、權值即可

**:

#include#include#includeusing namespace std;

const int maxn=101; //頂點數

const int inf=0x7fffffff;

struct edge //邊

;int choosed[maxn]; //已選頂點

int unchoosed[maxn]; //未選頂點

int nodenum,edgenum,mst; //頂點數、邊數、最小生成樹

bool choose[maxn]; //頂點是否已選

vectormyv[maxn]; //圖的鄰接表

/* //這是無向圖有重複邊的建圖,取重複邊中最小的邊儲存

bool exist(int from,int to,int cost)}}

if(smallflag)

{for(int j=0;jto的邊已選,那麼從to->from的邊也已選

for(int k=0;k測試例項:

1、圖形:

2、輸入及結果:

問題:如何利用prime演算法求解有向圖的mst?

先留在這吧。。。

最小生成樹之prime演算法

在這裡我就不擺最小生成樹的定義了,對於最小生成樹,我們必須注意一下兩點 1 盡可能選取權值小的邊,但不能構成迴路。2 選取合適的n 1條邊將聯通圖的n個頂點連線起來。演算法簡單描述 1 輸入 乙個帶權連通圖,其中頂點集合為v,邊集合為e 2 初始化 vnew 其中x為集合v中的任一節點 起始點 en...

最小生成樹 Prime演算法

對於乙個圖,它的所有生成樹中必有乙個 邊的權值最小 的生成樹,我們把它稱為最小生成樹。概念很抽象,換做實際問題 有十個城市,各個城市之間距離或遠或近。需要建設乙個道路網,把十個城市連線在一起,要求道路網的道路長度最小。各個城市的連線可以抽象為乙個圖,本質上即是求該圖的乙個最小生成樹。每乙個圖可能有多...

最小生成樹 prime演算法

問題 c 建立通訊 時間限制 1 sec 記憶體限制 128 mb 提交 7 解決 4 提交 狀態 討論版 題目描述 據不完全統計,受 影響,四川大部分災區通訊陷入癱瘓,數千個基站因斷電 傳輸中斷等原因退出服務,目前總公司已緊急部署對受災地區進行通訊搶修。按照應急通訊保障預案,必須盡快 付出代價最小...