【发布时间】:2011-08-02 12:16:02
【问题描述】:
对于无向、未加权的图,计算其平均最短路径长度的算法的时间复杂度与计算图的直径的算法的复杂度(即两者之间的最长最短路径)的复杂度是否存在差异?两个顶点?
【问题讨论】:
标签: algorithm graph complexity-theory graph-algorithm
对于无向、未加权的图,计算其平均最短路径长度的算法的时间复杂度与计算图的直径的算法的复杂度(即两者之间的最长最短路径)的复杂度是否存在差异?两个顶点?
【问题讨论】:
标签: algorithm graph complexity-theory graph-algorithm
根据Wikipedia,要计算图形的直径,首先应该找到所有对的最短路径。在计算出所有对最短路径后,两种算法都减少到 O(V^2) 计算,因此它们的复杂度是相同的。
【讨论】:
我没有阅读太多关于该主题的文献,但我怀疑两者是相同的。但是,如果存在差异,我会说计算图的直径可能会渐近更快。
我的算法是使用在V*(E+V*log(V)) 中运行的 Dijkstra 算法来计算所有对的最短路径。然后对于平均值,您将对所有这些值取算术平均值。我看不出有什么方法可以加快速度。
但是,对于计算图形的直径,您可以使用一些巧妙的技巧来加快此过程。但作为上限,您可以简单地对所有对最短路径取上确界以获得直径,这与计算平均最短路径具有相同的运行时间复杂度。
【讨论】:
不,两者之间的时间复杂度不应该有任何差异。
您可以通过调整最短路径算法找到两个顶点之间的最长路径。
【讨论】: