【算法】最小生成树—Prim算法与Kruskal算法

news2024/11/21 0:20:06

Prim算法和Kruskal算法都是解决最小生成树问题的经典算法。最小生成树是原图的最小连通子图,它包含原图的全部结点,且保持图连通的所有边代价和最小。一个连通图可能有多个最小生成树。

一、Prim算法

含义

Prim算法,也被称为普里姆算法,是图论中的一种算法,主要用于在加权连通图中搜索最小生成树。这意味着通过Prim算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。
主要思想:从某个顶点开始,不断选择与当前生成树相连的最小权值的边,将其对应的顶点加入到生成树中,直到所有顶点都加入到生成树中为止

算法步骤

(1)初始状态:U={u0},TE={}。其中,u0是顶点集合 V中的某一个顶点。
(2)在所有u属于U,U属于V-U的边(u,v)属于E中找一条权值最小的边(u0,v0),将这条边加进集合TE中,同时将此边的另一顶点v0并入U。
这一步骤的作用是在边集E里找一条两个顶点分别在集合 U和V-U中且权值最小的边,把这条边添加到边集 TE 中,并把这条边上不在U中的那个顶点加入到U中。
13
(3)如果U=V,则算法结束;否则重复步骤(2)。

图解

在这里插入图片描述

一、Kruskal算法

含义

Kruskal算法是一种用来查找最小生成树的算法,它使用的贪心准则是从剩下的边中选择不会产生环路且具有最小权值的边加入到生成树的边集中。
主要思想:先对图中的所有边按照权值进行从小到大的排序,然后从小到大依次选取边,若这条边连接的两个顶点不在同一个连通分量中,则将其加入生成树中,否则舍弃,直到生成树中包含所有顶点或者所有边都已遍历完

算法步骤

1、将图中的所有边按照权值从小到大进行排序。
2、初始化一个空的最小生成树。
3、依次遍历排序后的边,判断当前边的两个顶点是否在同一个连通分量中。如果不在同一个连通分量中,则将该边加入最小生成树中,并将这两个顶点合并到同一个连通分量中。如果已经在同一个连通分量中,则跳过该边,继续遍历下一条边。
4、重复步骤3,直到最小生成树中包含了所有的顶点,或者所有的边都已经遍历完毕。

图解

在这里插入图片描述

三、Prim算法和Kruskal算法的区别

1、时间复杂度
Prim算法的时间复杂度为O(V^2),其中V为顶点的个数;
而Kruskal算法的时间复杂度为O(ElogE),其中E为边的个数。在E远大于V的情况下,Kruskal算法更加高效。

2、实现方式
Prim算法可以使用邻接矩阵或邻接表来表示图,并且需要使用堆来维护当前生成树与剩余顶点之间的边的权重。
Kruskal算法可以使用并查集来判断加入的边是否形成回路。

3、适用场景
Prim算法适用于稠密图,即边的数量接近于顶点数量的平方;
而Kruskal算法适用于稀疏图,即边的数量接近于顶点数量的线性。

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

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

相关文章

项目解决方案: 实时视频拼接方案介绍

目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…

ESP8266智能家居(3)——单片机数据发送到mqtt服务器

1.主要思想 前期已学习如何用ESP8266连接WIFI,并发送数据到服务器。现在只需要在单片机与nodeMCU之间建立起串口通信,这样单片机就可以将传感器测到的数据:光照,温度,湿度等等传递给8266了,然后8266再对数据…

typescript 的常用方式

文章目录 前言一、绑定props 默认值的方式:withDefaults1.vue2 的props设置默认值2.vue3 的props设置默认值(1) 不设置默认值的写法(2) 设置默认值的写法(分离模式)(3) 设置默认值的写法(组合模式) 二、定义一个二维数…

Qt|QTreewidget类下函数qt助手详解说明示例(上)

该系列持续更新,喜欢请一键三连,感谢各位大佬。 QT5.14.2 参考官方QT助手 文章目录 QTreeWidget ClasspropertiesPublic Functions默认构造函数默认析构函数添加根节点void addTopLevelItem(QTreeWidgetItem *item)添加多个根节点void addTopLevelItems…

Linux Shell脚本练习(一)

一、 Linux下执行Shell脚本的方式: 1、用shell程序执行脚本: a、根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等 b、程序的第一行#!/bin/bash里面指明了shell类型的,比如#!/…

linux查看服务器内核CUP版本相关命令

服务器参考 计算架构:x86-64产品系列:华为云耀云服务器操作系列:CentOS 7 执行uname -a查看服务器内核版本 Linux hecs-82210 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux执行hostn…

Aws Ec2服务器设置密码登录

通过密钥,ssh登录到服务器 切换到root sudo -i开始设置root的新密码 passwd root输入并确认新密码即可 5.修改ssh配置文件 vim /etc/ssh/sshd_config6.重启sshd配置 systemctl restart sshd

关于电脑一天24小时多少度电电脑的一天用电量计算

随着这几年物价的上涨,一些地区的电价越来越高,而我们经常需要使用电脑,那么一台电脑一天24小时用多少度电呢? 如何计算电脑一天的用电量? 让我们跟随小编来了解更多吧。 1、功耗、主机箱功耗 现在的计算机中&#xf…

2000-2022年上市公司绿色专利申请占比/数据

2000-2022年上市公司绿色专利申请占比数据 1、时间:2000-2022年 2、来源:国家知识产权局、WIPO绿色专利清单 3、指标:年份、股票代码、股票简称、行业代码、省份、城市、区县、行政区划代码、城市代码、区县代码、首次上市年份、上市状态、…

广和通发布基于MediaTek T300平台的RedCap模组FM330系列及解决方案

世界移动通信大会MWC 2024期间,广和通发布基于MediaTek T300平台的RedCap模组FM330系列,加速5G-A繁荣发展。FM330系列及其解决方案采用全球先进RedCap方案,满足移动宽带和工业互联对高能效的需求。 广和通FM330系列采用全球首款6nm制程且集成…

什么是回表、索引覆盖、索引下推【重点】

参考链接 【1】https://xiaolincoding.com/mysql/index/index_interview.html#%E6%8C%89%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB 【2】https://www.toutiao.com/article/7095749260137726476/?wid1709192807222 【3】https://zhuanlan.zhihu.com/p/401198674…

压缩式 交换式 碎片整理 :(使碎片减少或没有)

交换式碎片整理 首先流程 是 p3这个程序在运行,p1p2p4 的话在等待 ,然后p3这时要多用3个内存块,这是 p4 通过拷贝,将内存拷贝到磁盘上,对应的数据也是从主存中cp到磁盘此时主存多出3个内存块给p3继续使用 2.压缩式碎片…

请求响应与统一响应结果

1.请求响应 1.安装postman 2.简单的参数 //原始的请求参数的方法RequestMapping("/simoleParam")public String simpleParam(HttpServletRequest request){String name request.getParameter("name");String ageStr request.getParameter("age&quo…

android开发书籍推荐,android面试复习

笼统来说,中年程序员容易被淘汰的原因其实不外乎三点。 1、输出能力已到顶点。这个人奋斗十来年了,依旧碌碌无为,很明显这人的天花板就这样了,说白了,天赋就这样。 2、适应能力越来越差。年纪大,有家庭&…

【Java】基本数据类型、包装类与字符串间的转换 例题

写在前面: 关于这道题,初见感觉有点cpu烧坏了,准确来说是看了网上的一些讲解都感觉不尽人意。自己整理了一下,希望能帮助到大家。 题目: 如下两个题目输出结果相同吗?各是什么。 Object o1 true ? new…

【web APIs】5、(学习笔记)有案例!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、js组成window对象定时器-延迟函数location对象navigator对象histroy对象 二 、本地存储(今日重点)localStorage(重点&am…

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

[MYSQL数据库]--mysql的基础知识

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、数据库…

【力扣白嫖日记】550.游戏玩法分析IV

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 550.游戏玩法分析IV 表&#xff1a;Activity 列名类型player_idintdevice_idintevent_datedategames_played…

分享:大数据信用报告查询的价格一般要多少钱?

现在很多人都开始了解自己的大数据信用了&#xff0c;纷纷去查大数据信用报告&#xff0c;由于大数据信用与人行征信有本质的区别&#xff0c;查询方式和价格都不是固定的&#xff0c;本文就为大家详细讲讲大数据信用报告查询的价格一般要多少钱&#xff0c;希望对你有帮助。 大…