union find并查集 (algorithm course Of Princeton )
来源:互联网 发布:最贵的域名 编辑:程序博客网 时间:2024/05/02 02:03
Week 1
第一周:unionfind problem (并查集问题)
解决动态连接问题
目标:
Quick find 算法 解决动态连接问题
解释:
快速查找算法思想是用一个数组来代表可能的节点,如果两个不同下标中的值相同的话则说明两个点相连,如果拥有不同的id,说明他们不相连。
分析:
Union 操作是个耗时的操作,如果对 N 个元素执行 N 次 union 操作,数组访问次数就是 N^2 次,当N变得很大的时候,效率会很差
Quick find方法对于union find问题太慢了
方法2:quick union
解释:
用数组来抽象表示树形结构。
id[i]表示的就是i的父亲节点
判断是否联通:比较他们是否有相同的root
Union(a,b):将a的root 设置为id[b]的值即可
算法分析:
当树非常高的时候耗时也是非常高的
Find操作耗时比较多 最高可以到N 全部是左树
提升:
改进(weighted quick-union ):
问题所在:寻找根节点时间消耗与树的高度成正比
所以改进quickunion算法的一个方法是尽可能减小树的高度。
措施:union时将小的树加到较大的书的根节点上
算法:维护一个size[i]用于计算以i为根的树的对象的数量
算法实现:将较小的树加到较大的树的根节点上。
分析:connect 时,由于connect 时需要找到目标节点的根节点所以时间花费还是很高。
改进2: path compression (weighted quick-union with path compression)
算法思想:当我们寻找某个节点的根节点时,我们将所经过路径所有节点的直接父节点指向root
算法分析:
Union find 算法应用:
- union find并查集 (algorithm course Of Princeton )
- 并查集(Union-Find)
- Union Find 并查集
- 并查集Union--Find
- 并查集Union-Find
- union-find(并查集)
- 并查集- Union-Find
- union find(并查集)
- 并查集(Union-Find)算法介绍 Algorithm 4th Part 1
- 并查集(Union-Find Algorithm),看这一篇就够了
- 并查集 (Union-Find Sets)
- 并查集 (Union-Find Sets)
- 并查集(Union-Find)算法介绍
- 并查集 (Union-Find Sets)
- 并查集(Union-Find)算法介绍
- 并查集Union-Find Sets
- 并查集算法(Union-Find)
- 并查集(Union-Find)算法介绍
- virmon.cn(net)防火墙Windows32/64位正式版本(Windows7 64,2008)
- poj 1029
- Emacs 键位改变
- 2014 ACM/ICPC Asia Regional Guangzhou Online
- java 类加载器-命令行运行java程序实例分析
- union find并查集 (algorithm course Of Princeton )
- 在c++中,vector的用法
- JAX-RS Simple SSE Sample
- hdu 5023(2014广州网赛1002) A Corrupt Mayor's Performance Art
- hdu 5024 Wang Xifeng's Little Plot【暴力dfs,剪枝】
- HDU -- 5014 Number Sequence
- poj 5024&&&2014 ACM/ICPC Asia Regional Guangzhou Online 1003(预处理)
- 耗子问题
- 假如Myclass为一类,执行Myclass a[3],*p[2];语句时会自动调用该类构造函数几次