几种合并查找算法

问题:

实际中需要知道拓扑图中的2点是否连通,比如电路板、地图中不同的城市等等,这种问题可以转化为合并查找问题,相应的求解可以用合并查找算法。

基本思想是转化为长度为N的数组和已知M对连通对,其值表示了两个点是否连通。

合并查找算法 (union-find)可以有以下几种:

1、快速查找算法

     mark连通时遍历整个数组,使得连通指向最新的节点

2、快速合并算法

     不需要遍历整个数组,只遍历已连通的子串,然后合并新加入连通节点对应的根节点

3、带权的快速合并算法

     为避免合并的最坏情况,利用额外的数组表示连通子串长度,保证合并时短串合并到长串。查找代价为logN

4、路径压缩的带权快速合并算法

     为减少查找代价,利用路径压缩,使得查找最小(1或者2),但是实现代价复杂

5、等分的带权快速合并算法

     折中的路径压缩,合并时向上跳一个节点,实现简单,查找代价也大为减少。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值