Union Find - 为什么我们要检查 Weighted Quick Union 的大小

Union Find - Why we are checking Size for Weighted Quick Union

我正在 Coursera 上学习普林斯顿的算法课程。

在 Union 查找部分,对于 Weighted Quick union,我们根据 Size.

较小的树来合并树

但是,我不明白为什么我们使用 Size 而不是 Depth 来决定哪棵树更大,哪棵树更大更小。

寻找根的最坏情况时间复杂度不会因为树 深度 而增加吗?

在上面的例子中,如果我们通过检查 size 来合并 2 棵树,结果树的 depth 是 4 而在检查时通过深度我们得到更小的结果树深度。

使用“排名”而不是大小来进行加权是很常见的。不使用高度,因为树的高度可以通过路径压缩以难以跟踪的方式改变。如果不使用路径压缩,树的等级就是高度。

但是,使用树的大小与排序一样有效——并集和查找的最坏情况复杂度保持不变——并且同样易于跟踪。此外,了解每组的大小也是一件有用的事情!出于这个原因,我更喜欢按大小而不是排名加权。