如果只有路径压缩,或者只有按秩合并,并查集单次操作的复杂度都是 O(log n) 。
只有路径压缩 + 按秩合并的并查集,单次操作的复杂度才是 O(α) 。
(开 幕 雷 击)
上面的说法不是很严谨,不过实际上也差不多。(主要是复杂度比较长不想打
具体的复杂度和证明,包括怎么卡满复杂度的图解,见:
Tarjan, Robert E., van Leeuwen, Jan - Worst-case analysis of set union algorithms
复杂度在最后几页。貌似算法导论也有一部分证明。
也可以参考 康复计划#4 快速构造支配树的Lengauer-Tarjan算法
Tarjan 也讲到一个特殊情况,就是合并的两个集合的秩一定不相等的话,复杂度里面没有 α 。
(貌似是这样吧)