给定无向图G = {E,V},具有正边缘成本。对于所有节点组合,有没有办法确定某个节点v是否不在其不是端点的任何最短路径上?
我的想法是,它可以通过在除v之外的每个节点上执行Dijkstra算法的修改形式来完成,其中它将标记v是否在解决方案中。但我不知道如何修改算法来做到这一点。
答案 0 :(得分:1)
假设v
是顶点,而a
和b
是相对的起点和终点。
a
到b
的最短路径长度。 a
到v
和v
到b
的最短路径长度。v
位于从a
到b
的潜在最短路径上。PS :算法时间复杂度与查找最短路径相同。
更新:Dijkstra从一个节点开始,并将该距离的最小距离传播到其他节点。这样做直到它到达所有节点(while Q is not empty
)。如果您对一个特定节点(终点)感兴趣,您可以在Dijkstra中执行此过程,直到达到该点(即假设t
是目标点,您执行(最小)距离传播,直到从u
提取Q
。另一方面,在这一行u ← vertex in Q with min dist[u]
,u equals t
你可以return dist[u]
)。请查看this以获取有关Dijkstra和更好的图形插图的更详细说明。