最小生成树算法
最小生成树是指在一个图中,由连接所有顶点的边构成的权值之和最小的树,求最小生成树的算法主要有Prim算法及Kruskal算法,此处介绍Prim算法的基本原理。
Prim算法是一种贪心算法,不过可以证明,此算法得到的必定是全局最优解。Prim算法的基本思路如下:
- 将图中的所有顶点分为两个集合,
Known
及Unknown
,初始时任意选择一个顶点放置在Known
中,其余顶点位于Unknown
中,算法的目标是将Unknown
中的所有顶点移至Known
中; - 选择一条边,这条边连接的两个顶点一个位于
Known
中,另一个位于Unknown
中,且这条边的权值是所有满足条件的边中最小的; - 将这条边添加到最小生成树中,并将其连接的那个位于
Unknown
集合中的顶点移至Known
中; - 重复以上两步,直至
Unknown
集合为空;
算法图示:
算法图示
Prim算法的过程与Dijkstra算法很相像,故二者的程序结构也很类似。
在使用邻接表及二叉堆实现时,Prim算法的时间复杂度是
算法的实现代码有空再补上吧……
or 参考: 最小生成树的常用算法模板
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
2020-10-02 Python self用法详解
2020-10-02 2013年 第四届蓝桥杯C/C++ B组(省赛)