筆記 克魯斯卡爾演算法(解決最小生成樹問題)

2021-09-01 00:21:51 字數 393 閱讀 9782

//用到了並查集和堆排序解決最小生成樹,思路就是權值邊排序(堆排序),然後從最小權值邊取起,邊取邊判定是否有迴路(用並查集),有迴路則放棄該邊。思路相對簡單,直接看**。

#define maxsize 100

typedef structedge;//邊結構體

int find(int *parent,int x)

edge edges[maxedge];//儲存各條邊

int parent[maxvex];//並查集知識點:儲存各頂點的父親頂點

void minispantree_kruskai(mgraph g)

}}

庫魯斯卡爾演算法看起來簡單,但用到了排序sort,因而時間耗費上取決邊的多少,適合稀疏圖。

最小生成樹 克魯斯卡爾演算法

c node.h檔案 儲存頂點資訊 class c node c node c node c node p node c node c node c node c node char p data node.h檔案,儲存邊資訊 include class link node link node li...

最小生成樹( 克魯斯卡爾演算法)

name author date 01 12 14 20 17 description 最小生成樹 克魯斯卡爾演算法 關於並查集的演算法,參見 一種簡單而有趣的資料結構 並查集 include include define maxn 1000 最大頂點數量 define max 20000 最大邊數...

最小生成樹 克魯斯卡爾演算法

之前學了用普里姆演算法來求最小生成樹的權值和,但是它的時間複雜度為o v2 使用優先順序佇列優化後,可以優化為o e log v 克魯斯卡爾演算法可以在o e log e 的時間複雜度內,求出最小生成樹 克魯斯卡爾演算法的核心就是對邊進行公升序排序,然後從權值最小的邊開始,加入最小生成樹中,然後利用...