第一节 镖局运镖-图的最小生成树所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G',其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G'的各边权值之和最小,则称G'为图G的最小生成树。最小生成树的三个性质最小生成树不能有回路最小生成树可能是一个,也可能有多个最小....
分类:
其他好文 时间:
2014-06-27 14:46:30
阅读次数:
187
Kruskal算法用于计算一个图的最小生成树。这个算法的步骤如下:
按照边的权重从小到达进行排序
依次将每条边增加到最小生成树中,除非这条边会造成回路
实现思路
第一个步骤需要对边进行排序,排序方法在之前的章节中已经介绍了很多,可以使用优先级队列进行实现,也可以使用归并排序进行实现,这里采用归并排序。
第二个步骤需要判断是否会造...
分类:
其他好文 时间:
2014-06-22 21:43:31
阅读次数:
204
【问题】
求一个给定的加权连通图的最小生成树问题。
【代码】
#include
#include
#define MAXNUM 1000
#define MAX_VERTEX_NUM 20
typedef char Vertextype;
typedef struct node
{
int weight;
}Adjmatrix[MAX_VERTEX_NUM][MAX_VERT...
分类:
其他好文 时间:
2014-05-13 23:55:49
阅读次数:
464
【问题】
Kruskal算法求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e
步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出...
分类:
编程语言 时间:
2014-05-13 23:16:45
阅读次数:
610
图的最小生成树,就是基于图,假设其有n的顶点,那么就要构建一颗连通树,使其各边权重和最小。最小生成树的实现算法主要有两种:Prim算法和Kruskal算法。本文着重介绍Prim算法及其实现,其中图的实现以及相关操作,采用前面博文C++
图的实现中的实现方式,由于本文重点在于Prim算法的实现,所有就...
分类:
其他好文 时间:
2014-05-13 19:00:53
阅读次数:
432
图的最小生成树,就是基于图,假设其有n的顶点,那么就要构建一颗连通树,使其各边权重和最小。最小生成树的实现算法主要有两种:Prim算法和Kruskal算法。Prim算法在前面已经介绍过,本文着重介绍Kruskal算法及其实现,其中图的实现以及相关操作,采用前面博文C++
图的实现中的实现方式,由于本...
分类:
其他好文 时间:
2014-05-13 18:10:36
阅读次数:
345