我有一个带有正边权重和正节点权重的图表。路径的长度定义为沿路径的所有边权重之和,加上沿路径遇到的最大节点权重。
我最初认为修改后的 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 长。