gpt4 book ai didi

algorithm - 不相交集森林数据结构的没有按等级联合的联合/查找算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:11 26 4
gpt4 key购买 nike

这是关于 wikipedia 上不相交集合森林的联合/查找算法的分割:

  • Barebone 不相交集森林...(O(n))
    • ...按等级联合...(现在改进为O(log(n))
      • ... 使用路径压缩(现在改进为 O(a(n)),有效 O(1))

按排名实现联合需要每个节点保留一个 rank 字段用于比较目的。我的问题是,按等级联合是否值得这个额外的空间?如果我跳过 union by rank 而只是进行路径压缩,会发生什么情况?够好了吗?现在的摊销复杂度是多少?


有一条评论暗示在没有路径压缩的情况下按等级合并(分摊 O(log(n) 复杂度)对于大多数实际应用来说已经足够了。这是正确的。我要问的是反过来:如果您跳过按等级合并并只进行路径压缩怎么办?

从某种意义上说,路径压缩是按等级改进并集的额外步骤,这就是为什么可以省略该额外步骤而不会造成灾难性后果的原因。但是按等级联合是路径压缩的必要中间步骤吗?我可以跳过它并直接进行路径压缩吗,否则这会是灾难性的吗?


还有人指出,如果没有按等级联合,重复联合可能会创建类似链表的结构。这意味着在最坏的情况下,单个路径压缩操作可能需要 O(n)。这当然会影响 future 的操作,所以我更感兴趣的是在分摊到许多操作时如何发挥作用。

最佳答案

我用谷歌搜索“without union by rank”,出现的第二个链接是 this one :

...We close this section with an analysis of union–find with path compression but without union by rank...

The union-find datastructure with path compression but without union by rank processes m find and n-1 link operations in time O((m+n) log n)

关于algorithm - 不相交集森林数据结构的没有按等级联合的联合/查找算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com