我试图解决一个关于图的算法挑战,我已经将它分解为以下几个方面:给定一个无向生成树,找到2叶,使得它们之间的代价最小。
现在我知道了Floyd算法,它可以找到具有时间复杂度O(N^3)和空间复杂度O(N^2)的所有对最短路径。问题的输入是N= 10^5,所以O(N^3)和O(N^2)太多了。
有没有办法优化这个问题的时间和空间复杂度?
发布于 2017-03-07 13:17:31
正如@Codor所述,在MST中,任何一对节点都只有一条唯一的路径b/w,最短路径也是相同的。为了计算最短路径b/w所有对。您可以选择遵循此算法。
1. lcp(a,b) = r (root of the tree). dis(a,b) = dis[a] + dis[b]
2. lcp(a,b) = c ( which is not the root node) dis(a,b) = dis[a] + dis[b] - 2 \* dis[c]
其中dis(x,y) =距离b/w节点x,y和disx节点x从根节点的距离,如果使用排名联合查找
复杂度: O(h),其中h是每对(a,b)树的高度。H= X/2,其中X是树的直径。因此,完全的复杂性取决于no。叶节对。
https://stackoverflow.com/questions/42646139
复制相似问题