排名'重要性是什么?通过秩和路径压缩算法联合?

时间:2016-06-04 22:59:35

标签: c++ algorithm disjoint-sets union-find

我以这种方式理解算法...

  • 路径压缩有助于缩短查找操作的时间,并且超时路径压缩的时间复杂度平均为O(1)。

  • 我们决定哪两个是父节点(在工会操作期间)查看排名。

但我从来不明白等级的联盟是什么,我不相信我正确理解这里的等级意味着什么。我也不明白为什么,在联盟期间,如果要联合的两组的等级相同,则父级的等级会增加1。

1 个答案:

答案 0 :(得分:1)

https://en.wikipedia.org/wiki/Disjoint-set_data_structure中的段落开头“第一种方式,按等级称为联合,总是将较小的树附加到较大树的根”,表明即使没有路径压缩,按等级联合也足够好将连接操作的成本降低到最坏情况O(log n)。

它还解释了,如果没有路径压缩,等级反映了到目前为止生成的树的最大深度,这解释了为什么只有在等级相同时才增加 - 因为较小的树被添加到根的更大的树,这是最大深度实际增加的唯一情况。