当前位置: 首页 > news >正文

最小生成树--Kruskal

文章目录

    • 最小生成树的概念
    • kruskal的算法思想
    • kruskal的代码实现
    • kruskal的代码分析

最小生成树的概念

再将最小生成树前,我们需要知道什么是生成树,生成树即在无向图中的最小连通子图。那么最小生成树呢,就是该子图的权值和最小时的生成树。
性质:有n个顶点的连通图的生成树有n个顶点和n-1条边。

kruskal的算法思想

那么我们要怎么实现这个算法呢,我们可以根据贪心的思想,每次取边权最小的一条边,给它加入生成树中,那么n-1次后,就能构成最小生成树了。那么怎么加入生成树中呢?我们这里可以运用并查集,如果边的祖先相同则说明边已经在生成树中,不同则可以把它加入生成树。

kruskal的代码实现

#include<iostream>
#include<algorithm>
using namespace std;
//带权无向图
typedef struct node {
	int u, v;
	int w;
}Enode;
int n, m;
Enode e[5005];
int f[105];
int find(int x) {
	if (x == f[x]) {
		return x;
	}
	return f[x] = find(f[x]);
}
int sum;
void kruskal() {
	for (int i = 1;i <= n;i++) {
		f[i] = i;
	}
	for (int i = 1;i <= m;i++) {
		int x = e[i].u;
		int y = e[i].v;
		int f1 = find(x);
		int f2 = find(y);
		if (f1 != f2) {
			f[f1] = f2;
			sum += e[i].w;
		}
	}
}
bool cmp(node a,node b) {
	return a.w < b.w;
}
int main() {
	cin >> n >> m;
	int x, y, w;
	
	for (int i = 1;i <= m;i++) {
		cin >> x >> y >> w;
		e[i].u = x;
		e[i].v = y;
		e[i].w = w;
	}
	sort(e + 1, e + 1 + m, cmp);
	kruskal();
	cout << sum;
	return 0;
}

kruskal的代码分析

我们使用kruskal算法使用的是边集数组,其原因是便于排序以及容易实现。而kruskal算法的时间复杂度也是取决于它的排序算法,为 nlogn 。最后把每次边的权值相加就可以算出最小生成树的权值和了。

相关文章:

  • 清华与人大最新研究表明:AGI的到来时间需70年与10^26个参数,好像不用那么急了...
  • 【计算机组成原理】第一章 计算机系统概述
  • 【The Rap of China】2018
  • 数据结构--【栈与队列】笔记
  • 2020CVPR-SiamBAN:用于视觉跟踪的Siamese框自适应网络
  • 【已解决】AttributeError: module ‘numpy‘ has no attribute ‘object‘.
  • Unity Shader学习总结
  • Linux安装升级docker
  • 指针的工作原理,函数的传值和传址
  • 第6届传智杯复赛第一场
  • 代码随想录算法训练营第三十二天(20250228) |509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯 -[补卡20250309]
  • ES Module 的 import 导入和 import () 动态导入
  • Blueprint —— Blueprint Editor(二)
  • 牛客周赛A:84:JAVA
  • 【移动WEB开发】rem适配布局
  • 【Kotlin】Kotlin基础笔记
  • 用python 的 sentiment intensity analyzer的情感分析器,将用户评论进行分类
  • HPC超算系列4——官方指南文档
  • Dify使用日常:我是如何按标题级别将word中的内容转存到excel中的
  • ESP32驱动OV3660摄像头实现EdgeImpulse图像识别(摄像头支持红外夜视、边缘AI计算)
  • 南京网站设计培训价格/腾讯网qq网站
  • 日本做暧暧小视频网站/云南网络推广seo代理公司
  • 网站logo怎么做/百度收录技巧
  • 视频网站做推广有没有效果/深圳市社会组织总会
  • 重庆巴南网站建设/网站策划书模板范文
  • 深圳网站空间/seo网络推广有哪些