并查集(Union-Find)算法理解

问题出自Algroithm一书,理解后整理一部分

原书详细内容参考http://blog.csdn.net/dm_vincent/article/details/7655764一篇

个人理解:

1.Quick-Find 算法:


存储的是数字对应的组号,如果组号相同则判断连通,存在的问题是,每一次输入pair后需要遍历更新整个数组

2.Quick-Union算法:

存储的是该节点的父节点号,根节点的标志是父节点号和此节点号相同,判断是否相通的标志是根节点相同,连接的方式是更新一个根节点,使其父节点为另一个根结点;问题是哪一个根节点作为新的子节点

3.Weighted-Quick-Union算法:


解决问题:哪一个根节点作为子节点,加入一个数组存储节点的size,根节点size小的作为子节点,连接的时候也需要更新size,这样可以使数更为扁平化,找树根节点的代价更小。

4.Weighted-Quick-Union-Plus算法:

解决问题:每一个节点存储的是它父节点的编号,查找根节点时需要遍历,再次优化在于查询之后将节点的父节点直接更新为根节点,这样树更为扁平化,高度只有两层,类似于Union-Find最终结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值