Kruskals 算法中的联合查找算法

问题描述

这两个函数是如何工作的?

函数 find 的时间复杂度是 O(log n) 假设长度 每条链的长度是 O(log n)。在这种情况下,函数 same 和 unite 也适用于 O(log n) 时间。函数 unite 确保每个链的长度是 O(log n) 通过将较小的集合连接到较大的集合。

有人可以用一个例子解释一下吗?

int find(intx) {
while(x != k[x]) x = k[x];
returnx;
}
bool same(inta,intb) {
returnfind(a) == find(b);
}
void unite(inta,intb) {
a = find(a);
b = find(b);
if(s[a] < s[b]) swap(a,b);
s[a] += s[b];
k[b] = a;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...