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

来源:互联网 发布:雅思精听软件 编辑:程序博客网 时间:2024/06/07 02:46

问题出自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最终结果。

0 0
原创粉丝点击