一、算法解决的问题:
1, 判断元素之间互通性(不要求元素之间直接相连,只要存在一条路径从元素1通向元素2,即视为连通)。
2, 判断一堆元素中有多少个集合。在一个集合中的点互相连通,所以其本质还是判断元素互通性。
二、一般情况下需要实现的方法:
方法1: Union
目标:将两个不互通的分量进行连接。
方法2: Find
目标: 查找一个元素属于哪个分量
三、数据结构中的属性(变量)
通常会使用一个数组代表元素所属的连通分量,初始值等于元素自身。后续以roots数组简称。
通常该数据结构还会维护连通分量的数量n,初始值与元素的数量相同,经过不断的Union操作该变量会不断变小。
四、Union-find算法细分
4.1 Quick-Find算法
顾名思义,quick-find算法就是要保证Find操作的速度。所以find方法直接返回roots数组中元素对应索引的