最小生成树基本算法---算法导论读书笔记

本文介绍了最小生成树(Minimum Spanning Tree, MST)的概念及其在最优化问题中的应用,重点关注Kruskal和Prim两种经典算法。Kruskal算法适合稀疏图,Prim算法适用于稠密图,两者都是贪心策略,每步添加安全边。在实际问题中,如考虑全局优化和连通性时,MST是一个有效的解决方案。" 112719533,10293923,图文详情页秒开实践:今日头条白屏优化与性能提升,"['前端开发', '移动开发', '性能优化', 'Android开发', 'iOS开发']
摘要由CSDN通过智能技术生成

    首先谈下对最小生成树(Minimum Spanning Tree, MST)用处的理解,然后给出经典的Kruskal和Prim算法的伪码和理解。


    首先显然它是解决最优化问题的,用的是贪心的思想(于是显然它是非常“优”的了,能用它解决就用它吧)。

    最小生成树是从一个图简化而来,保留所有的(从树的角度来讲是连通图的所有)顶点以及连通性,砍掉尽可能多的边并使得剩下的边权值的和最小(用最短的边保持连通性)。

    映射到现实问题,当我们面对一些有关系的实体(比如一个实体可以导出另一个实体),我们不愿丢掉连通性(砍掉两点之间的边一定是在有其它路径存在的前提下),希望获得最小代价的时候,可以考虑最小生成树。它与单源最短的区别就在于,第一它是全局的一种优化,没有指定的起点,不是针对某个特定的实体对其他的实体关系的问题;第二它多条边组成的路径对两端的点来说未必是最短的,但是它每条边对于两边的集合来说是最短的,单源最短路具有最优子结构,也就是说,单源最短路生成的图中,只要源点不作为中点,任意两点之间的路径一定是最短路。

    最小生成树总的贪心思路是:每一步加入一条安全边。Kruskal和Prim以不同的方式寻找安全边。

    说明一些术语:

        安全边:不妨碍最小生成树边集的一条割的轻边。

        割:把顶点分成两个集合,把相连的边剪掉。宛如一把剪刀。

        不妨碍:A是一个边的集合,A中没有边通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值