![](/img/trans.png)
[英]union find disjoint set weighted quick union with path compression algorithm
[英]Disjoint set with Union by Size and Path Compression; possible for taller tree to become subtree of shorter tree?
嗨,这是我第一次在这里发帖,
我一直试图找出一个学习问题,但一直没能弄清楚:
我们考虑了不相交集抽象数据类型的森林实现,以及按大小和路径压缩的加权联盟。 最初,每个元素都在单节点树中。
从上面的初始状态开始:
给出一个(短)UNION和FIND操作序列,其中最后一个操作是一个UNION,它使一个较高的树A成为一个较短树B的子树(即A的高度严格大于B的高度) 。
显示最后一个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.