最小生成树------Kruskal算法

简介: Kruskal最小生成树算法的概略描述:1 T=Φ;2 while(T的边少于n-1条) {3 从E中选取一条最小成本的边(v,w);4 从E中删去(v,w);5 if((v,w)在T中不生成环) {6 将(v,w)加到T中;7 else{舍弃(v,w);}8 };//if9 }//for   为了有效地执行第5和第6步,G中的结点的组合方式应该是易于确定结点v和w是否已由早先选择的边所连通的那种。

Kruskal最小生成树算法的概略描述:
1 T=Φ;
2 while(T的边少于n-1条) {
3 从E中选取一条最小成本的边(v,w);
4 从E中删去(v,w);
5 if((v,w)在T中不生成环) {
6 将(v,w)加到T中;
7 else{舍弃(v,w);}
8 };//if
9 }//for

  为了有效地执行第5和第6步,G中的结点的组合方式应该是易于确定结点v和w是否已由早先选择的边所连通的那种。在已连通的情况下,则将边(v,w)舍弃;若不连通,则把(v,w) 加人到T。一种可能的组合方法是把T的同一连通分图中所有结点放到一个集合中(T的各个连通分图都是树)。那么,T中的两个结点是连通的,当且仅当它们在同一个集合中。例如,当要考虑边(2,6)时,这些集合就是{l,2},{3,4,6}和{5}。结点2和6在不同的集合中,因此这些集合被合并成为{1,2,3,4,6}和{5}。要考虑的下一条边是(1,4)。由于结点1和4在同一个集合中,因此该边被舍弃,边(3,5)连结不同集合中的结点,并且产生最终的生成树。使用集合表示和Union和Find算法,可以在几乎是线性的时间内有效地实现第5和第6行。因此,计算时间由第3行和第4行的时间所确定,在最坏情况下第3和第4行的计算时间是О(eloge)。

  举个例子:

Kruskal算法
line void Kruskal (E,COST[],n,T,minCOST) {
//G有n个结点,E是G的边集。COST(u,v)是边(u,v)的成本。
//T是最小成本生成树的边集,minCOST是它的成本

l float minCOST,COST[n][n];
2 int Parent[n],T[n-1][2],n
3 以边成本为元素构造一个min一堆;

4 Parent=l; //每个结点都在不同的集合中
5 i=minCOST=06 while(i<n-l) and (堆非空) do
7 从堆中删去最小成本边(u,v).并重新构造堆
8 j=Find[u];k=Find[v] ;
9 if(j!=k) { i=i+110 T[i,l]=u;T(i,2)=v;
11 minCOST = minCOST + COST(u,v);
12 union(j,k)
13 }if
14 }//while
15 if(i!=n-l) { print(’no spanning tree’)};//if
16 return T;
17 }// Kruskal

 

 

引理 设T是无向连通图G的一棵生成树。对于任一条边e∈E(G),但不属于E(T),有:①若将e加人到T,则生成一个唯一的环;②从E(T) ∪ {e}中去掉这环中的任意一条边后,剩        余的边构成G的一棵树。

相关文章
|
8月前
|
存储 传感器 算法
使用贪心算法解决最小生成树问题
大家好,我是V哥。今天聊聊贪心算法解决最小生成树问题。面试中遇到此类题目,需掌握Prim和Kruskal算法。Prim适合稠密图,Kruskal适合稀疏图。两者时间复杂度分别为O(m log n)和O(m log m),各有优缺点。应用场景广泛,包括图像处理、传感器网络、社交网络分析等。关注V哥,全栈之路一起走。
178 6
|
11月前
|
算法 决策智能
基于prim算法求出网络最小生成树实现网络社团划分和规划
该程序使用MATLAB 2022a版实现路线规划,通过排序节点权值并运用Prim算法生成最小生成树完成网络规划。程序基于TSP问题,采用遗传算法与粒子群优化算法进行路径优化。遗传算法通过编码、选择、交叉及变异操作迭代寻优;粒子群优化算法则通过模拟鸟群觅食行为,更新粒子速度和位置以寻找最优解。
|
算法 Java
Java数据结构与算法:贪心算法之最小生成树
Java数据结构与算法:贪心算法之最小生成树
|
算法 C语言
数据结构与算法——最小生成树问题(什么是最小生成树、Prim算法、Kruskal算法)
数据结构与算法——最小生成树问题(什么是最小生成树、Prim算法、Kruskal算法)
137 0
|
人工智能 算法
一些算法的复习(最短路径、最小生成树、dp)
一些算法的复习(最短路径、最小生成树、dp)
112 0
|
22天前
|
机器学习/深度学习 算法 新能源
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
|
24天前
|
算法 机器人 定位技术
基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真
本程序基于机器视觉与Dijkstra算法,实现平面建筑群地图的路径规划。通过MATLAB 2022A读取地图图像,识别障碍物并进行路径搜索,支持鼠标选择起点与终点,最终显示最优路径及长度,适用于智能导航与机器人路径规划场景。
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的XGBoost时间序列预测算法matlab仿真
本程序基于Matlab 2024b实现,结合粒子群优化(PSO)与XGBoost算法,用于时间序列预测。通过PSO优化XGBoost超参数,提升预测精度。程序包含完整注释与操作视频,运行后生成预测效果图及性能评估指标RMSE。
|
22天前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
100 3

热门文章

最新文章