如何解决将路径压缩应用于联合查找总是会生成一棵扁平树吗?如果是,为什么?
下图显示了联合查找问题,该问题通过使用路径压缩的等级来解决。如果您不理解我的笔迹,请阅读以下说明,以了解我的所作所为。
说明:
首先,我完成了1和2的合并。其次,Union(3,4)。 Third Union(5,6)等通过比较它们的等级,同时在找到要进行联合的树的代表元素时也进行路径压缩。
我的疑问:
我的疑问是,如果您查看图像中的最后一棵树,您会看到一棵完全平坦的树(平坦意味着我指的是树的深度)。无论存在多少个元素,路径压缩都会始终生成一棵扁平树吗? 而且我们如何通过路径压缩找到Union_find的时间复杂度?
解决方法
可以建立无限深度的逆树。例如,如果您碰巧总是选择根作为您的Union()
参数,则不会压缩任何路径,并且您可以根据需要构建自己的树。
如果(如书面注释所示)您使用等级来选择由并集产生的根,那么您的树将是平衡的,因此您将需要进行Ω(2^n)
运算才能生成深度为{{1}的树}。 (具体来说:要构建一棵深度为n
的树,首先要构建两棵深度为n
的树,并取其根n-1
。)
联合查找与秩匹配和路径压缩的摊销时间复杂度已知为Union()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。