用c语言描述普里姆算法和克鲁斯卡尔算法,克鲁斯卡尔算法+普里姆算法 详解

article/2025/11/10 18:31:03

克鲁斯卡尔算法:

【1】克鲁斯卡尔算法

普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树。

克鲁斯卡尔算法是直接以边为目标去构建。

因为权值是在边上,直接去找最小权值的边来构建生成树也是很自然的想法,只不过构建时要考虑是否会形成环路而已。

此时我们用到了图的存储结构中的边集数组结构。

以下是边集数组结构的定义代码:

0818b9ca8b590ca3270a3433284dd417.png

本算法所用同普里姆算法的实例,我们直接创建图的边集数组。

0818b9ca8b590ca3270a3433284dd417.png

并对边的权值从小到大排序后如下图:

0818b9ca8b590ca3270a3433284dd417.png

【2】克鲁斯卡尔算法及详解

克鲁斯卡尔算法及其详解:

0818b9ca8b590ca3270a3433284dd417.png

鉴于此算法很简单,当 i=0, i=1, i=2时执行结果可以眼观,不再赘述。直接分析重点:

0818b9ca8b590ca3270a3433284dd417.png

此算法的Find函数由边数e决定,时间复杂度为O(loge),而外面有一个for循环e次。

所以克鲁斯卡尔算法的时间复杂度为O(eloge)

对比两个算法:

克鲁斯卡尔算法主要针对边展开,边数少时效率会很高,所以对于稀疏图有优势

而普利姆算法对于稠密图,即边数非常多的情况会好些。

【3】克鲁斯卡尔算法实现

实现代码如下:

/克鲁斯卡尔算法

//在连通网中求出最小生成树

#include

#include

#define MAXEDGE 20

#define MAXVEX 20

#define INFINITY 65535

typedef struct

{

int arc[MAXVEX][MAXVEX];

int numVertexes, numEdges;//顶点数,边数

}MGraph;

typedef struct

{

int begin;

int end;

int weight;

}Edge; //对边集数组Edge结构的定义

//创建图的邻接矩阵

void CreateMGraph(MGraph *G) {

int i, j;

G->numEdges=11;

G->numVertexes=7;

for (i = 0; i < G->numVertexes; i++) {

for ( j = 0; j < G->numVertexes; j++) {

if (i==j)

G->arc[i][j]=0;

else

G->arc[i][j] = G->arc[j][i] = INFINITY;

}


http://chatgpt.dhexx.cn/article/f5hfU6Ga.shtml

相关文章

十大算法之克鲁斯卡尔算法

克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法&#xff0c;是用来求加权连通图的最小生成树的算法。 基本思想&#xff1a;按照权值从小到大的顺序选择n-1条边&#xff0c;并保证这n-1条边不构成回路 具体做法&#xff1a;首先构造一个只含n个顶点的森林&#xff0c;然后依权值…

0096 克鲁斯卡尔算法,迪杰斯特拉算法

/* * 克鲁斯卡尔算法 * 1.用来求加权连通图的最小生成树的算法 * 2.思想&#xff1a;按照权值从小到大的顺序&#xff0c;选择n-1条边&#xff0c;并保证这n-1条边不构成回路 * 3.先构造一个只含n个顶点的森林&#xff0c;依权值从小到大从连通网中选择边加入到森林中 * …

普里姆 克鲁斯卡尔算法

一.简介 连通图&#xff1a;任意2节点之间都有路径相通 最小生成树&#xff1a;最小权重生成树 一个 n 结点的连通图的生成树是原图的极小连通子图&#xff0c;且包含原图中的所有 n 个结点&#xff0c;并且有保持图连通的最少的边&#xff08;n-1&#xff09;。 最小生成树可…

c语言克鲁斯卡尔算法

克鲁斯卡尔思路以及代码分析 我们用邻接矩阵来表示该图&#xff0c;克鲁斯卡尔算法思想及找到最小边&#xff0c;查看是否形成回路&#xff0c;若形成回路则这条边不形成&#xff0c;若不形成回路则构成最小路径&#xff0c;以此类推。&#xff08;思路和代码都在下方&#xff…

了解克鲁斯卡尔算法

文章目录 Kruskal算法如何工作Kruskal算法的示例Kruskal算法伪代码C示例Kruskal算法 vs Prim算法Kruskal算法的复杂度Kruskal算法的应用参考文档 在本教程中&#xff0c;您将学习Kruskal算法如何工作。此外&#xff0c;您还将找到C语言的示例。     Kruskal算法是一种最小生…

克鲁斯卡尔算法

什么是克鲁斯卡尔算法 在知道克鲁斯卡尔算法之前我们先来看一下什么是最小生成树。 最小生成树&#xff1a;在一个有n个结点的无向图中选出最少的边&#xff0c;保证所选边权相加之和最小以及该图中依然有n个结点并且n个结点连通。一共有n个结点&#xff0c;要保证连通&#…

Kruskal算法(克鲁斯卡尔算法)

Kruskal算法 Kruskal算法是一种用来查找最小生成树的算法&#xff0c;由Joseph Kruskal在1956年发表。用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪心算法的应用。 概念解释 Kruskal算法定义&#xff1a;**先构造一个只含 n 个顶点、而边集为空的子图&…

KruskalAlgorithm(克鲁斯卡尔算法)

KruskalAlgorithm介绍 克鲁斯卡尔(Kruskal)算法&#xff0c;是用来求加权连通图的最小生成树的算法。基本思想&#xff1a;按照权值从小到大的顺序选择 n-1 条边&#xff0c;并保证这 n-1 条边不构成回路具体做法&#xff1a;首先构造一个只含 n 个顶点的森林&#xff0c;然后…

数据结构——克鲁斯卡尔(Kruskal)算法

克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。与普里姆算法不同&#xff0c;它的时间复杂度为O&#xff08;eloge&#xff09;&#xff08;e为边数&#xff09;&#xff0c;适合于求边稀疏的网的最小生成树 。克鲁斯卡尔算法从另一途径求网的最小生成树。其基本思想是&a…

克鲁斯卡尔(Kruskal)算法(严蔚敏C语言)

克鲁斯卡尔算法(Kruskal) ​ 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。与普里姆算法不同&#xff0c;它的时间复杂度为O&#xff08;eloge&#xff09;&#xff08;e为网中的边数&#xff09;&#xff0c;所以&#xff0c;适合于求边稀疏的网的最小生成树 。 ——百…

4.《学会提问》

1.书中的观点 批判性思维会教你很多技能和态度&#xff0c;让你理性地找到对自己有意义的答案并为此感到自豪。批判性思维鼓励你倾听他人&#xff0c;向别人学习&#xff0c;同时掂量别人所说的话&#xff0c;看看它们的分量如何。如此&#xff0c;你将了解到我们必须要依赖他人…

如何提问——提问的艺术

转存失败重新上传取消https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

《提问的艺术》读书笔记

分享读《提问的艺术》的xmind总结&#xff0c;每周听一本书&#xff0c;打卡第一周

(转载) 提问的艺术

虽然这是老话常谈&#xff0c;但是最近的回答问题的过程中&#xff0c;有点感触。你问题问的好&#xff0c;问的准确&#xff0c;回答你的人才有积极性给你答复&#xff0c;这样你又可以更快的解决你的问题。好多人不知道如何提问&#xff0c;所以我打算把这篇老文章转过来置顶…

论程序员提问的艺术

最近工作比较忙&#xff0c;加上空闲时间大部分都是在维护开发【云狗AI】&#xff0c;所以也有一段时间没更新视频了&#xff0c;有不懂的&#xff0c;也可以问一下【云狗AI】以后我也会花更多的时间在维护这个项目中。争取给大家带来更好的体验。 主要是因为最近没发现什么特…

提问的艺术[转]

这是刚看到的 所以转一下 也是警示自己的伸手行为 原文&#xff1a;How To Ask Questions The Smart Way 译文链接&#xff1a;提问的艺术 作者&#xff1a; 艾瑞克.史蒂文.雷蒙德(Eric Steven Raymond) <esrthyrsus.com> 瑞克.莫恩(Rick Moen) <respond-autolinuxmaf…

【提问的艺术】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

提问的艺术/怎么高效的提问

唉,可能是因为见过的人多了吧,不管是在现实世界中,还是在网络上,总是需要向别人询问一些东西的, 有的人来问,谦谦有礼,感觉很好,帮助了别人,也没损失什么,有的人来问,就是真心不想搭理他,搭理了他就是 浪费自己的时间,还心理不好受的. 今天不说现实中怎么提问.就说在互联网上.…

《提问的艺术》读后感

前言提问前 他明明能帮到我却不帮我提问前必知必会的一些事关于搜索引擎 提问时 找准对象学会停顿组织你的问题清晰的发问低声下气代替不了做自己的家庭作业删除无意义的要求不要把问题标记为紧急 即使对你而言的确如此礼貌总是有益的对待无礼提问禁区 总结 前言 众所周知&am…

提问的艺术,原文链接

你提的问题没有任何有用的信息&#xff0c;u hava a poop。 提问的艺术 今天在拉屎的时候看到QQ群里有人问问题&#xff0c;那个问题太他妈蠢了&#xff0c;所以我就写了这一片博客&#xff0c;如果再有人问愚蠢的问题我就把这篇博客丢给他。 提问的艺术 原文链接&#xff…