开启辅助访问
 找回密码
 立即注册

算法学习笔记(1) : 并查集

默默无闻 回答数20 浏览数5285
calvinse | 来自北京
rank[x] 和rank[y]不同的时候,合并完,rank不需要加吗?
回复
使用道具 举报
落单 | 来自新疆
不,把较矮的树合并到较高的树上,高度仍等于较高的树的高度
用Deepseek满血版问问看
回复
使用道具 举报
singwah | 来自北京
奥奥。对。每次都是挂到根上。
回复
使用道具 举报
yluzsiFE | 来自北京
请问关于第一题中亲戚关系,在find时会执行路径压缩,不会改变其中相关的rank值吗?
回复
使用道具 举报
longyong | 来自北京
如果想要保证rank的准确性,就不要把两者联合使用
回复
使用道具 举报
eslr | 未知
为啥合并时只给y的rank 加1, 为啥不是x的rank?
回复
使用道具 举报
ggmming | 来自辽宁
因为是把x合并到y上
回复
使用道具 举报
林肯老狼 | 来自贵州
简单易懂,大赞!!!
回复
使用道具 举报
cnpwr | 来自北京
按秩合并真的必要吗
(有类似实验证明其必要性吗?)
总觉得应该按节点度合并的。
比如a作为父节点,有10000个子节点与之相连,而b作为另一个父节点,是一个长度为10001的链
这时候b的秩远大于a,按“按秩合并”的逻辑,a应该作为b的子节点
但如果之后我们还需要对随机元素进行find,可以看出,让b节点作为根节点,对b这条链中任意元素进行find,除第一次之外每次find的执行路径都与以a作为根节点相同——而这么做的我们只节省了一次find
但是这么做的后果是,对原先与a节点相连的全部节点,第一次执行find时(按秩合并比起以a为根节点)要多1次find,也就是,按秩合并在这种情况下会多出10000个find(只是潜在的,不一定会被执行)

为什么这里仍然说“按秩合并”更好呢?
难道不是应该按节点入度合并吗?
回复
使用道具 举报
陈先汉 | 来自北京
明白了
是我想错了
我以为维护入度挺容易的
但计算上比维护秩要多一步
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影