我有一张拥有正权边和正权节点的图表。路径的长度被定义为沿着路径经过的所有边权重的总和,再加上沿途遇到的最大节点权重。
我最初认为修改后的Dijkstra算法可以解决这个问题,但我发现了一个测试用例它无法通过。我该如何解决这个问题?是否有任何标准算法可供参考?
我的修改版Dijkstra算法如下:在每个节点处,我记录到目前为止的最短路径,以及到目前为止所见过的最大节点权重,并使用它来计算邻居节点的路径长度。请参阅我的评论获取详细信息。
这是一个Dijkstra算法无法通过的图: http://i.imgur.com/FQhRzXV.jpg 绿色数字是节点标签。蓝色是权重(节点和边权重)。假设我想计算节点1和7之间的最短路径(用绿色标记)。Dijkstra算法的问题在于节点4始终记录路径1-8-9-4,因为它比路径1-2-3-4更短(前者长度为9,后者长度为13)。但是要到达节点7,路径1-8-9-4-5-6-7比路径1-2-3-4-5-6-7更长。
我最初认为修改后的Dijkstra算法可以解决这个问题,但我发现了一个测试用例它无法通过。我该如何解决这个问题?是否有任何标准算法可供参考?
我的修改版Dijkstra算法如下:在每个节点处,我记录到目前为止的最短路径,以及到目前为止所见过的最大节点权重,并使用它来计算邻居节点的路径长度。请参阅我的评论获取详细信息。
这是一个Dijkstra算法无法通过的图: http://i.imgur.com/FQhRzXV.jpg 绿色数字是节点标签。蓝色是权重(节点和边权重)。假设我想计算节点1和7之间的最短路径(用绿色标记)。Dijkstra算法的问题在于节点4始终记录路径1-8-9-4,因为它比路径1-2-3-4更短(前者长度为9,后者长度为13)。但是要到达节点7,路径1-8-9-4-5-6-7比路径1-2-3-4-5-6-7更长。