图的应用--Prim算法

2023-11-15

图的应用–Prim算法

Prim算法是一种基于顶点的贪心算法,从起始顶点出发,每次迭代选择当前可用的最小权值边,然后把边上依附的其他顶点加入最小生成树。prim算法可以称为“加点法”,比较适合稠密图
算法思想:
设G=(V, E)是一个加权连通图(连通网),T = (U, TE)是G的一棵最小生成树。TE是G上最小生成树边的集合
(1)最小生成树T的初始状态为U={u0}(u0∈V),TE={},此时图中只有一个起始顶点,边集为空。
在这里插入图片描述
***第一步:***生成树初态 U = {V1} V-U = {V2, V3, V4, V5, V6} TE = {}

(2)在所有u∈U,v∈V-U的边中找一条代价最小的边(u, v),把边(u, v)并入生成树的边集TE中,同时v并入生成树的顶点集U中
在这里插入图片描述
***第二步:***选择边(V1, V3, 1),顶点V3并入U集合中 U={V1, V3} V-U = {V2, V4, V5, V6} TE = {(0, 2, 1)}

(3)重复执行步骤(2),直至U=V为止。此时,TE中必有n-1条边,T=(U,TE)为G的最小生成树,每一次新加顶点后,观察此时每个顶点的邻接点,选择邻接点权值最小的那个加入
在这里插入图片描述
***第三步:***选择边{V3, V6, 4},顶点V6并入U集合中 U = {V1, V3, V6} V-U = {V2, V4, V5} TE = {(0, 2, 1),(2, 5, 4)}

在这里插入图片描述
***第四步:***选择边{V6, V4, 2},顶点V4并入U集合中 U = {V1, V3, V6, V4} V-U = {V2, V5} TE = {(0, 2, 1),(2, 5, 4), (5, 3, 2)}

在这里插入图片描述
***第五步:***选择边{V3, V2, 5},顶点V2并入U集合中 U={V1, V3, V4, V2} V-U = {V5} TE = {(0, 2, 1),(2, 5, 4), (5, 3, 2),(2, 1, 5)}

在这里插入图片描述
***第六步:***选择边{V2, V5, 3},顶点V5并入U集合中 U={V1, V3, V4, V2, V5} U=v TE = {(0, 2, 1),(2, 5, 4), (5, 3, 2),(2, 1, 5), (1, 4, 3)},结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图的应用--Prim算法 的相关文章

  • LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)

    目录 1038 从二叉搜索树到更大和树 题目描述 实现代码与解析 dfs 原理思路 1038 从二叉搜索树到更大和树 题目描述 给定一个二叉搜索树 root BST 请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和 提醒一
  • 算法题-简单系列-03-判断链表中是否有环

    文章目录 1 题目 1 1 思路1 双指针 1 2 思路2 哈希表 1 题目 判断给定的链表中是否有环 如果有环则返回true 否则返回false 1 1 思路1 双指针 我们使用两个指针 fast 与 slow 它们起始都位于链表的头部
  • 算法题-简单系列-06-删除有序链表中重复的元素

    文章目录 1 题目 1 1 循环遍历 1 题目 1 1 循环遍历 既然连续相同的元素只留下一个 我们留下哪一个最好呢 当然是遇到的第一个元素了 因为第一个元素直接就与前面的链表节点连接好了 前面就不用管了 只需要跳过后面重复的元素 连接第一
  • 牛客网(二叉树)

    这个题目和leetcode比起来就是有一些不一样 需要我们自己来写接口函数 所以有一些麻烦 我们得写一个中序遍历的函数做最后的输出 也得写一个函数来存储字符进去 还得写一个接口函数来创造节点 这个题目就和二叉树如何创造节点很相似 我们一个一
  • C/C++查找算法-----------------------二分查找详解

    二分查找 定义 实例 定义 二分查找也称折半查找 搜索过程从数组的中间元素开始 如果中间元素正好是要查找的元素 则搜索过程结束 如果某一特定元素大于或者小于中间元素 则在数组大于或小于中间元素的那一半中查找 而且跟开始一样从中间元素开始比较
  • 二叉树(接口函数的实现)

    今天继续来分享的是二叉树 我们废话不多说 直接来看下面的几个接口函数 然后我们把他们实现 我们就掌握二叉树的二分之一 今天粉丝破千了 属实有点高兴了 typedef char BTDataType typedef struct Binary
  • 【数据结构】单链表的定义和操作

    目录 1 单链表的定义 2 单链表的创建和初始化 3 单链表的插入节点操作 4 单链表的删除节点操作 5 单链表的查找节点操作 6 单链表的更新节点操作 7 完整代码 嗨 我是 Filotimo 很高兴与大家相识 希望我的博客能对你有所帮助
  • 每日一练2023.12.17——大笨钟的心情【PTA】

    题目链接 L1 077 大笨钟的心情 题目要求 有网友问 未来还会有更多大笨钟题吗 笨钟回复说 看心情 本题就请你替大笨钟写一个程序 根据心情自动输出回答 输入格式 输入在一行中给出 24 个 0 100 区间内的整数 依次代表大笨钟在一天
  • 数据结构 数组与字符串

    介绍 数组的基础 定义和声明 基本定义 在C语言中 数组可以被定义为一系列相同类型的元素的集合 每个元素在内存中连续排列 可以通过索引 通常是从0开始的整数 来访问 数组的声明 数组在C语言中的声明包括元素类型 数组名和大小 例如 声明一个
  • Redis 底层数据结构

    在 Redis数据结构和对象机制 中提到的图中 我们知道 可以通过 redisObject 对象的 type 和 encoding 属性 可以决定Redis 主要的底层数据结构 SDS QuickList ZipList HashTable
  • 【华为OD】给定一个整数数组nums,请你在该数组中找出两个数,使得这两个数 的和的绝对值abs(nums[x] + nums[y])为最小值并按从小到大返回这 两个数以及它们和的绝对值

    题目描述 给定一个整数数组nums 请你在该数组中找出两个数 使得这两个数 的和的绝对值abs nums x nums y 为最小值并按从小到大返回这 两个数以及它们和的绝对值 每种输入只会对应一个答案 数组中同一 个元素不能使用两遍 输入
  • 面试150-13(Leetcode238除自身以外数组的乘积)

    代码 class Solution public int productExceptSelf int nums int n nums length int res new int n int product 1 int zerocnt 0
  • Leetcode 45 跳跃游戏 II

    题意理解 给定一个长度为 n 的 0 索引 整数数组 nums 初始位置为 nums 0 每个元素 nums i 表示从索引 i 向前跳转的最大长度 还是从初始坐标i 0的位置到达最后一个元素 但是问题不是能不能跳到 而是 最少几步能跳到最
  • 【每日一题】2397. 被列覆盖的最多行数-2024.1.4

    题目 2397 被列覆盖的最多行数 给你一个下标从 0 开始 大小为 m x n 的二进制矩阵 matrix 另给你一个整数 numSelect 表示你必须从 matrix 中选择的 不同 列的数量 如果一行中所有的 1 都被你选中的列所覆
  • 【每日一题】2397. 被列覆盖的最多行数-2024.1.4

    题目 2397 被列覆盖的最多行数 给你一个下标从 0 开始 大小为 m x n 的二进制矩阵 matrix 另给你一个整数 numSelect 表示你必须从 matrix 中选择的 不同 列的数量 如果一行中所有的 1 都被你选中的列所覆
  • 【数据结构和算法】小行星碰撞

    其他系列文章导航 Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一 题目描述 二 题解 2 1 什么情况会用到栈 2 2 方法一 模拟 栈 三 代码 3 1
  • 排序:计数排序

    一 概念 计数排序是非比较排序 是对哈希直接定址法的变形应用 二 思想 利用数组统计相同数据出现的次数 例如整型数据m出现n次 就在数组m位置记录数据为n 最后从头遍历数组打印数据即可 通俗来讲就是 数组下标即为数据 下标所指位置的值即为数
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next
  • 矩阵基本操作3

    题目描述 问题描述 定义一个N M N M lt 100 的矩阵 将一个该矩阵的行和列的元素互换 存到另一个二维数组中 输入格式 一行两个整数 N M 中间用空格隔开 表示矩阵有N行 M列 接下来共N行M列表示矩阵 输出格式 输出转置以后的
  • 高精度运算合集,加减乘除,快速幂,详细代码,OJ链接

    文章目录 零 前言 一 加法 高精度加法步骤 P1601 A B 二 减法 高精度减法步骤

随机推荐

  • 前端这一刻我悟了

    早上没事 在回顾react的时候 突然悟了 发现vue 还是react组件化开发 父组件套子组件 父子组件之间相互通信 写页面样式 逻辑 发送服务器请求 学习主要学的是语法 这些语法写个两三遍就都会了 还真是代码搬运工 再就是代码写的漂亮点
  • vue项目中Echarts图表完整引入、按需加载以及修改主题色

    一 完整引入Echarts 下载安装echarts包 npm install echarts S or yarn add echarts 定义图表显示的容器 并进行渲染
  • 项目资源管理

    目录 申明 1 核心概念 2 虚拟团队 分布式团队 3 规划质量管理 3 1 1 输入 3 1 2 工具和技术 3 1 2 1 责任分配矩阵 3 1 3 输出 4 估算活动资源 4 1 1 输入 4 1 2 工具与技术 4 1 3 输出 4
  • git常用操作指令手册、持续更新....

    一 拉取远程代码到本地流程 1 新建文件夹 git bash here 初始化本地仓库 git init 2 和远程仓库建立连接 git remote add origin 远程地址 3 获取远程分支最新状态 git fetch origi
  • gitee删除远程仓库

    1 登录自己的gitee 2 点击仓库进行选择要删除的仓库 4 进入要删除的仓库 5 在导航栏中点击管理 强调在导航中就有了 6 在左侧的仓库设置中 再点击删除仓库 右侧删除仓库的内容浮现 7 点击删除仓库 点击确认删除 要记得输入gite
  • 【Python 1-7】Python手把手教程之——详解列表List

    列表 作者 弗拉德 来源 弗拉德 公众号 fulade me 列表 在其他语言中又被称为数组 是由一系列按特定顺序排列的元素组成 你可以创建包含字母表中所有字母 数字0 9或所有家庭成员姓名的列表 你也可以创建几个列表 把这几个列表又放在一
  • qvboxlayout布局背景色怎么设置_QT开发(二十一)——QT布局管理器

    一 布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化 QT中提供了对界面组件进行布局管理的类 用于对界面组件进行管理 能够自动排列窗口中的界面组件 窗口大小变化后自动更新界面组件的大小 QLayout是QT中布局管理器的抽象
  • 西门子200SMART笔记

    第一章 PLC概述 上位机 控件库 HslControls SunnyUI 初级课程 传感器接线方式 棕色 BN 蓝色 BL 黑色 BK 信号线 NPN型 1M M 接 24V PNP型 1M M 接 0V PLC输出接线 电路图 gt 梯
  • 部队脱文档水印软件_网上下载的Word文档有水印?4种方法教你快速去水印!!...

    Hello 各位叨友们好呀 我是叨叨君 我们在网上查找资料下载文档的时候 经常会遇到一些带有水印的文件 那么该怎么把水印去除呢 今天就教大家如何快速去除Word PDF文件中的水印 方法一 设置无水印 打开word文档 点击 设计 工具 再
  • Jquery中$(function(){})

    1 在哪书写js文件 如果我们要执行一段js代码 我们该怎么办呢 1 我们可以写一个js文件 在js文件里写执行函数 然后再 进行引用 2 我们可以直接在HTML页面下 插入脚本 同样是 两种方式没什么区别 唯一的区别就是程序的解耦 所以当
  • 接口测试 —— Requests库GET请求

    Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求 不带参数的GET请求请看上一篇文章的练习 1 Requests库待参数的GET请求 使用Get方法带参数请求时 是params 参数字典 而不是data 参
  • new出的对象数组必须要用delete[]删除,而普通数组和结构数组delete和delete[]都一样

    为何new出的对象数组必须要用delete 删除 而普通数组delete和delete 都一样 CrtMemBlockHeader 温馨提示 该文所有测试没有特殊说明都是在Debug模式下 用的是VS2010编译器
  • JavaScript的数组塌陷

    关注微信公众号 大前端私房菜 回复暗号 面试宝典 即可免费领取107页前端面试题 什么是数组塌陷 当数组执行删除单元操作时 被删除单元 之后的单元 会前移 进而顶替被删除单元 出现在被删除单元的位置上 造成数组长度减少的情况 这样的现象称为
  • 修改Intelij IDEA的maven下载地址为国内阿里云镜像

    1 win7环境 默认情况下在用户目录的 m2下自己新建setting文件 m2 settings xml 2 settings xml文件内容为 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 【数学建模】2023 深圳杯 & 东三省 数学建模 B 题 :电子资源版权保护问题(含源代码 & 最终论文)

    文章目录 一 题目介绍 二 问题的解答 2 1 问题一 2 1 1 图像的预处理 2 1 2 LSB的方法 stegano库测试 2 1 3 LSB 方法建模 2 2 问题二 2 3 问题三 2 3 1 方法与步骤概述 2 3 2 基于DC
  • Python的编码风格是怎么样的?核心要点有这些

    Python因为其简洁明了的编码风格和以缩进划分作用域的规则让其在编码时对风格的统一是有非常严格的要求的 下文就将详细说明python的编码风格是怎么样的 现在你将要写更长 更复杂Python代码 是时候讨论一下代码风格了 大多数语言都能以
  • 【学习笔记】经典目标检测算法

    定义 目标检测任务的目标是找到图像中的所有感兴趣区域 并确定这些区域的位置和类别 目标检测领域的深度学习方法主要分为两大类 两阶段式 Two stage 目标检测算法和单阶段式 One stage 目标检测算法 两步模型有独立地 显式地提取
  • 7-19 支票面额 (15分)

    7 19 支票面额 15分 一个采购员去银行兑换一张y元f分的支票 结果出纳员错给了f元y分 采购员用去了n分之后才发觉有错 于是清点了余额尚有2y元2f分 问该支票面额是多少 输入格式 输入在一行中给出小于100的正整数n 输出格式 在一
  • 华硕天选一代无线网卡断网

    问题描述 本人笔记本是华硕天选1 型号为FA506IV 最近无线网卡经常断开 重连就显示无法连接网络 关闭WLAN再重开 发现一个网络都搜不到 打开任务管理器 查看性能一栏 WLAN这个选项没有了 打开设备管理器 查看网络适配器 Realt
  • 图的应用--Prim算法

    图的应用 Prim算法 Prim算法是一种基于顶点的贪心算法 从起始顶点出发 每次迭代选择当前可用的最小权值边 然后把边上依附的其他顶点加入最小生成树 prim算法可以称为 加点法 比较适合稠密图 算法思想 设G V E 是一个加权连通图