繁体   English   中英

在有向加权图中找到两个节点之间的最短路径

[英]Find shortest path between two nodes in directed weighted graph

我有向加权图G = <V, E> 我需要在O((V + E)*logV)找到st之间s最短路径。 如果我具有经典的公制路径权重,那将是一个非常简单的任务。 但事实并非如此。

Weight of path = two heaviest edges in this path

因此, Dijkstra's algorithm with modified binary heap经典Dijkstra's algorithm with modified binary heap不起作用。 我认为,我必须修改此算法。 我正在尝试做,但是没有成功。

Example.

在此处输入图片说明

35之间的路径权重= 4 + 2 = 6

37之间的路径权重= 4 + 4 = 8

根据David Eisenstat的反例编辑了我的答案。

您在问题中给出的示例不是Dijkstra何时不起作用的好示例。

我相信您可以通过修改Dijkstra来实现。 关键是要跟踪每个顶点的多个替代方案。 您不仅必须存储构成最短路径的weigth,而且还必须存储max <shortest.max和min> shortest.min的替代方法。

Dijkstra很贪婪,因此您需要弄清楚的是:一旦确定了最短路径,是否有可能找到另一个更短的路径。 因为您会发现路径长度越来越大,所以这是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM