并查集——启发式合并,路径压缩
来源:互联网 发布:sql server 2008dev 编辑:程序博客网 时间:2024/05/30 05:08
一直没想过自己写的并查集的复杂度= =。。。看那一行代码还挺窃喜——贴一下正版的启发式合并,这样复杂度就真正到了反阿克曼函数那什么balabala
一个优化是:把小的树合并到大树中,这样会让深度不太大。这个优化称为启发式合并。
一个优化是把沿途上所有结点的父亲改成根。这一步是顺便的,不增加时间复杂度,却使得今后的操作比较快。这个优化称为路径压缩用 p[i] 表示 i 的父亲,而 rank[i] 表示 i 的秩,并用秩来代替深度做刚才提到的启发式合并。
void makeset ( int x ){ rank [ x ] = 0; p[x] = x;}int findset ( int x ){ int px = x , i ; while ( px != p [ px ]) px = p [ px ]; // find root while ( x != px ) // path compression { i = p [ x ]; p [ x ] = px ; x = i; } return px ;}void unionset ( int x , int y ){ x = findset ( x ); y = findset ( y ); if ( rank [ x ] > rank [ y ]) p [ y ] = x ; else{ p[x ] = y; if ( rank [ x ] == rank [ y ]) rank [ y ]++; } }
0 0
- 并查集——启发式合并,路径压缩
- 并查集的启发式合并 和 路径压缩
- 并查集(路径压缩 && 启发式合并!!!)
- 并查集的优化---路径压缩与启发式合并
- hdu6109(并查集+启发式合并)
- 并查集的启发式合并
- 并查集——路径压缩
- 并查集(两个优化—按秩合并、路径压缩) poj2492
- NOJ——1508火烧赤壁2(并查集+启发式合并+逆序加边)
- 可持久化并查集(外传)——[按秩启发式合并]
- [并查集+启发式合并]BZOJ 2733——[HNOI2012]永无乡
- 并查集(按秩合并、路径压缩)
- 并查集 按秩合并&路径压缩
- 并查集,路径压缩,按元素数量合并,带权并查集
- 并查集的“并优化”(leader合并)和“查优化”(路径压缩)
- BZOJ_P2733/Codevs_P1477 [HNOI2012]永无乡(Treap+启发式合并+并查集)
- [BZOJ2733][HNOI2012]永无乡(并查集+splay启发式合并)
- 【bzoj4537】【HNOI2016】【最小公倍数】【并查集+启发式合并+分块】
- Ubuntu Server上禁止服务
- 人生应该要有梦想,万一见鬼了呢?!
- Button点击事件的三种实现方式
- 程序员想提升工作效率,就别再做这七件事啦
- 类和对象
- 并查集——启发式合并,路径压缩
- 解决sitescope时间偏差问题
- iOS开发 主线程问题
- 去掉投影仪投放时的上下黑边
- iOS不规则控件的点击事件(转载)
- 统计算法分类
- 【项目经验】——JSON.parse() && JSON.stringify()
- Android Fragment解析1
- 左右滑动与上下滑动的冲突