【发布时间】:2019-12-20 17:57:25
【问题描述】:
我必须解决这个问题,它已经困扰了我好几个小时,我似乎找不到满足所需时间复杂度的有效解决方案。
对于任意图G中的任意边e,令G\e表示删除e得到的图> 来自G。
(a)假设给定一个边加权有向图G,其中从顶点s到顶点σ em>t 穿过 G 的每个顶点。描述一种算法来计算 G\e 中从 s 到 t 的最短路径距离,对于每条边 e G,在 O(VlogV) 时间内。您的算法应该输出一组 E 最短路径距离,输入图的每条边一个。你可以假设所有边的权重都是非负的。[提示:如果我们删除原始最短路径的一条边,新旧最短路径如何重叠?
(b) 描述一种算法,用于在 O(V log V ) 时间内解决任意无向图的替换路径问题。
【问题讨论】:
-
添加您尝试过的内容以及解决问题的位置总是一个好主意。三个问题/cmets 1) G 是简单图还是可以是多重图? 2)在从原始最短路径中删除一条边后,新的SP是否也应该通过所有顶点? 3) 将时间复杂度表示为 O(VlogV) 以避免与 Dijkstra 的 SP 算法运行时混淆不是更好吗?
-
我刚刚想到了这个问题以及我可以想到的多种方法来尝试解决它,但是我发现我的方法中有直接错误,所以我认为对于您的问题来说,提及它是没有用的, 1) 是的 G 是一个简单的图,2) 不,最短路径不应该在边缘移除后经过所有节点 3) 我认为复杂度应该是 O(ElogV),因为据我了解算法应该在所有节点上运行在所有情况下计算 G\e 的边。
-
但是
E并不是您的问题描述中的所有边:您的算法应该输出一组 E 最短路径距离。这意味着E是原始SP 中的边数,等于V-1 -
但它写的是:E 最短路径距离,输入图的每条边一个,这意味着
E是输入图@ 的所有边987654325@无论他们最初是否在SP中 -
如果边缘不在原始 SP 中,则删除它不会改变任何内容
标签: algorithm graph-theory graph-algorithm shortest-path