【问题标题】:Time Complexity of Adding Edge to Graph using Adjacency List使用邻接表向图中添加边的时间复杂度
【发布时间】:2019-01-16 02:30:04
【问题描述】:

我一直在研究使用邻接列表实现的图,我是 reading,添加边是 O(1) 操作。

如果您只是将边缘添加到顶点的边缘链接列表上,这是有道理的,但我不明白这是怎么回事,只要您关心删除旧边缘(如果 已经有一个)存在。找到那个边缘需要 O(V) 时间。

如果您不这样做,并且添加了一条已经存在的边,则该边将有重复的条目,这意味着它们可能具有不同的权重,等等。

谁能解释我似乎遗漏了什么?谢谢!

【问题讨论】:

    标签: graph time-complexity adjacency-list insertion


    【解决方案1】:

    您的复杂性分析是正确的。查找边缘是否已经存在是真正的 O(V)。但请注意,即使存在添加这条边仍然是 O(1)。

    您需要记住,具有相同源和目标的 2 条边是图的有效输入 - 即使权重不同(可能不是偶数,而是因为)。

    这样向邻接列表图添加边是 O(1)

    【讨论】:

      【解决方案2】:

      人们通常会使用哈希集数组而不是列表数组来同时获得最佳搜索时间复杂度和邻接列表的优势。

      或者,

      如果您想要最坏情况下的最优解,请使用 RadixSort 排序 O(v+e) 时间内所有边的列表,删除重复项,然后构建 以通常的方式表示邻接表。

      来源:https://www.quora.com/What-are-the-various-approaches-you-can-use-to-build-adjacency-list-representation-of-a-undirected-graph-having-time-complexity-better-than-O-V-*-E-and-avoiding-duplicate-edges

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-14
        相关资源
        最近更新 更多