将多图的邻接表转换为等效无向图的算法

标签 algorithm graph-theory graph-algorithm

我们得到了多重图的邻接表 G = (V, E) 并且需要找到 O(V + E) 算法来计算等效无向图的邻接表。

到目前为止,我想到了一个大小为 |V| 的数组以便标记在 adj[u] 中至少遇到过一次的顶点,从而防止重复。在遍历每个 adj[u] 之前重置数组。但是,我想知道是否存在不使用额外空间的更好算法。请提出建议。

最佳答案

如果你想达到O(V+E)的时间复杂度,没有更好的算法,因为这基本上是element distinctness problem的变体。 ,这可以通过在 O(nlogn) 中排序来解决,或者通过在 O(n) 中使用 O(n) 额外空间来解决。

因此,为了实现 O(V+E) 时间,您的算法是最优的(根据大 O 表示法)

关于将多图的邻接表转换为等效无向图的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18187984/

相关文章:

graph-theory - Gephi 和 NetworkX 为同一图返回不同的平均聚类系数

c++ - 缩放 Dijkstra 算法的实现

c++ - 计算给定无向图中线性生成树的数量

algorithm - 在最多包含 40 亿个整数的未排序数组中查找缺失的 32 位整数

algorithm - 在哪里可以找到 O(n^2) 和 O(n) 等的含义?

python - 俄罗斯方 block 随机生成器 : random. 选择与排列与 random.shuffle

算法 - 关于 Conways 生命游戏的极端细节

matlab - 使用带种子点的图形切割进行图像分割

algorithm - 找到包围二维网格上某个区域的最短栅栏

algorithm - 如何在存储在 Neo4j 中的 Web Graph 中进行社区检测