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 而在检查时通过深度我们得到更小的结果树深度。
使用“排名”而不是大小来进行加权是很常见的。不使用高度,因为树的高度可以通过路径压缩以难以跟踪的方式改变。如果不使用路径压缩,树的等级就是高度。
但是,使用树的大小与排序一样有效——并集和查找的最坏情况复杂度保持不变——并且同样易于跟踪。此外,了解每组的大小也是一件有用的事情!出于这个原因,我更喜欢按大小而不是排名加权。
我正在 Coursera 上学习普林斯顿的算法课程。
在 Union 查找部分,对于 Weighted Quick union,我们根据 Size.
较小的树来合并树但是,我不明白为什么我们使用 Size 而不是 Depth 来决定哪棵树更大,哪棵树更大更小。
寻找根的最坏情况时间复杂度不会因为树 深度 而增加吗?
在上面的例子中,如果我们通过检查 size 来合并 2 棵树,结果树的 depth 是 4 而在检查时通过深度我们得到更小的结果树深度。
使用“排名”而不是大小来进行加权是很常见的。不使用高度,因为树的高度可以通过路径压缩以难以跟踪的方式改变。如果不使用路径压缩,树的等级就是高度。
但是,使用树的大小与排序一样有效——并集和查找的最坏情况复杂度保持不变——并且同样易于跟踪。此外,了解每组的大小也是一件有用的事情!出于这个原因,我更喜欢按大小而不是排名加权。