文章插图
![最小生成树prim算法图解 prim算法求最大生成树](http://img.hubeilong.com/220622/0315464215-0.jpg)
文章插图
最小生成树
假设你是电信的实施工程师,需要为一个镇的九个村庄架设通信网络做设计,村庄位置大致如图,其中V0~V8是村庄,之间连线代表可达距离,数字代表里程数 。领导要求你用最小成本完成这次任务,如何做?
定义
一个连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一个树的n-1条边——我们把构造连通网的最小代价生成树称为最小生成树(Minimum Cost Spanning Tree)
我想在讲算法之前我们先做一下思考,我们如何找到该条路径?
我们是否可以从某一点开始寻找呢?我们从哪一个地点作为起始点呢?我们找到第一个点以后如何找最小权值的边呢?
第一步我想先从概念下手:首先,因为一个连通图含有图中全部顶点,所以我们可以从任意顶点出发(开始寻找),最终结果应该是一致的 。但是为了方便讲述我还是想从V0开始出发(此时我们站在V0) 。
逆着想一下,与V0邻接有且仅有两条边(V0,V1),(V0,V5),我们必须要选一条(因为我们必须要到达V0),所以我们干脆在V0的两条边上选一条到达V0 。
我们站在V0巡视了一下两条边,然后选择了(V0,V1)(此处有判断) 。
第二步但是接下来我们该如何走呢?其实我也很迷茫,既然不知道,那就选当前能走的路的最近的一条吧 。现在我们有两种选择,第一种从V0出发,第二种从V1出发,分别产生的可能性如下(绿色):
普里姆(Prim)算法
【最小生成树prim算法图解 prim算法求最大生成树】在讲之前我们先选一种图的存储结构吧,这里我们用图的邻接矩阵存储结构来讲解 。
由代码中的循环嵌套可得知此算法的时间复杂度为O(N^2) 。
- 艺术字在线字体生成器 艺术字体在线生成器软件下载
- 花草树叶 花草树叶是什么垃圾
- matlab中最小二乘法拟合曲线 matlab曲线拟合的最小二乘法
- 种一棵爱心树综合实践六年级 爱心树是一棵怎样的树
- ico图标生成器 ico图标制作工具下载
- 朴树唱送别是什么节目 朴树唱送别为什么泣不成声?
- 免费记账软件哪个好用电脑版 免费记账软件哪个好用可爱可以生成支票
- matlab求最大值最小值 matlab求函数最大值代码
- 视频压缩大小用什么软件 哪个软件压缩视频最小
- mybatisplus 代码生成 mybatisplus自动生成