按等级查找具有路径压缩且没有联合的集合

Posted

技术标签:

【中文标题】按等级查找具有路径压缩且没有联合的集合【英文标题】:Find set with path compression without union by rank 【发布时间】:2016-03-22 01:03:26 【问题描述】:

如果我有 n 个单节点树和 m 个查找集合操作(​​注意:没有联合,假设之前已经完成了联合)并且只使用路径压缩,这真的需要 O(m) 时间吗?我一直试图证明这一点,但似乎并非如此。由于联合没有按等级使用联合,因此查找集最多可能需要 O(n) 时间。但是是否仍然有可能在 O(m) 时间内完成 m 个查找集?

【问题讨论】:

【参考方案1】:

这通常不会花费时间 O(m) 来完成。想象一下,n 个节点被分成了 √n 个组,每个组内的所有节点都链接在一起,形成一个大小为 √n 的链表。现在,如果您执行 √n 查找操作,链表的每个根执行一次,完成的总工作将是 Θ(n),因为您必须更新组中几乎每个节点上的指针。

但是,如果您要以不同的顺序执行查找操作(例如,从链表的末尾开始并向后工作),您可以在 O(n) 时间内完成 n 次操作。

一般来说,the cost of union-find using only path compressions is O(m log n + n) for m operations on n nodes。

【讨论】:

以上是关于按等级查找具有路径压缩且没有联合的集合的主要内容,如果未能解决你的问题,请参考以下文章

(转)并查集路径压缩

Disjoint 设置路径压缩运行时间错误

并查集

并查集的两种实现(按秩合并+路径压缩)

并查集 路径压缩

CCF路径压缩 区间dp