【问题标题】:Why are graphs represented using an adjacency list instead of an adjacency set?为什么图使用邻接表而不是邻接集来表示?
【发布时间】:2015-09-15 14:18:47
【问题描述】:

如果每个节点映射到一组它有边的节点,而不是一个列表,我们将获得对边进行恒定时间查找的能力,而不必遍历整个列表。我能想到的唯一缺点是内存开销和枚举节点边缘的时间稍多,但渐近性并不显着。

【问题讨论】:

  • 这不是“恒定时间”,而是“log(集合中的 nb 个元素)”时间! (回答这个问题,如果您使用 std::set,那么与压缩行存储相比,内存开销很大)
  • @BrunoLevy A HashSet 会给你不断的顶点查找。
  • @Carcigenicate 是的,我同意它可以提供持续查找,但不是在一般情况下,需要小心。我认为为任何稀疏模式获得有保证的恒定时间行为是非常困难的(如果不是不可能的话)。

标签: graph adjacency-list


【解决方案1】:

我认为“列表”只是一个通用标签,不能从字面上理解。我用过Set,效果很好。

如果我没记错的话,我的教科书也使用了Set

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 2020-04-14
    • 1970-01-01
    • 2016-12-10
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多