【图】最小生成树

news2025/1/6 19:48:39

        最小生成树:构造连通网的最小代价生成树。

最小生成树有两种算法:普利姆算法、克鲁斯卡尔算法。

普利姆(Prim)算法

        加点,选择相邻点中边权最小的

需要两个一维数组,一个存权值,另一个存起始点;

初始化数组;n个顶点n-1条边:找权最小的边,更新数组;释放空间。

void Graph::MST_Prim(char v)
{
	/*
	lowwei存储权值,start存储起始顶点
	例如 顶点g(6)-h(7) 权值 为19则表示为
	lowwei[7] = 19
	start[7] = 6
	*/
	int* lowwei = new int[m_NumVertex];
	int* start = new int[m_NumVertex];

	int k = GetVertexIndex(v);//当前顶点的下标
	if (k == -1)
		return;
	//初始化
	int i, j;
	for (i = 0; i < m_NumVertex; ++i)
	{
		if (i == k)
			lowwei[i] = 0;//自己到自己权值为0
		else
		{
			lowwei[i] = m_Edge[k][i];
		}
		start[i] = k;//所有顶点的开始都是当前顶点k
	}
	//生成MST
	int min, min_index;//最小权值、最小权值下标
	for (i = 0; i < m_NumVertex - 1; ++i)
	{
		min = MAX_WEIGHT;
		min_index = -1;
		for (j = 0; j < m_NumVertex; ++j)//找最小权值的边
		{
			if (lowwei[j] != 0 && lowwei[j] < min)
			{
				min = lowwei[j];
				min_index = j;
			}
		}
		//begin = start[min_index]  end = min_index
		cout << m_VertexArr[start[min_index]] << "->" <<
			m_VertexArr[min_index] << ":" << min << endl;//当前权值最小的下标即为要到的顶点

		lowwei[min_index] = 0;//表示此顶点已经被选中
		//从新选中的顶点min_index进行更新lowwei和start
		for (j = 0; j < m_NumVertex; ++j)
		{
			if (lowwei[j] != 0 && m_Edge[min_index][j] < lowwei[j])
			{
				lowwei[j] = m_Edge[min_index][j];
				start[j] = min_index;
			}
		}
	}

	delete[]lowwei;
	delete[]start;
	lowwei = nullptr;
	start = nullptr;
}

克鲁斯卡尔(Kruskal)算法

        加边,选择图中边权最小的,且不能构成一个环。

 

克鲁斯卡尔算法主要针对边展开,边数少时效率高,针对稀疏图优势大;

普利姆算法对于稠密图更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 索引篇

什么是索引&#xff0c;索引就相当于一本书的目录。通过索引可以快速查找到对应的数据。 索引常见面试题&#xff1a; 1. 索引的分类&#xff1a; 按数据结构分类&#xff1a; 按物理存储分类&#xff1a;一般分为聚簇索引&#xff08;主键索引&#xff09;&#xff0c;二级…

【Java EE 初阶】文件操作

目录 1.什么是文件&#xff1f; 1.在cmd中查看指定目录的树形结构语法 2.文件路径 从当前目录开始找到目标程序&#xff08;一个点&#xff09; 返回到上一级目录&#xff0c;再找目标程序&#xff08;两个点&#xff09; 2.Java中文件操作 1.File概述 1.属性 2. 构造…

CENTO OS上的网络安全工具(二十二)Spark HA swarm容器化集群部署

在Hadoop集群swarm部署的基础上&#xff0c;我们更进一步&#xff0c;把Spark也拉进来。相对来说&#xff0c;在Hadoop搞定的情况下&#xff0c;Spark就简单多了。 一、下载Spark 之所以把这件事还要拿出来讲……当然是因为掉过坑。我安装的时候&#xff0c;hadoop是3.3.5&a…

Unity Metaverse(七)、基于环信IM SDK实现的好友系统、私聊、群聊

文章目录 &#x1f388; 简介&#x1f388; 用户管理&#x1f388; 好友管理&#x1f388; 聊天管理&#x1f538; 发送与接收消息&#x1f538; 消息处理消息项的对象池管理 &#x1f388; 简介 在之前的文章中已经介绍了如何接入环信IM Unity SDK&#xff0c;及基于该SDK实现…

使用Python 构建球体/正方体/多面体/兔子/八面体等点云,Open3D可视化及重建

使用Python 构建球体/正方体/多面体/兔子/八面体等点云&#xff0c;Open3D可视化及重建 点云生成8面体点并拟合绘制表面重建结果。&#xff08;官方示例兔子&#xff0c;8面体&#xff0c;多面体&#xff0c;球体&#xff09; 1. 效果图8面体多面体效果图**俩个整8面体效果图**…

学生宿舍信息管理系统

系列文章 任务6 学生宿舍信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试宿舍信息录入宿舍信息浏览查询学生所住宿舍楼号、宿舍号…

WPF MaterialDesign 初学项目实战(6):设计首页(2),设置样式触发器

原项目视频 WPF项目实战合集(2022终结版) 26P 源码地址 WPF项目源码 其他内容 WPF MaterialDesign 初学项目实战&#xff08;0&#xff09;:github 项目Demo运行 WPF MaterialDesign 初学项目实战&#xff08;1&#xff09;首页搭建 WPF MaterialDesign 初学项目实战&…

npm、cnpm、yarn、pnpm区别以及pnpm 是凭什么对 npm 和 yarn 降维打击的

安装 1、安装npm需要安装nodejs&#xff0c;node中自带npm包管理器 node下载地址&#xff1a;node.js 2、cnpm安装&#xff08;需要安装npm&#xff09; cnpm是淘宝团队做的npm镜像&#xff0c;淘宝镜像每 10分钟 进行一次同步以保证尽量与官方服务同步。 npm install -g …

secure CRT 自定义主题

文章目录 如何切换 SecureCRT 主题如何新建SecureCRT 主题如何拷贝我的主题,主题名为pic如何设置 SecureCRT 关键字高亮 如何切换 SecureCRT 主题 SecureCRT 自带主题 选择 options -> Edit Default Session -> Terminal -> Emulation -> Terminal xterm optio…

【Linux】-vim的介绍,教你手把手使用vim

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

一台电脑同时安装多个tomcat服务器教程,window同时安装tomcat7、tomcat8、tomcat9三个服务器教程

一台电脑同时安装多个tomcat服务器 . 介绍 A. 解释为什么有时需要同时安装多个Tomcat服务器 应用程序隔离&#xff1a;当你需要在同一台设备上运行多个独立的应用程序时&#xff0c;每个应用程序可能需要使用不同的Tomcat配置和环境。通过同时安装多个Tomcat服务器&#xff0…

车载以太网 - SomeIP - 协议用例 - Messages_02

目录 13.1、验证SomeIP-SD中订阅报文Subscribe和SubscribeAck中IPv4 Endpoint Option中ServiceID一样

【JAVA进阶】Stream流

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;JAVASE基础 目录 1.Stream流的概述 2.Stream流的获取 3.Stream流的常用方法 1.Stream流的概述 什么是Stream流&#xff1f; 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0…

HNU数据结构与算法分析-作业4-图结构

1. (简答题) 【应用题】11.3 &#xff08;a&#xff09;画出所示图的相邻矩阵表示 &#xff08;b&#xff09;画出所示图的邻接表表示 &#xff08;c&#xff09;如果每一个指针需要4字节&#xff0c;每一项顶点的标号占用2字节&#xff0c;每一条边的权需要2字节&#xff0…

计算机体系结构存储系统

存储系统原理 两种典型的存储系统&#xff1a;Cache存储系统和虚拟存储系统。前者主要目的是提高存储器速度&#xff0c;后者有主存储器和硬盘构成&#xff0c;主要用于扩大存储器容量。 存储系统的访问效率 e T 1 T 1 H ( 1 − H ) T 2 T 1 f ( H , T 2 T 1 ) e\frac{T_…

魔改车钥匙实现远程控车:(4)基于compose和经典蓝牙编写一个控制APP

前言 这篇文章不出意外的话应该是魔改车钥匙系列的最后一篇了&#xff0c;自此我们的魔改计划除了最后的布线和安装外已经全部完成了。 不过由于布线以及安装不属于编程技术范围&#xff0c;且我也是第一次做&#xff0c;就不献丑继续写一篇文章了。 在前面的文章中&#xf…

基于torch实现模型剪枝

一、剪枝分类 所谓模型剪枝&#xff0c;其实是一种从神经网络中移除"不必要"权重或偏差&#xff08;weigths/bias&#xff09;的模型压缩技术。关于什么参数才是“不必要的”&#xff0c;这是一个目前依然在研究的领域。 1.1、非结构化剪枝 非结构化剪枝&#xff08;…

什么是可持续能源?

随着全球经济的不断发展和人口的不断增长&#xff0c;能源问题越来越受到关注。传统能源已经不能满足人们对能源的需求&#xff0c;同时也对环境和健康带来了严重的影响。为了解决这些问题&#xff0c;出现了可持续能源的概念。那么&#xff0c;什么是可持续能源呢&#xff1f;…

逐渐从土里长出来的小花

从土里逐渐长出来的小花&#xff08;这是长出来后的样子&#xff0c;图片压缩了出现了重影~&#xff09; 代码在这里&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&g…

MySQL-索引(2)

本文主要讲解MySQL-索引相关的知识点 联合索引前缀索引覆盖索引索引下推索引的优缺点什么时候适合创建索引,什么时候不适合?如何优化索引 ? 索引失效场景 ? 为什么SQL语句使用了索引,却还是慢查询 ? 使用索引有哪些注意事项 ? InnoDB引擎中的索引策略 目录 联合索引 联合…