设G =(V; E)是有向图,其边缘都具有非负权重。设s,t为V中的2个顶点,并且e为E中的边。 描述一种算法,该算法决定从s到t的所有最短路径是否包含边e。
嗯,这就是你如何实现Dijsktra的时间复杂性: 只需从s运行Dijkstra并计算delta(s,t)(从s到t的最短路径的权重)。 删除边e,然后从新图中的s再次运行Djikstra。 如果新图中的delta(s,t)增加,则意味着从s到t的所有最短路径都包含边e,否则它不是真的。
我想知道是否有更有效的算法来解决这个问题。你认为有可能击败Dijkstra的时间复杂度吗?
提前致谢
答案 0 :(得分:1)
你的方法听起来对我不对。您只需计算最短路径,无论是否具有前沿e。这为你提供了2次Dijkstra搜索。
如果你去A *,双向搜索或恢复你的Dijkstra搜索树,还有改进的空间: