3.weighted quick union

上一篇文章介绍的2.quick find and quick union是基础版的,但是它无法处理大型数据集的动态连接,所以我们还要对其进行改进。

  1. weighted quick-union
    1.1 基本思想
    1.2 Java代码
    1.3 python代码实现
    1.4 复杂度分析
  2. weighted quick-union-改进2-压缩路径(path compression)
    2.1 基本原理
    2.2 Java代码

1.weighted quick-union

1.1 基本思想

由最基本的quick union中,并没有考虑两棵树的大小,如果一颗树比较大,但在结合的时候却被当成了另一颗非常小的树的子树,这样的安排明显是不合理的,因为两棵树结合后就会变成一颗非常畸形的树。
所以有人设计了weighted quick-union,就是为了应对这种情况的。

它的基本思想是这样的:

  • 修改quick-union,使其不会有非常大的树
  • 紧密监控每棵树的大小(元素个数)
  • 通过较小的树节点和较大的树节点之间连接,使一个连接体保持平衡

之所以这么做是为了避免让树不要长成又长又高的树,用图像来说明就是:
这里写图片描述
如果用quick-union ,可能会把大的树放在下面,会产生比较高,且长的树,而qeighted则会监控每棵树,使得连接时,小的树总是在大的树的孩子节点上,这就避免的又高又长的树生成。

1.2 Java代码
与先前的基本一样,但是weighted增加了一个额外的数组

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值