【问题标题】:Is there any difference in time complexity for mean shortest path length and diameter algorithms for a graph?图的平均最短路径长度和直径算法的时间复杂度有什么不同吗?
【发布时间】:2011-08-02 12:16:02
【问题描述】:

对于无向、未加权的图,计算其平均最短路径长度的算法的时间复杂度与计算图的直径的算法的复杂度(即两者之间的最长最短路径)的复杂度是否存在差异?两个顶点?

【问题讨论】:

    标签: algorithm graph complexity-theory graph-algorithm


    【解决方案1】:

    根据Wikipedia,要计算图形的直径,首先应该找到所有对的最短路径。在计算出所有对最短路径后,两种算法都减少到 O(V^2) 计算,因此它们的复杂度是相同的。

    【讨论】:

      【解决方案2】:

      我没有阅读太多关于该主题的文献,但我怀疑两者是相同的。但是,如果存在差异,我会说计算图的直径可能会渐近更快。

      我的算法是使用在V*(E+V*log(V)) 中运行的 Dijkstra 算法来计算所有对的最短路径。然后对于平均值,您将对所有这些值取算术平均值。我看不出有什么方法可以加快速度。

      但是,对于计算图形的直径,您可以使用一些巧妙的技巧来加快此过程。但作为上限,您可以简单地对所有对最短路径取上确界以获得直径,这与计算平均最短路径具有相同的运行时间复杂度。

      【讨论】:

      • Dijkstra 的算法只计算单源最短路径,而不是所有对最短路径。计算所有对最短路径的 Dijkstra 算法的修改是 Johnson 算法,它在某些情况下可以胜过 Floyd-Warshall。
      • 只需在所有单一来源上运行 Dijkstra 的算法。它仍然比 FW 快。
      • @tkuzzy-Johnson 的算法本质上是在对图形进行预处理以消除任何负权边之后执行此操作。 :-)
      【解决方案3】:

      不,两者之间的时间复杂度不应该有任何差异。

      您可以通过调整最短路径算法找到两个顶点之间的最长路径。

      【讨论】:

        猜你喜欢
        • 2019-03-07
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多