“并查集维护一个动态划分,支持 、 返回所在块代表元、 合并两块。森林实现让每个集合是一棵根树;按秩或大小合并把浅树挂到深树,路径压缩在查找时把经过节点直接连到根。对 $m$ 次操作和 $n$…”
定理与约定 ​
从
常简写为
证明骨架 ​
rank 沿父指针严格增加,且 rank 为
组合为何必要 ​
只用按秩合并而不压缩,树高最坏
Rollback 边界 ​
保证类型与下界 ​
总界对任意操作序列确定成立,不是随机输入期望;除以
在 pointer-machine/链接模型的相应操作集合中,逆 Ackermann 量级有匹配下界,说明“近似常数”不是证明松弛。若允许更强批处理、不同操作或离线知识,模型改变后需重新比较。
一条父链怎样被分层收费 ​
路径压缩执行 find(x) 时,把沿途节点直接连向根;按秩合并保证父节点秩严格增大。分析把秩按 Ackermann 函数增长速度划分层级:节点沿父指针移动时,要么进入更高层,要么在同层跨过足够大的秩区间。前者次数极少,后者可向节点有限的层内额度收费。
对
这里
只用按秩合并会给
参考资料
- Robert Tarjan, Efficiency of a Good But Not Linear Set Union Algorithm, JACM, 1975.
- Robert Tarjan, Jan van Leeuwen, Worst-Case Analysis of Set Union Algorithms, JACM, 1984.