我一直在研究不相交的集合数据结构。
我有一个查询,在同时使用按等级联合和路径压缩时,如果我们跳过使用按等级联合和分配优先级(父)而没有任何等级比较(根/代表元素的等级)的两组(树)会影响运行时间。
尽管在合并两个集合时需要加权联合启发式,但将较小的集合附加到较大的集合以使更新尽可能少以指向代表元素。
Union-by-rank(类似于weighted-union)在合并两个集合时使用。但是如果我们跳过比较排名并随机分配优先级,它不会影响运行时间?那我们为什么要使用它..看不清楚,如果我错了,请帮助我理解它。
//不进行排名比较
联合(x,y)
x.父=y;
通用代码
union(x,y){
if(x.rank>y.rank)
y.parent=x;
else
x.parent=y;
if(x.rank==y.rank)
y.rank=y.rank+1;
}