Graph 寻找可能忽略1条(最长)边的最短路径

Graph 寻找可能忽略1条(最长)边的最短路径,graph,path,dijkstra,Graph,Path,Dijkstra,我想知道我是否可以这样修改Dijkstra'a算法: 假设两个顶点之间有两条路径,长度如下: 5, 8, 6, 9 // sum=28 2, 4, 8, 25 //sum=39 第一条路径较短,但在忽略这两条路径中的最长边后,我得到以下结果:19和14,因此我选择第二条路径 也许有不同的方法来解决这个问题,不用Dijkstra?我不确定这个想法是否有效,但首先我觉得它似乎可以 对于每个访问的节点,在距离D(n)旁边,存储其路径上最长边的长度,例如L(v)。对于被访问的所有邻居n,未访问的相邻

我想知道我是否可以这样修改Dijkstra'a算法: 假设两个顶点之间有两条路径,长度如下:

5, 8, 6, 9  // sum=28
2, 4, 8, 25 //sum=39
第一条路径较短,但在忽略这两条路径中的最长边后,我得到以下结果:19和14,因此我选择第二条路径


也许有不同的方法来解决这个问题,不用Dijkstra?

我不确定这个想法是否有效,但首先我觉得它似乎可以


对于每个访问的节点,在距离
D(n)
旁边,存储其路径上最长边的长度,例如
L(v)
。对于被访问的所有邻居
n
,未访问的相邻节点的距离为
min D(n)+L(n)-max(L(n),权重(v,n))
<如果
n
v
路径上的最后一个节点,则下次访问节点的code>L(v)为
max(L(n),weight(v,n))
。如果有更多的路径到相同长度的
v
(更多的
n
),而不是选择一个最大的
L(v)

,我不确定这个想法是否有效,但首先我觉得它可以


对于每个访问的节点,在距离
D(n)
旁边,存储其路径上最长边的长度,例如
L(v)
。对于被访问的所有邻居
n
,未访问的相邻节点的距离为
min D(n)+L(n)-max(L(n),权重(v,n))
<如果
n
v
路径上的最后一个节点,则下次访问节点的code>L(v)为
max(L(n),weight(v,n))
。如果有更多路径到相同长度的
v
(更多
n
),而不是选择一个最大的
L(v)

@AshBurlaczenko,你的链接和Paulina提出的问题之间有什么联系?为什么不简单地将这些边的权重更新为0,然后重新运行Dijkstra?时间复杂度是一样的,那么实际的问题是什么?@Ashburaczenko,你的链接和Paulina提出的问题之间有什么联系?你为什么不简单地将这些边的权重更新为0,然后重新运行Dijkstra?时间复杂度是一样的,那么实际的问题是什么呢?