鄰接矩陣實現Prim演算法

2021-10-03 12:04:07 字數 736 閱讀 9417

prim是尋找最小生成樹的演算法,本文利用鄰接矩陣,乙個比較方便的方式來進行prim演算法。

鄰接矩陣是儲存有向或無向圖的方式,若不帶權,一般用 0 或 inf 表示未連線,用 1 表示連線。

如果帶權,可以用乙個矩陣來表示,-1是未連線,若連線,則數值等於權值;也可以用兩個矩陣分別表示連線情況和權值。

本文使用乙個矩陣,實現帶權無向圖的prim演算法。

#define inf 9999999

//m是無向圖頂點個數,matrix是無向圖的鄰接矩陣

void

prim_tree

(double

** matrix,

int m)

printf

("\n輸入成功!\n");

/*開始記錄和計算*/

t[index]

= start -1;

while

(index < m-1)

}}t[index +1]

= y;

/*輸出連線點*/

printf

("\n連線 %d %d 權值 %0.3lf \n"

, x +

1, y +

1, min)

;/*將已經連線的設為-1,防止重新計算或者形成迴路*/

for(i =

0; i <= index; i++

) index++;}

}

prim演算法 鄰接矩陣 鄰接表版

prim演算法和dijkstra演算法差不多,只不過前者每次併入乙個離當前集合最近的點,乙個併入離原點最近的點 前提都是vis u false prim演算法從哪個點開始都可以,所以不需要引數,這裡預設起點是0 返回生成樹權值之和。const int maxn 500 10 const int in...

鄰接矩陣實現

缺點 created by carso on 2020 3 14.ifndef c grapmatrix h define c grapmatrix h include include include 定義頂點 templatestruct vertex 定義邊 templatestruct edg...

最小生成樹Prim演算法(鄰接矩陣和鄰接表)

最小生成樹,普利姆演算法 簡述演算法 先初始化一棵只有乙個頂點的樹,以這一頂點開始,找到它的最小權值,將這條邊上的令乙個頂點新增到樹中 再從這棵樹中的所有頂點中找到乙個最小權值 而且權值的另一頂點不屬於這棵樹 重複上一步 直到所有頂點併入樹中 圖示 注 以a點開始,最小權值為 另一頂點是 將 加入到...