Kruskal算法用于计算一个图的最小生成树。这个算法的步骤如下:
按照边的权重从小到达进行排序
依次将每条边增加到最小生成树中,除非这条边会造成回路
实现思路
第一个步骤需要对边进行排序,排序方法在之前的章节中已经介绍了很多,可以使用优先级队列进行实现,也可以使用归并排序进行实现,这里采用归并排序。
第二个步骤需要判断是否会造...
分类:
其他好文 时间:
2014-06-22 21:43:31
阅读次数:
204
问题
最小生成树的Kruskal算法
描述:有A、B、C、D四个点,每两个点之间的距离(无方向)是(第一个数字是两点之间距离,后面两个字母代表两个点):(1,'A','B'),(5,'A','C'),(3,'A','D'),(4,'B','C'),(2,'B','D'),(1,'C','D') 生成边长和最小的树,也就是找出一种连接方法,将各点连接起来,并且各点之间的距离和最小。...
分类:
其他好文 时间:
2014-06-22 16:49:27
阅读次数:
392
上一篇文章中提到了最小生成树的Prim算法,这一节继续探讨一下最小生成树的Kruskal算法。什么是最小生成树算法上文已经交代过了,所以我们直接从Kruskal的步骤开始介绍。1.Kruskal算法的步骤:a.假定拓扑图的边的集合是E,初始化最小生成树边集合G={}。b.遍历集合E中的所有元素..
分类:
其他好文 时间:
2014-06-22 10:27:54
阅读次数:
357
熟悉算法中的最小生成树的朋友都晓得有一个Kruskal算法,这个算法就是由题目中那个名字很长的人提出的。因为他功绩卓越,尊称他为Kruskal。
Kruskal生于1928年1月29日,卒于2010年9月19日,美国人,维基里的词条中包含的头衔是:数学家、统计学家、计算机科学家、心理测量学专家。
kruskal分别就读过芝加哥大学和普林斯顿大学,1954年获得博士学位。
下面链接...
分类:
其他好文 时间:
2014-06-17 22:12:34
阅读次数:
265
最小生成树即在加权连通图里寻找n-1条边,连接n个顶点,并且使得所有边的权重之和最小。最小生成树常用的算法有prim算法和kruskal算法。
1. prim算法
prim算法的基本步骤是:假设图的顶点集合为V,边集合为E,初始化集合U={u},此时集合中只有一个结点u,从u的邻接顶点中选取一个顶点v,使得这两个顶点之间的权重最小,然后把v加入结合U中,再从结点v出发,选取最小权重对应的结点加...
分类:
其他好文 时间:
2014-06-15 14:58:46
阅读次数:
187
最小生成树: 一个连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n-1条边。这种构造连通网的最小代价生成树称为最小生成树,详见数据结构之图(术语、存储结构、遍历)。
求连通网的最小生成树有两种经典方法:普里姆(Prime)算法和克鲁斯卡尔(Kruskal)算法。
1、Prime算法
(1)算法描述:假设N=(V,{E})是连通网,TE是N上最小生成树中边的集合。从V中任选一个顶点u0,算法从U={u0}(u0∈V),TE={}开始,重复执行以下步骤:
在所有u∈U、v∈V-U...
分类:
其他好文 时间:
2014-06-10 15:38:52
阅读次数:
211
一、“换边”算法用Kruskal求最小生成树,标记用过的边。求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就是次小的生成树。可以证明:最小生成树与次小生成树之间仅有一条边不同。这样相当于运行m次Kruskal算法。复杂度O(m^2)示例代码:int
Krus...
分类:
其他好文 时间:
2014-06-09 22:16:39
阅读次数:
348
题意:给n*n矩阵 表示个点个边 求最小生成树思路:Kruskal
算法//:简单介绍一下题意。农民要建立互联网络,目的使村庄里所有的农民连上网,//并且总费用最小。多组数据,每组数据给出一个n,然后给出n *
n大小的无向图的邻接矩阵表示,值表示边权。//要求输出最小生成树的权值和。#includ...
分类:
其他好文 时间:
2014-06-07 23:35:22
阅读次数:
235
题意:给定N个字符串 每个字符串可以看为一个点 每个点之间都有边 长度为对应两点之间字符不同的个数
把这些点连接起来 求最小的边长思路:Kruskal 算法的简单应用#include#includeusing namespace std;char
a[2222][10];int dist[2222]...
分类:
其他好文 时间:
2014-06-07 23:07:30
阅读次数:
237
题意://岛要修路,这个岛上有n个城市,要求修完路后,各城市之间可以相互到达,且修的总路程最短
求所有道路的最长的一段路程思路:Kruskal 算法简单的应用#include#includeusing namespace std;int
map[501][501];int dist[501];int...
分类:
其他好文 时间:
2014-06-07 23:04:59
阅读次数:
276