Kruskal算法-最小生成树

简介:

算法思想:

1 将G的n个顶点看成n个孤立的连通分支,所有的边按权从小到大排序

2 当查看到第k条边时,

  如果断点v和w分别是当前的两个不同的连通分支t1和t2中的顶点时,就用边(v,m)j将t1,t2连接成一个连通分支,然后继续查看第k+1条边;

  如果端点v和w当前的同一个连通分支中,就直接查看第k+1条边

实现代码:

复制代码
template <class Type>
class EdgeNode{
    friend ostream& operator<<(ostream&,EdgeNode<Type>);
    friend bool Kruskal(int,int,EdgeNode<Type> *,EdgeNode<Type> *);
    friend void main(void);
    public:
        operator Type() const{return weight;}
    private:
        Type weight;
        int u,v;
};
template <class Type>
bool Kruskal(int n,int e,EdgeNode<Type> E[],EdgeNode <Type> t[])
{
    MinHeap<EdgeNode<Type>> H(1);
    H.Initialize(E,e,e);
    UnionFind U(n);
    int k = 0;
    while(e && k<n-1)
    {
        EdgeNode<int> x;
        H.DeleteMin(x);
        e--;
        int a = U.Find(x.u);
        int b = U.Find(x.v);
        if(a != b)
        {
            t[k++] = x;
            U.Union(a,b);
        }
    }
    H.Deactivate();
    return (k == n-1);
}
复制代码

 

本文转自博客园xingoo的博客,原文链接:Kruskal算法-最小生成树,如需转载请自行联系原博主。
相关文章
|
11月前
|
存储 传感器 算法
使用贪心算法解决最小生成树问题
大家好,我是V哥。今天聊聊贪心算法解决最小生成树问题。面试中遇到此类题目,需掌握Prim和Kruskal算法。Prim适合稠密图,Kruskal适合稀疏图。两者时间复杂度分别为O(m log n)和O(m log m),各有优缺点。应用场景广泛,包括图像处理、传感器网络、社交网络分析等。关注V哥,全栈之路一起走。
308 6
|
算法 决策智能
基于prim算法求出网络最小生成树实现网络社团划分和规划
该程序使用MATLAB 2022a版实现路线规划,通过排序节点权值并运用Prim算法生成最小生成树完成网络规划。程序基于TSP问题,采用遗传算法与粒子群优化算法进行路径优化。遗传算法通过编码、选择、交叉及变异操作迭代寻优;粒子群优化算法则通过模拟鸟群觅食行为,更新粒子速度和位置以寻找最优解。
|
算法 Java
Java数据结构与算法:贪心算法之最小生成树
Java数据结构与算法:贪心算法之最小生成树
|
存储 机器学习/深度学习 算法
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
258 1
|
算法 C语言
数据结构与算法——最小生成树问题(什么是最小生成树、Prim算法、Kruskal算法)
数据结构与算法——最小生成树问题(什么是最小生成树、Prim算法、Kruskal算法)
241 0
|
人工智能 算法
一些算法的复习(最短路径、最小生成树、dp)
一些算法的复习(最短路径、最小生成树、dp)
130 0
|
算法
最小生成树算法
最小生成树算法
241 0
|
算法 Java C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-6 算法训练 安慰奶牛 最小生成树
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-6 算法训练 安慰奶牛 最小生成树
151 0
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
247 0

热门文章

最新文章