森林与并查集
连通性问题:
①quick-find算法:
简单来说a联通b,b联通c,得到a联通c。这便是一种连通性。
类似下图的颜色覆盖:
时间复杂度:
②quick_union算法:
当前值记录着下一个联通的点
习题:
1.
2.
quick-union算法总结:
时间复杂度:
low(i)表示:树高为i的情况下,最少节点数。
low(1)= 1;
low(2)= 2;
low(3)= 4;
low(4)= 8;
。。。。。。
low(h)= 2^(h-1)
所以时间复杂度为o(logn)
按照树的高度来优化此问题,如图:
将两个集合合并,高度为3
假如,有如下树:
节点不变的前提下
其实:假设A树查找次数为L(A),B树的查找次数为L(B),则A作为子树的时候,为(LA+LB+SA)/(SA+SB);当B作为子树的时候,为(LA+LB+SB)/(SA+SB);由此可见应按照节点数量为合并参考
③加权快速合并算法:
此处参照上文以及https://blog.****.net/dm_vincent/article/details/7655764
并查集总结: