渣渣算法回顾--最小生成树之kruskal算法
来源:互联网 发布:软件就业培训班 编辑:程序博客网 时间:2024/04/28 03:29
最近在学二分图 那就先回顾下图论的几个基本算法吧
最小生成树---即最小权重生成树
权威定义:
在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得
的 w(T) 最小,则此 T 为 G 的最小生成树。
今天我们先来讲下Kruskal算法(它不能处理权重为负的情况)
1.首先 这个算法第一步是要将图中所有的边进行排序 这个过程我们可以直接调用sort完成 不仅因为它方便 而且效率也不低
2.因为我们所要的生成树是权重最小的 所以排序是从小到大的 我们依次取出每条边(u,v)
3.这边的关键是加进边的时候 判断它的连通性:这里我们运用很强大的Union-Find-Set(并查集)
并查集 我这边并不想展开去谈 而且对于这个算法 我只是用到了它的最基础的路径压缩的查询函数
累了 刚和小伙伴们玩了好久 导致这个页面静止很久了…… 接下来 我就直接给出Kruskal的渣渣模板(你有任何疑问 去访问大牛的博客)--我这边纯粹是个人的回顾和输给同学的赌
该死的 排位连赢2盘 之后连输2盘 心情都没了 糟糕透了。。。。
明天去余姚玩了 去放松下心情 回来在写 最小生成树之prim算法
上面任何有关算法内容 如果你和我一样是初学者 还是去看大牛博客 比较好.......
今天我们先来讲下Kruskal算法(它不能处理权重为负的情况)
1.首先 这个算法第一步是要将图中所有的边进行排序 这个过程我们可以直接调用sort完成 不仅因为它方便 而且效率也不低
2.因为我们所要的生成树是权重最小的 所以排序是从小到大的 我们依次取出每条边(u,v)
3.这边的关键是加进边的时候 判断它的连通性:这里我们运用很强大的Union-Find-Set(并查集)
并查集 我这边并不想展开去谈 而且对于这个算法 我只是用到了它的最基础的路径压缩的查询函数
累了 刚和小伙伴们玩了好久 导致这个页面静止很久了…… 接下来 我就直接给出Kruskal的渣渣模板(你有任何疑问 去访问大牛的博客)--我这边纯粹是个人的回顾和输给同学的赌
int cmp(const int i , cosnt int j){return value[i]<value[j];//value数组是指边的权重}//这里运用了间接排序int find(int x){return x==father[x]?x:father[x]=find( father[x] );}//含路径压缩的 递归式并查集void inital(int n,int m){for(int i=0;i<n;i++)father[i]=i;//初始化并查集for(int i=0;i<m;i++)side[i]=i;//初始化边的序号}int Kruskal(){int sum=0;sort(r,r+m,cmp)for(int i=0;i<m;i++){int temp=r[i];int x=find(begin[temp]);//begin是一条边的一个端点int y=find(end[temp]);//end是一条边的一个端点if(x!=y){sum+=value[x]//这条边加入MST之中(MST-最小生成树的边的集合)father[x]=y;//将X合并到Y节点下面}}return sum;//这样就求出解了}
该死的 排位连赢2盘 之后连输2盘 心情都没了 糟糕透了。。。。
明天去余姚玩了 去放松下心情 回来在写 最小生成树之prim算法
上面任何有关算法内容 如果你和我一样是初学者 还是去看大牛博客 比较好.......
0 0
- 渣渣算法回顾--最小生成树之kruskal算法
- 渣渣算法回顾---最小生成树之Prim算法
- 最小生成树之Kruskal算法
- 最小生成树之kruskal算法
- 贪心算法之最小生成树Kruskal
- 【算法】最小生成树之Kruskal
- 最小生成树之kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之Kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之Kruskal算法
- 数据结构之最小生成树 Kruskal算法
- 最小生成树之kruskal算法
- 最小生成树之Kruskal算法
- 图算法之最小生成树(Kruskal)
- Windows 内核函数
- win8“400 bad request”能登QQ,无法上网解决办法d
- linux下java环境搭建
- 游戏测试面试中问到的问题
- 求一个字符串中连续出现次数最多的子串
- 渣渣算法回顾--最小生成树之kruskal算法
- iPhone开发中的技巧整理
- 最近感悟测试人员需要的一种能力
- hbase 用HTablePool 类获取hbaseTable报错
- 数组排序和交集
- 研究友盟之后发现的几个问题
- 【面向对象】谁直接拥有数据,谁就对外提供操作这些数据的方法。
- 友盟推送
- Python爬虫初学(1)