Week1-4Qucik-Union Improvments
来源:互联网 发布:超级玛丽java代码 编辑:程序博客网 时间:2024/06/05 04:38
Improvement 1: weighting
weighted quick union
- modify quick-union to avoid tall trees
- keep track of size of each tree(number of each objects)
- balance by linking root of smaller tree to the root of larger tree(larger tree on top, small tree goes below)
No item is too far from the root of its component!!!
Implementation
Data Structure
same as quick-union, but maintain extra array sz[i] to count number of objects in the tree rooted at i.
Find( p, q )
Identical to quick-union
return root( p ) == root( q );
Union( p, q )
- link root of smaller trees to larger trees
- update sz[] array
int i = root( p ), j = root( q ); if( i == j ) { return; } if( sz[i] < sz[j] ) { id[i] = j; sz[j] += sz[i]; } else { id[j] = i; sz[i] += sz[j]; }
Analysis
Running Time
- Find: proportional to the depth of p and q
- Union: constant time given roots
Proposition
Depths of any node x is at most lgN(base 2)
Improvement 2: Path Compression
Just after computing the root of p, set the each examined node to point to that root.
Implementation
- Two-pass implementation: second loop to set the id[] of each examined to the root
- One-pass variant: make every node in path points to its grandparent(halving path length)
private int root( int i ) { while( i != id[i] ) { id[i] = id[id[i]]; i = id[i]; } return i; }
Keep the tree almost flat!!
Analysis(weighted QU with path compression)
Proposition
Starting from and empty data structure, any sequence of m union-find ops on N objects makes
Cost Comparison
There is no linear algorithm for Union-Find ops, but WQUPC is linear in most cases.
0 0
- Week1-4Qucik-Union Improvments
- Week1-3Quick Union
- Week1-5Union-Find Applications
- Qucik Sort
- Week1-4Administration
- week1
- week1
- week1
- week1
- week1
- week1
- Sep week1\2\3\4
- 快速排序 - Qucik Sorting
- coursera Algorithms week1 练习测验2:Union-find with specific canonical element
- WEEK1-4: from L1(intro) to L7(debegging)
- test Week1
- 密码学 week1
- Cryptography-week1
- Python连接MySQL
- 判断IPv4字符串合法性
- 百度API集市与图灵机器人
- ECSHOP小记
- JavaWeb——HTML_总结
- Week1-4Qucik-Union Improvments
- uiimage/nsdata互转
- 张祖勋:摄影测量的信息化与智能化
- 黑马程序员----网络编程
- 【小熊刷题】3 Sum <Leetcode 15,Java>
- 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在
- 【Android杂谈】关于Adapter的理解
- 用正则表达式匹配IPV4地址
- JavaWeb——CSS_总结