繁体   English   中英

通过大小和路径压缩与联盟进行脱节设置; 高树可能成为矮树的子树吗?

[英]Disjoint set with Union by Size and Path Compression; possible for taller tree to become subtree of shorter tree?

嗨,这是我第一次在这里发帖,

我一直试图找出一个学习问题,但一直没能弄清楚:

我们考虑了不相交集抽象数据类型的森林实现,以及按大小和路径压缩的加权联盟。 最初,每个元素都在单节点树中。

从上面的初始状态开始:

  1. 给出一个(短)UNION和FIND操作序列,其中最后一个操作是一个UNION,它使一个较高的树A成为一个较短树B的子树(即A的高度严格大于B的高度) 。

  2. 显示最后一个UNION合并的两个树A和B.

提示:您可以从n = 9个元素开始,每个元素都在单节点树中。


我不确定这是如何工作的,因为较小的树总是与较大的树合并,因为按大小联合?

谢谢。

我不想回答你的作业,但是这个问题已经足够大了,你的学期很可能结束了,无论如何,提示应该足够了。

联合大小和联合高度之间存在区别,主要是因为路径压缩。 具体而言,路径压缩可以导致非常高度的节点,因此树具有许多节点但是具有非常短的高度。 例如,这些是您可以使用带有路径压缩的union find创建的两个树:

|T1:   o    (n=5, h=2)
|    /| |\ 
|   o o o o
|    
|T2:   o    (n=4, h=3)
|     /|
|    o o
|      |
|      o

如果下一个操作是这两棵树的合并,则“按排名结合”和“按高度结合”算法将选择不同的父亲。

在实践中,通常使用“按级别结合”。 Rank是高度的上限,可以在恒定时间内更新,并产生最佳的渐近运行时间。 网络搜索将产生该算法的许多好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM