algorithm - 我们可以使用单个数组进行图形查找和连接操作来获得对数时间复杂度吗?

标签 algorithm data-structures graph

我们能否使用单个数组在对数时间内执行图形查找(A 和 B 是否连接?)和连接(连接 A 和 B)?

我学习了一些算法,例如:

快速查找(连接中的线性时间和查找中的常数时间)- 单个数组

快速联合(恒定时间连接和查找中的平均 n/2)- 单个数组

加权联合(记录查找时间和恒定连接时间)但此算法需要 2 个数组,一个用于节点,另一个用于每个节点连接的节点数。

我只是出于好奇才问的。是否有可能使用单个数组获得加权并集的复杂性?

最佳答案

您可以使用 Disjoint-Set .它作为森林工作,但您始终可以使用一个数组来实现这个森林,使用一个 roots 数组,而不是每个节点的 root 字段。

此实现的智能化复杂度是次对数,通常标记为O(log*(n))

关于algorithm - 我们可以使用单个数组进行图形查找和连接操作来获得对数时间复杂度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521526/

相关文章:

algorithm - 如何确定两个中最快的排序算法?

java - 二叉树的前序遍历。如果与同时

algorithm - 图(图表)算法

java - 使用 MapReduce 在图中查找距离为 2 的节点对

algorithm - 解决带有 n 个球的迷宫的通用算法

java - 什么测试用例可以打破这个包含/排除原则挑战的解决方案?

python - 如何在现有列表后添加列表但不扩展它?

C# 通用图形搜索框架

algorithm - 堆排序的时间复杂度

c - 在 C 中将枚举映射到字符串的好方法