关于克鲁斯卡尔算法他是针对边的。而普里姆算法是针对顶点的。

下面还是用普里姆算法的图。

如下:

因此可以构造边集数组。

如下图所示:

代码如下:

int Find(int *parent, int f)
{while( parent[f] > 0 ){f = parent[f];}return f;
}// Kruskal算法生成最小生成树
void MiniSpanTree_Kruskal(MGraph G)
{int i, n, m;Edge edges[MAGEDGE];   // 定义边集数组int parent[MAXVEX];        // 定义parent数组用来判断边与边是否形成环路for( i=0; i < G.numVertexes; i++ ){parent[i] = 0;}for( i=0; i < G.numEdges; i++ ){n = Find(parent, edges[i].begin); // 4 2 0 1 5 3 8 6 6 6 7m = Find(parent, edges[i].end);        // 7 8 1 5 8 7 6 6 6 7 7if( n != m )       // 如果n==m,则形成环路,不满足!{parent[n] = m; // 将此边的结尾顶点放入下标为起点的parent数组中,表示此顶点已经在生成树集合中printf("(%d, %d) %d ", edges[i].begin, edges[i].end, edges[i].weight);}}
}

根据上面的代码,模拟计算机可得:

最后图可的,最小生成树如下:

最小生成树(克鲁斯卡尔算法)相关推荐

  1. 数据结构图之二(最小生成树--克鲁斯卡尔算法)

    [1]克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 克鲁斯卡尔算法是直接以边为目标去构建. 因为权值是在边上,直接去找最小权值的边来构建生成树也是很自然的想 ...

  2. 最小生成树克鲁斯卡尔算法

    文章目录 一.什么是克鲁斯卡尔? 二.原理 三.代码实现 一.什么是克鲁斯卡尔? 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法.与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数) ...

  3. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  4. 最小生成树——克鲁斯卡尔算法

      最小生成树的概念就不说了,本文主要是克鲁斯卡尔算法实现,而且用到了并查集思想.相较于prim算法,克鲁斯卡尔更容易理解:在不形成环的情况下,选取最小的权值边,直到点的个数减一.对于环的判断就使用并 ...

  5. 最小生成树------克鲁斯卡尔算法(数据结构)

    树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树. 生成树是连通图 ...

  6. USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)

    题意 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最 ...

  7. java克鲁斯卡尔算法,最小生成树( 克鲁斯卡尔算法)

    最小生成树( 克鲁斯卡尔算法) /* Name: Copyright: Author: Date: 01-12-14 20:17 Description: 最小生成树( 克鲁斯卡尔算法) 关于并查集的 ...

  8. 最小生成树算法普利姆算法和克鲁斯卡尔算法实现

    最小生成树算法: 普里姆算法:顶点集合N,辅助顶点集合S,初始化中,将出发点vi加入S,并从N中删除 1.从顶点集合N中找到一条到集合S最近的边(vi,vj),存储该边,并将vj从N移到S中 2.重复 ...

  9. 最新生成树之克鲁斯卡尔算法

    基本思想:(1)构造一个只含n个顶点,边集为空的子图.若将图中各个顶点看成一棵树的根节点,则它是一个含有n棵树的森林.(2)从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将 ...

最新文章

  1. 报错解决:InvalidArgumentError: Can not squeeze dim[1], expected a dimension of 1, got
  2. 不知道这些肯定没学过Go语言
  3. 子域名枚举工具Sublist3r
  4. 阿里云免费申请免费SSL证书
  5. Kafka解惑之Old Producer(1)—— Beginning
  6. Oracle WorkFlow(工作流)(一)
  7. 动态规划基础水题提纲
  8. EfficientPS:目前排名第一的高效高精度全景分割算法
  9. 项目部署—移除Spring Boot内置Tomcat,部署到云服务器Tomcat
  10. mysql拉数据到本地_从mysql中dump数据到本地
  11. 数字化医院网络终端安全管理
  12. 【亲测可用】win7下移动硬盘无法访问,拒绝访问位置不可用时的解决方案!
  13. 使用基于全志D1-H的LicheeRV的 86 Panel 与 Tina BSP 实现 RGB 与 SPI 双屏显示
  14. Obsolete特性
  15. 航悦达 HYD-3000 打印机驱动
  16. python并发编程之semaphore(信号量)_python 之 并发编程(守护进程、互斥锁、IPC通信机制)...
  17. iphone开源汇总
  18. 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!
  19. 逆向学习litevm篇
  20. a后缀名是什么格式文件,怎么打开.a文件

热门文章

  1. 3K和3w的月薪的程序员,差别在哪里?
  2. 编译Linux版本飞鸽传书的不完全解决办法
  3. 表妹好奇地问的飞鸽传书
  4. 高级程序员要有动态调整责权和成员工作状况的能力
  5. 女程序员 一直从事着软件研发的工作
  6. Longhorn明年5月完成 微软将推7个版本
  7. 精品书籍-go go go
  8. 如何有效的使用对话框之二
  9. 你当初是如何走上编程之路的?
  10. 七龙珠 |召唤一份单细胞数据库汇总