[英]Find shortest path between two nodes in directed weighted graph
我有向加权图G = <V, E>
。 我需要在O((V + E)*logV)
找到s
和t
之间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.
3
和5
之间的路径权重= 4 + 2 = 6
3
和7
之间的路径权重= 4 + 4 = 8
根据David Eisenstat的反例编辑了我的答案。
您在问题中给出的示例不是Dijkstra何时不起作用的好示例。
我相信您可以通过修改Dijkstra来实现。 关键是要跟踪每个顶点的多个替代方案。 您不仅必须存储构成最短路径的weigth,而且还必须存储max <shortest.max和min> shortest.min的替代方法。
Dijkstra很贪婪,因此您需要弄清楚的是:一旦确定了最短路径,是否有可能找到另一个更短的路径。 因为您会发现路径长度越来越大,所以这是不可能的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.