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

Prim算法

假设无向图中有n个顶点,那我们总共需循环n-1次,找到n-1条变加入到最小生成树当中
开始任意选择一个结点加入到最小生成树中,并将非生成树中的所有顶点与生成树中的顶点的距离设置为Max最大值(因为此时这些结点还没有加入到最小生成树中,因此两树之间的距离是无穷大的)

接下来就是Prim算法的核心步骤:
1.找非生成树距离最小生成树的最近节点
2.将这个节点加入到最小生成树当中
3.更新所有非生成树节点到最小生成树的距离(随着新节点的加入,非生成树节点到最小生成树节点的距离会更新,将这个距离更新成距离最小生成树的最近距离,因为非最小生成树节点与生成树中的多个节点可能都有连接,因此这个节点到最小生成树的距离可能不止一个,我们将这个距离更新成最小的那个)

接下来对上面三个步骤进行重复,我们用一个数组来存放非生成树到最小生成树的距离,用一个数组来存放最小生成树中的边权,并给已经放入最小生成树的节点赋值做上标记,由于第二步中有新节点的加入,并且我们在第三步时更新了非生成树到最小生成树的距离,所以我们又能执行第一步,在第三步更新的数组中把最小距离的节点再次加入到最小生成树中,然后继续更新,继续查数组,继续加入到生成树中

最后我们得到n-1最小权值和的边,称为最小生成树,最小生成树的应用之一是:我们需要在n个城市之间铺路,求怎样铺路可以将所有城市连接起来的同时铺路费最小。这时毫无疑问,我们肯定只会铺n-1条路,因为n-1条路就能将n个城市连接起来了。Prim算法的核心在于通过求最小生成树求出最小铺路费

以下是Prim算法的C语言实现:

http://www.jsqmd.com/news/487224/

相关文章:

  • Python自动化神器DrissionPage:5分钟搞定网页登录+数据采集(附完整代码)
  • Pandas数据分析:如何用describe()快速掌握数据分布(附实战案例)
  • 影墨·今颜在小红书内容创作中的落地应用:时尚博主实操案例
  • Buck变换器设计实战:从基础原理到关键元件选型
  • 孩子科学课听不懂?选对学习软件,轻松跟上课堂节奏 - 品牌测评鉴赏家
  • Z-Image-Turbo应用实战:快速生成电商海报与社交媒体配图
  • EcomGPT-7B电商模型跨平台集成:.NET Core后端服务开发指南
  • 颠覆性图层导出革新:Photoshop-Export-Layers-to-Files-Fast开源工具效率优化指南
  • Lingbot-Depth-Pretrain-ViTL-14与Dify集成:打造可视化深度估计工作流
  • Python项目跨年必备:chinesecalendar报错解决方案与2024年兼容性升级指南
  • Rust新手避坑指南:Windows+VSCode环境搭建中的5个常见问题及解决方法
  • Conqui TTS 实战:如何优化语音合成服务的响应效率与资源消耗
  • Llava-v1.6-7b模型基准测试:性能评估全攻略
  • 从开发到灾备:一文读懂软件部署的六大关键环境
  • TreeChart组件:基于Vue.js构建企业级层级数据可视化的实践指南
  • POE供电避坑指南:为什么你的网络摄像头老是掉线?可能是这些细节没注意
  • LD2410雷达传感器实战指南:从原理到场景落地全解析
  • YOLO12开源可部署:GitHub模型权重+Dockerfile完整发布说明
  • 从代码到架构:程序员认知升级指南
  • 大青云单机版从零搭建到GM权限管理全攻略
  • 【模电】运算放大器实战指南:从基础电路到典型应用
  • SDXL 1.0质量评估:SSIM与PSNR算法实现
  • 在麒麟系统上利用Rider与Avalonia打造高效C#桌面开发环境
  • 为什么 90 年代游戏的关卡设计更好
  • 复盘与导出工具V8.7版本升级指南:同花顺龙虎榜+市场情绪功能详解
  • 立创STC小工具开发板硬件全解析:从STC32G核心到隔离CAN的模块化设计
  • 315曝光AI投毒!用C#构建GEO污染检测与数据安全防护方案
  • 2024秋叶大佬Lora模型训练一键包:从零开始的安装与配置指南
  • 2023西电网课项目管理第一章课后习题全解析(附详细答案)
  • GTC炸场!C#集成NemoClaw企业级Agent实战教程