将路径压缩应用于联合查找总是会生成一棵扁平树吗?如果是,为什么?

问题描述

下图显示了联合查找问题,该问题通过使用路径压缩的等级来解决。如果您不理解我的笔迹,请阅读以下说明,以了解我的所作所为。

说明:

首先,我完成了1和2的合并。其次,Union(3,4)。 Third Union(5,6)等通过比较它们的等级,同时在找到要进行联合的树的代表元素时也进行路径压缩。

我的疑问:

我的疑问是,如果您查看图像中的最后一棵树,您会看到一棵完全平坦的树(平坦意味着我指的是树的深度)。无论存在多少个元素,路径压缩都会始终生成一棵扁平树吗? 而且我们如何通过路径压缩找到Union_find的时间复杂度?

enter image description here

enter image description here

解决方法

可以建立无限深度的逆树。例如,如果您碰巧总是选择根作为您的Union()参数,则不会压缩任何路径,并且您可以根据需要构建自己的树。

如果(如书面注释所示)您使用等级来选择由并集产生的根,那么您的树将是平衡的,因此您将需要进行Ω(2^n)运算才能生成深度为{{1}的树}。 (具体来说:要构建一棵深度为n的树,首先要构建两棵深度为n的树,并取其根n-1。)

联合查找与秩匹配和路径压缩的摊销时间复杂度已知为Union()

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...