关闭

最小生成树

754人阅读 评论(0) 收藏 举报
分类:

0) 引论

这里的最小生成树是图论中的概念,是指在图中找到一个最小的树,这棵树包含所有的点,并且总的边的权重要最小。

这里我们说的图是指无向图。

下图所示为一个无向图的最小生成树。



下面我们看看解决这个问题的两种算法。


1) Prim’s algorithm

这个算法有点类似于Dijkstra algorithm。是一步一步的增长树。依次处理每一个顶点,选取最短的路径。

Prim’s algorithm也引入了Dijkstra algorithm中的Table来辅助树的生成。以上图的图为例:


这是初始化的表。


首先选择v1点,更新v2,v3,v4。


然后选择v4点,更新v3,v5,v6,v7。因为2<3,因此不更新v2.


然后选择v2点,没有需要更新的点

然后选择v3点,更新v6点。


然后选择v7点,更新v6,v5点。


还剩下两个点v5,v6;且v5与v6不邻接,因此此处不需要更新,直接选中v5,v6,显示其以处理即可。



2) Kruskal‘s algorithm

这个算法相当容易理解,首先把图的所有顶点看做是只有根的树,然后合并树,合并的原则是选取最小的权重的边,切不能是树形成圈。如下图所示







0
0
查看评论

最小生成树计数-Kruskal+Matrix_Tree定理

/* *算法引入: *给定一个含有N个结点M条边的无向图,求它最小生成树的个数t(G); * *算法思想: *抛开“最小”的限制不看,如果只要求求出所有生成树的个数,是可以利用Matrix-Tree定理解决的; *Matrix-Tree定理此定理利用图的Kirchhoff矩阵,可以在O(...
  • Jarily
  • Jarily
  • 2013-05-08 20:55
  • 5853

贪心算法——Prim最小生成树

1、首先介绍一下什么是贪心算法: 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。ps:不懂得话可以百度百科,仔细了解。 2、prim算法的原理: 从连通网N={V,E}中的某一顶点U0出发,选择与...
  • baidu_28944591
  • baidu_28944591
  • 2016-06-26 16:50
  • 1760

最小生成树总结

一.最小生成树问题 给定一张图,图中有许多的节点还有许多长度不同的边将这些点点相互连接,找出连接所有点的最短方式就是最小生成树,可以证明,这样一种最小的情况是不会出现环的,由于所有的无环图都可以看做树,所以成为最小生成树。 二.kruskal算法 顶层思想是分治,选择策略是贪心,实现方法如下:...
  • u013555159
  • u013555159
  • 2016-05-07 12:13
  • 847

判断最小生成树的唯一性

先用kruskal算法算出最小生成树,并把最小生成树的边记录下来。然后依次枚举删除边,用其他的边再次使用kruskal算法算出最小生成树。如果算出的代价和原来的相同,则不唯一,否则唯一。另外当我们删除一条边之后,可能根本构不成一颗生成树,要判断一下。 代码如下: #include #include...
  • ECNU_LZJ
  • ECNU_LZJ
  • 2016-12-13 19:38
  • 1559

最小生成树(prim算法与kruskal算法)(模板)

th写的总结,很不错,转载一下:点击打开链接   首先说一下什么是树:     1、只含一个根节点     2、任意两个节点之间只能有一条或者没有线相连    ...
  • zwj1452267376
  • zwj1452267376
  • 2015-08-13 08:54
  • 1500

比较好的题目“典型的最小生成树”

Watering Hole My Tags   (Edit)   Source : USACO 2008 Open   Time limit ...
  • struggle_mind
  • struggle_mind
  • 2014-05-07 21:33
  • 1038

hdu 1233 (最小生成树 简单例题)

还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 39416  ...
  • qq_33406883
  • qq_33406883
  • 2016-07-23 15:10
  • 1180

最小生成树(贪心算法)

最小生成树问题——连接n个针脚,可以使用n-1根连线,每个连线连接两个针脚,使得所使用的连线长度最短     抽象为图问题,一个连通无向图G = (V, E),V是针脚的集合,E是针脚之间的可能连接,且对于每条边都有权重w(u, v),希望找到一个无环子集,T属于E,权重之和最...
  • huangwwu11
  • huangwwu11
  • 2015-04-15 23:38
  • 538

Bzoj2561:最小生成树:网络流,最小割

题目链接:最小生成树 发现如果这条边可能出现在最大生成树上的话,那么可以代替这条边的所有边都不连通,换句话说这条边是连接u,v必不可少的 于是我们把所有权值大于L的边建成一张边权去为1的图对U,V跑最小割即可知道最少删去多少条边 最小生成树同理QAQ #include #include #inclu...
  • qq_34025203
  • qq_34025203
  • 2016-05-03 21:07
  • 262

poj1287 Networking 最小生成树模板题。prim+kruskal算法AC

You are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible...
  • Lionel_D
  • Lionel_D
  • 2015-03-26 15:09
  • 890
    个人资料
    • 访问:266261次
    • 积分:2712
    • 等级:
    • 排名:第15711名
    • 原创:68篇
    • 转载:7篇
    • 译文:0篇
    • 评论:52条
    文章分类
    最新评论