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

第六章 图 六、最小生成树(Prim算法、Kruskal算法)

一、定义

对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的最小生成树(Minimum-Spanning-Tree, MST)。

二、手动实现算法

(1)Prim算法

介绍:从某一个顶点开始构建生成树;每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。

时间复杂度:O(\left | V \right |^2),适合用于边稠密图

例子1:

1、我们从P城开始,找到权最小的路径,并构建出新的树。此时最小为1

2、再次寻找权最短的路径,为P城到矿场。

3、如此反复,得到最终结果。

(2)Kruskal算法

介绍:每次选择一条权值最小的边,使这条边的两头连通(原本已经连通的就不选),直到所有结点都连通。

时间复杂度:O(|E|*log2|E|),适合用于边稀疏图

例子2:

1、我们从P城出发,找一条权值最小的边,我们找到学校到P城的路径为1(最短),于是连通它们。

2、再次找最短,找到2,连通它们。

3、反复执行这个操作,直到所有的结点都连通。

http://www.lryc.cn/news/163671.html

相关文章:

  • 机器学习笔记 - 什么是 MLOps?
  • 初阶扫雷(超详解)
  • 计算机视觉CV:1000字总结介绍
  • JavaScript 之 Symbol 数据类型
  • 在Docker中运行PostgreSQL数据库
  • 实现Spring Boot集成MyBatis
  • 关于算法的时间复杂度(度量算法执行时间的两种方法、渐进时间复杂度、时间复杂度的几个性质、渐进估算、常见的渐进时间复杂度排序)
  • SpringBoot项目--电脑商城【显示商品详情功能】
  • VLAN笔记
  • 分类算法系列⑤:决策树
  • 前端面试(基础)
  • element-ui switch开关组件二次封装,添加loading效果,点击时调用接口后改变状态
  • 【GAN小白入门】Semi-Supervised GAN 理论与实战
  • Python自动化测试(1)-自动化测试及基本技术手段概述
  • 小程序中如何查看会员的余额和变更记录
  • 【项目经验】elementui--table表格自定义表头及bug
  • flink实现kafka、doris精准一次说明
  • 【git】git commit、push之前自动执行脚本
  • 基于springboot+vue的加盟店管理系统(前后端分离)
  • Gin中的Cookie和Session的用法
  • 【算法】反悔贪心
  • Hadoop的安装和使用,Windows使用shell命令简单操作HDFS
  • ubuntu上ffmpeg使用framebuffer显示video
  • 82 # koa-bodyparser 中间件的使用以及实现
  • 计算一串输出数字的累加和
  • python包导入原理解析
  • MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)
  • 论文笔记《3D Gaussian Splatting for Real-Time Radiance Field Rendering》
  • 数据库管理系统,数据库,sql的基本介绍以及它们之间的关系
  • 【Flowable】Springboot使用Flowable(一)