Algorithm 联合查找-为什么我们要检查加权快速联合的大小
我在Coursera上学习普林斯顿大学的算法课程 在Union find部分中,对于加权快速并集,我们根据哪个树的大小较小来合并树 然而,我不明白为什么我们用大小而不是深度来决定哪棵树更大,哪棵树更小 最坏情况下,查找根的时间复杂度不会因为树的深度而增加吗 在上面的示例中,如果我们通过检查大小来合并这两棵树,则结果树的深度为4,而通过深度检查,我们得到的结果树深度较小。通常使用“秩”而不是大小来进行权重计算。不使用高度,因为路径压缩可以以难以跟踪的方式更改树的高度。如果不使用路径压缩,树的等级就是树的高度 然而,使用树的大小与排名一样有效——union和find的最坏情况复杂性保持不变——并且同样易于跟踪。此外,每一组的大小可以是一个有用的东西知道!出于这个原因,我更喜欢按大小而不是等级来加权。使用“等级”而不是大小来加权是很常见的。不使用高度,因为路径压缩可以以难以跟踪的方式更改树的高度。如果不使用路径压缩,树的等级就是树的高度Algorithm 联合查找-为什么我们要检查加权快速联合的大小,algorithm,data-structures,tree,union-find,Algorithm,Data Structures,Tree,Union Find,我在Coursera上学习普林斯顿大学的算法课程 在Union find部分中,对于加权快速并集,我们根据哪个树的大小较小来合并树 然而,我不明白为什么我们用大小而不是深度来决定哪棵树更大,哪棵树更小 最坏情况下,查找根的时间复杂度不会因为树的深度而增加吗 在上面的示例中,如果我们通过检查大小来合并这两棵树,则结果树的深度为4,而通过深度检查,我们得到的结果树深度较小。通常使用“秩”而不是大小来进行权重计算。不使用高度,因为路径压缩可以以难以跟踪的方式更改树的高度。如果不使用路径压缩,树的等
然而,使用树的大小与排名一样有效——union和find的最坏情况复杂性保持不变——并且同样易于跟踪。此外,每一组的大小可以是一个有用的东西知道!出于这个原因,我更喜欢按大小而不是按等级进行加权。按大小或按深度的并集都会产生O(logn),因此您可以使用其中一种。您可以在这里了解更多信息:按大小或按深度的联合都会产生O(logn),因此您可以使用其中一种。你可以在这里了解更多:我不明白它们怎么会有同样的时间复杂性。我们不是在试图通过避开高大的树木来减少寻找树根的时间复杂性吗。正如我在上图中所解释的,按大小合并会产生更高的树。此外,尺寸在这里不会影响任何东西。我们可以有一个大小为1000但深度为2的树,这将具有非常好的时间复杂性。没有按大小并集的操作序列可以生成您的3链示例。不会有“高大的树”,我不明白它们怎么会有同样的时间复杂性。我们不是在试图通过避开高大的树木来减少寻找树根的时间复杂性吗。正如我在上图中所解释的,按大小合并会产生更高的树。此外,尺寸在这里不会影响任何东西。我们可以有一个大小为1000但深度为2的树,这将具有非常好的时间复杂性。没有按大小并集的操作序列可以生成您的3链示例。不会有“高大的树”