首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多图邻接表转换为等价无向图的算法

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

Stack Overflow用户
提问于 2013-08-12 13:15:40
回答 4查看 1.8K关注 0票数 0

给出了多图G= (V,E)的邻接表,并给出了求等价无向图邻接表的O(V + E)算法。

到目前为止,我已经想过要有一个大小为x的数组,以便标记在adju中至少遇到过一次的顶点,从而防止重复。数组在遍历每个adju之前被重置。但是,我想知道是否有一个更好的算法不需要额外的空间。请建议一下。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-12 13:50:37

如果您想要实现O(V+E)时间复杂度,就没有更好的算法,因为这基本上是元素区分问题的一个变化,可以通过在O(nlogn)中排序或在O(n)中使用O(n)额外空间来解决。

因此,为了达到O(V+E)时间,您的算法是最优的(就大O符号而言)。

票数 1
EN

Stack Overflow用户

发布于 2017-03-24 20:58:05

作为参考,应该注意的是,在技术上,每次重新设置数组时都使用O(V)时间。数组创建在技术上并不是免费的,因为它是用随机指针创建的,不能保证这些值是be.Thus的,它需要一次传递才能实际初始化它们0或null。因此,运行时成为O(V^2)为您提出的算法。

我知道这个问题现在已经解决了,但这个事实是值得注意的。

票数 1
EN

Stack Overflow用户

发布于 2013-08-13 12:00:26

您可以使用无序集数据结构从O(n)额外空间改进为O(最大邻居数),只需检查邻接列表中没有添加两次邻居。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18187984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档