貪心法 C語言實現最小代價生成樹

2021-07-30 17:17:26 字數 408 閱讀 5936

【最小代價生成樹】

無向連通圖g:含n個頂點

若g存在由n-1條邊連通n個頂點的子圖g',則稱g'為g的一棵生成樹。

若g的每一條邊都賦了乙個權值,則稱此圖為網路。

最小代價生成樹:在乙個網路的各種生成樹中,具有最小代價的生成樹。

【普里姆演算法】

設網路g=,v=,設u為v的子集(初始u為空集);

然後從集合v-u中找出乙個頂點x;

該頂點x與集合u中的某點之間的邊是最小權邊且不會造成迴路;

然後將頂點x加入集合u中;

反覆執行同樣的步驟,直到u=v為止。

【克魯斯卡爾演算法】

將所有邊按權值由小到大排序,然後從權值最小的邊開始選起,構架最小生成樹,若加入的邊會造成迴路則捨棄不用,直到所有邊被挑完為止。

未完待續…

貪心法實現Prim最小生成樹(java)

設最小生成樹的節點的集合為u 候選集 待加入最小生成樹的節點的集合 割 邊 候選集中節點與u中節點的連線形成的邊為割邊 class ttreeedge 儲存邊資訊 起始點,終止點,權值 public class prim int i,j,k tcloserec close new tcloserec...

最小生成樹 kruskal演算法C語言實現

系列文章 最小生成樹 prim演算法c語言實現 時間複雜度 o nlogn n為邊數 kruskal演算法又稱 加邊法 用於邊數較少的稀疏圖 方法 每次找圖中權值最小的邊 此演算法中對於權值的排序運用了快速排序的方法 將邊連線的兩個頂點加入最小生成樹集合中 注意 相同權值任選其中乙個即可,但是不允許...

貪心法之最小生成樹之Kruskal演算法

a,實際應用 現實生活中經常需要計算某種方案的最小成本問題,比如希望利用最少量的電纜線連線一座建築物中所有的計算機 再比如希望以最小的成本連線乙個網路中的所有路由器等問題。把整個問題抽象成乙個無向圖,解決問題就是要構建一棵包含圖中所有節點的樹,並使構造出的樹的總權值最小,即求解圖的最小生成樹問題。下...