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

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) 边稀疏图
相关推荐
应用市场5 分钟前
红绿灯背后的算法:从 Webster 配时到 Max-Pressure 与强化学习
算法
木井巳15 分钟前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
灵枢时代2 小时前
小程序在生鲜配送行业,如何设计夜间预约和次日达的订单处理流程?
数据结构·人工智能·小程序
June`2 小时前
常量内存和只读缓存
c++·人工智能·算法·cuda
一条大祥脚2 小时前
ABC468 扫描线|贡献法|二阶差分|线段树优化DP
数据结构·算法
happyprince2 小时前
篇2-bitsandbytes-具体观-算法与实现剖析
算法
普通攻击往后拉12 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
@syh.13 小时前
【贪心】矩阵消除游戏
算法·游戏·矩阵
可编程芯片开发13 小时前
基于零极点配置的PID控制系统simulink建模与仿真
算法