最小生成树
来源:互联网 发布:win10自动下载软件 编辑:程序博客网 时间:2024/05/21 08:05
安全边
Prim算法
MST-PRIM(G,w,r) for each u belong to G.V u.key = oo u.p = NIL r.key = 0 Q = G.V while Q != null u = EXTRACT-MIN(Q) for each v belong to G.Adj[u] if v belong to Q and w(u,v) < v.key v.p = u v.key = w(u,v)
Q中存储图G的节点,每个节点有两个属性,v.key表示与v相连的边的最小权重,v.p表示最小权重的边的另一个节点(也是最小生成树中的父节点)
Prim算法的运行时间取决于最小优先队列Q的实现
普通二叉堆,前五行初始化操作时间建堆\(O(V)\)
while循环执行\(V\)次,EXTRACT-MIN操作花费\(O(log_2(V))\)->\(O(Vlog_2(V))\)
for循环一共执行\(2E\)次,v.key=w(u,v)隐含一个DECREASE-KEY操作花费\(O(log_2(V))\)->\(O(Elog_2(V))\)
所以总的时间代价为\(O(V + Vlog_2(V) + Elog_2(V))=O(Elog_2(V))\)
如果使用斐波那契堆,EXTRACT-MIN的摊还代价为\(O(log_2(V))\),DEVREASE-KEY的摊还代价为\(O(1)\),所以总的代价为\(O(E + Vlog_2(V))\)
适用于稠密图
Kruskal算法
以边为主,每次加入的边都是权重最小的,但是这条边不能在一个点集内
用到了不相交集合的内容
MST-KRUSKAL(G,w) A = null for each vertex v belong to G.V MAKE-SET(v) sort the edges of G.E into nondecreaseing order by weight w for each edge(u,v) belong to G.E ,taken in nondecreasing order by weight if FIND-SET(u) != FIND-SET(v) A = A + (u,v) UNION(u,v) return A
算法运行时间依赖于不相交集合数据结构的实现方式。
0 0
- 最小比例 最小生成树
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树问题
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- jquery input change事件解决方案
- RAML介绍
- socket.io 入门教程
- 用于不相交集合的数据结构
- Delphi实现数据库查询编辑功能
- 最小生成树
- matlab faster-rcnn 的caffe的external(gpu/cpu)
- DataTable的查询与排序
- Number.prototype.toDecimal方法实现
- Zookeeper监控的原理
- 关于设置了setMaxAge(0)而浏览器未成功删除Cookie的注意事项
- 利用spring session解决共享Session问题
- 利用Java自带的MD5加密
- leanote 2.2.1 正式版发布,个人云笔记