算法(读书笔记):4.3最小生成树
2016-04-16 15:21
225 查看
加权图是一种为每条边关联一个权值或是成本的图模型。
最小生成树。给定一副加权无向图,找出它的一颗最小生成树。
定义:图的最小生成树是它的一副含有其所有顶点的无环连通子图。一副加权图的最小生成树(MST)是它的一颗权值(树种所有边的权值之和)最小的生成树。
一些约定:
1.只考虑连通图
2.边的权重不一定代表距离
3.边的权重可能是0或者负数
4.所有边的权重都各不相同。如果不同边的权重可以相同,最小生成树就不一定唯一了。存在多颗最小生成树的可能性会使部分算法的证明变得更加复杂。
命题J(切分定理):在一副加权图中,给定任意的切分,它的横切边中的权重最小者必然属于图中的最小生成树。
切分定理是解决最小生成树问题的所有算法的基础。更确切的说,这些算法都是贪心算法的特殊情况:使用切分定理找到最小生成树的一条边,不断重复直到找到最小生成树的所有边。
命题K(最小生成树的贪心算法):将含有V个顶点的任意加权连通图中属于最小生成树的边标记为黑色:初始状态下所有边均为灰色,找到一种切分,它产生的横切边均不为黑色。将它权重最小的横切边标记为黑色。反复,直到标记了V-1条黑色边为止。
最小生成树。给定一副加权无向图,找出它的一颗最小生成树。
定义:图的最小生成树是它的一副含有其所有顶点的无环连通子图。一副加权图的最小生成树(MST)是它的一颗权值(树种所有边的权值之和)最小的生成树。
一些约定:
1.只考虑连通图
2.边的权重不一定代表距离
3.边的权重可能是0或者负数
4.所有边的权重都各不相同。如果不同边的权重可以相同,最小生成树就不一定唯一了。存在多颗最小生成树的可能性会使部分算法的证明变得更加复杂。
命题J(切分定理):在一副加权图中,给定任意的切分,它的横切边中的权重最小者必然属于图中的最小生成树。
切分定理是解决最小生成树问题的所有算法的基础。更确切的说,这些算法都是贪心算法的特殊情况:使用切分定理找到最小生成树的一条边,不断重复直到找到最小生成树的所有边。
命题K(最小生成树的贪心算法):将含有V个顶点的任意加权连通图中属于最小生成树的边标记为黑色:初始状态下所有边均为灰色,找到一种切分,它产生的横切边均不为黑色。将它权重最小的横切边标记为黑色。反复,直到标记了V-1条黑色边为止。
相关文章推荐
- 只需十分钟,结果大不同 |《深度思考》
- 《洋葱阅读法》读书笔记
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析