找到最大限度地减少从A到B的最短路径的边缘

时间:2014-10-06 21:45:57

标签: algorithm graph shortest-path

给定具有边权重的无向图G,一组候选边(长度| V | + | E |)以及顶点A和B,找到最多减少从A到B的最短路径的边。

例如:

enter image description here

候选边缘是虚线。从A到B的最短路径是A - >。 C - > D - > G - > B(费用7)。但是对于边缘(D,B),最短路径是A - >。 C - > D - > B(成本6),因此算法应返回(D,B)。

我想出了一个强力解O((| V | + | E |)^ 2 log | V |):

    每个候选边缘的
    • 将边添加到图表
    • 运行Dijkstra找到从A到B的最短路径的费用
    • 删除边缘
  • 返回导致最短路径的候选边缘

但有什么更好的吗?

1 个答案:

答案 0 :(得分:7)

一种方法是:

  • 从A运行Dijkstra并将距离存储到A [n]
  • 中的每个节点n
  • 从B运行Dijkstra并将距离存储到B [n]
  • 中的每个节点n
  • 遍历每个候选边缘。对于连接顶点x和y的权重为w的边,比较w + A [x] + B [y]和w + A [y] + B [x]

当使用候选边缘时,w + A [x] + B [y]和w + A [y] + B [x]中的较小者给出A和B之间的最短路径。