边缘权重的最短路径在每个其他跳跃上加倍

时间:2017-02-12 18:24:15

标签: algorithm graph-theory dijkstra shortest-path

如何优化解决图论理论问题,其中边缘权重会在每个其他甚至第三跳上发生变化?我还能使用某种改进的Dijkstra算法吗?

1 个答案:

答案 0 :(得分:1)

您可以构建一个新图表来编码不断变化的成本(尽管实际上,最好不要明确构建新图表。)

给出类似

的图表
     1
  A --> B
  |   / |
2 |  /5 | 4
  v <   v
  C <-- D
     3

每个顶点产生两个顶点,每个弧形产生两个弧。弧线以原始重量从原件复制到复印件,并以双倍重量从原件复制到原件。

   1            5            3
A ---> B'    B ---> C'    D ---> C'

    2           10            6
A' ---> B    B' ---> C    D' ---> C

   2            4
A ---> C'    B ---> D'

    4            8
A' ---> C    B' ---> D

现在从源或其副本中搜索,具体取决于第一跳是否加倍,寻找到目的地或其副本的最便宜路径。