数据结构-图论-最小生成树

1.最小生成树的概念

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

性质:

  • 最小生成树可能有多个,但边的权值之和总是唯一且最小的
  • 最小生成树的边数=顶点数-1。砍掉一条则不连通,增加一条边则会出现回路
  • 如果一个连通图本身就是一棵树,则其最小生成树就是它本身
  • 只有连通图才有生成树,非连通图只有生成森林

2.求最小生成树

1.Prim算法

从某一个顶点开始构建生成树;

每次把代价最小的新顶点纳入生成树,直到所有顶点都纳入生成树为止。

eg:从P城开始构建最小生成树

2.kruscal算法

每次选择一条权值最小的边,连通边的两端(原本连通的不选),直到所有顶点都连通

3.总结

算法名称 基本思路 时间复杂度 适用图类型
Prim 算法 (普里姆) 从一个顶点开始,每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。 O(V^2) 边稠密图
Kruskal 算法(克鲁斯卡尔) 每次选择权值最小的边,使这条边的两头连通(原本已连通的边不选),直到所有结点都连通为止。 O(E*log_2E) 边稀疏图
相关推荐
朝朝辞暮i8 小时前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
殷色玫瑰9 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
Evand J9 小时前
【MATLAB例程】三维RRT+APF路径规划与AOA-TDOA融合定位算法。附代码的下载链接
算法·matlab·路径规划·rrt·tdoa·apf·aoa
海绵宝宝转agent10 小时前
leetCode100算法开源笔记分享
笔记·算法
写后端的胖头鱼10 小时前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度
多弗朗皮卡丘10 小时前
数据结构番外:环形队列
数据结构·c
hahaha601610 小时前
黑体轨迹和色温--光源白点
人工智能·嵌入式硬件·算法·计算机视觉
海绵宝宝转agent10 小时前
基于Redis ZSet+AOP+注解实现限流注解算法
数据库·redis·算法
50万马克的面包11 小时前
顺序表和链表_精华知识点_CSDN博客
数据结构·链表
All for pursuit.11 小时前
【回溯-7】494.目标和
数据结构·c++·算法·leetcode