Algorithm 查找通过特定顶点的路径之间的最短路径

Algorithm 查找通过特定顶点的路径之间的最短路径,algorithm,Algorithm,我有一个问题 给定一个边权重为正的有向图G和一个地标顶点x,您的目标是找到从一个顶点v到通过地标x的另一个顶点w的最短路径的长度 需要为该问题描述一个O(E-log-V)算法。 我知道Dijkstra算法的复杂度是O(ElogV) 请你帮我开始解决这个问题。如果你首先使用Dijkstra算法找到从v到x,p_1和从x到w,p_2的最短路径,并将这些路径p串联起来,那么这将是从v到w到x的最短路径 如果有一条较短的路径p',那么在x处拆分该路径将产生一条从v到x的路径p_1',以及一条从x到w的路

我有一个问题 给定一个边权重为正的有向图G和一个地标顶点x,您的目标是找到从一个顶点v到通过地标x的另一个顶点w的最短路径的长度

需要为该问题描述一个O(E-log-V)算法。 我知道Dijkstra算法的复杂度是O(ElogV)


请你帮我开始解决这个问题。

如果你首先使用Dijkstra算法找到从v到x,p_1和从x到w,p_2的最短路径,并将这些路径p串联起来,那么这将是从v到w到x的最短路径

如果有一条较短的路径p',那么在x处拆分该路径将产生一条从v到x的路径p_1',以及一条从x到w的路径p_2',其中p_1'比p_1短,或者p_2'比p_2短(否则长度(p_1'+p_2')>长度(p_1+p_2)),这是一个矛盾


编辑:这显然是O(E logV),因为它只使用了Dijkstra两次。

非常感谢您的回复。总是很乐意帮助。同一个边缘可以访问多次吗?