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

数据结构——最小(代价)生成树

要解决“连通图中选n−1n-1n1条边连接所有顶点且总权值最小”的问题,最小(代价)生成树是核心工具。它有两种经典算法——Kruskal和Prim,下面分别从思想、过程、代码及细节展开深入讲解。

最小(代价)生成树

连通的带权无向图中,“生成树”是包含所有顶点的极小连通子图(有nnn个顶点,n−1n-1n1条边);“最小生成树”则是总权值(所有边的权值和)最小的生成树,是解决“网络布线、管道铺设”等最小成本问题的关键。

1. Kruskal算法:按边权选边,避环连通

Kruskal算法的核心是“按边权从小到大选边,用并查集避免环”,其设计巧妙利用了“贪心策略”——每次选当前权值最小的边,且保证不形成环,最终得到总权值最小的生成树。

(1)算法思想的深层逻辑

  • 对边排序的目的:确保每次选的是“当前未用边中权值最小的”,这是贪心策略的体现;
  • 并查集的作用:快速判断两条边是否属于“同一连通分量”(若属于,选这条边会形成环,需跳过)。只有连接不同连通分量的边,才能加入生成树,保证生成树的“无环”和“连通”特性。

(2)过程分析的细节补充(结合图6.16)
图6.16中,每条边的选择都伴随着“连通分量的合并”:

  • 初始时,每个顶点都是独立的连通分量,共6个分量;
  • 选边(V1,V3,1)(V_1,V_3,1)(V1,V3,1)后,V1V_1V1V3V_3V3合并为一个分量,剩余5个分量;
  • 选边(V4,V6,2)(V_4,V_6,2)(V4,V6,2)后,V4V_4V4V6V_6V6合并为一个分量,剩余4个分量;
  • 选边(V2,V5,3)(V_2,V_5,3)(V2,V5,3)后,V2V_2V2V5V_5V5合并为一个分量,剩余3个分量;
  • 选边
http://www.dtcms.com/a/511214.html

相关文章:

  • NumPy的hstack函数详细教程
  • 020数据结构之优先队列——算法备赛
  • 华为OD-23届考研-测试面经
  • 阿里云网站建设步骤wordpress防止频繁搜索
  • 西宁网站建设哪家公司好东莞seo网站推广
  • 2025年AI IDE的深度评测与推荐:从单一功能效率转向生态壁垒
  • OSS存储的视频,安卓和PC端浏览器打开正常,苹果端打开不播放,什么原因?
  • Spark的shuffle类型与对比
  • 【 论文精读】VIDM:基于扩散模型的视频生成新范式
  • CentOS 7 安装指定内核版本与切换内核版本
  • Spring MVC 拦截器interceptor
  • 如何在 CentOS、Ubuntu 和 Debian 云服务器上安装 Python 3
  • 《金融电子化》:构建金融韧性运行安全体系:从灾备管理到主动防御新范式​​
  • spark组件-spark core(批处理)
  • 进行网站建设视频教程装修网站cms
  • 解决Kali虚拟机中VMnet1(仅主机模式)网卡无法获取IP地址的问题
  • Linux驱动开发笔记(十一)——阻塞和非阻塞IO
  • Docker----快速入门
  • 深度学习8-卷积神经网络-CNN概述-卷积层-池化层-深度卷积神经网络-案例:服装分类
  • 厦门做外贸网站国内十大咨询公司排名
  • 架构设计过去十年与未来十年
  • Nginx 日志轮转
  • 《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版副本集群》
  • 《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版分片集群》
  • MongoDB基础与Mongoose ODM
  • 做定制网站价格教做flash的网站
  • 【流量控制】算不对 GBN 窗口?分不清 SR 重传?滑动窗口 + 3 大协议一篇吃透
  • 临时插入的紧急任务如何影响整体进度
  • 国内net开发的网站建设网站建设费如何会计处理
  • Melos 使用指南:Flutter / Dart 多包管理工具!