【发布时间】:2018-11-05 06:00:13
【问题描述】:
在基于树的联合查找操作实现中,每个元素都存储在一个节点中,该节点包含一个指向集合名称的指针。集合指针指向 v 的节点 v 也是集合名称。每个集合都是一棵树,以具有自引用集合指针的节点为根。
要执行联合,我们只需让一棵树的根指向另一棵树的根。为了执行查找,我们从起始节点开始跟踪集合名称指针,直到到达集合名称指针指向自身的节点。
In Union by size -> 当执行并集时,我们生成更小的树的根 指向较大的根。这意味着 O(n log n) 时间 执行 n 个联合查找操作。每次我们跟随一个指针,我们都会去到一个大小最多是前一个子树两倍的子树。因此,对于任何查找,我们将遵循最多 O(log n) 个指针。
我不明白每个联合操作如何,查找操作总是 O(log n)。有人可以解释一下最坏情况的复杂性是如何计算的吗?
【问题讨论】:
标签: algorithm time-complexity graph-theory graph-algorithm union-find