找到非边相交最短路径的数量

时间:2016-06-02 14:50:56

标签: algorithm computer-science graph-theory shortest-path

给定加权无定向图,开始和结束顶点,我需要找到在任何边缘不相交的最短路径<(强度之和)的数量

我试图在这里使用Ford-Fulkerson算法,但它只给出了潜在的最大数量并且找不到最短路径。

使用Dijkstra算法在Ford-Fulkerson中找到路径也无济于事,因为它可能找到一条或多条连接最佳解决方案路径的路径。

据我所知,对于类似的问题有一些答案,但是有一个未加权和定向的图表。我想我需要某种强力方法,它会以某种顺序去除边缘。或者可能有一种已知的方法来解决这个问题?感谢。

编辑1:这里的图表显示了Dijkstra走错路的一个例子。红色边缘(最有可能)将被发现第一,它将使最佳解决方案成为不可能。我看到算法的目标是以某种方式去除所有红色边缘并做Vedang Mehta建议的

Example graph

1 个答案:

答案 0 :(得分:2)

我们可以先计算dis [u]:=从开始到u的最短路径长度。

然后我们构建一个直接图(流动网络)G&#39;来自dis []和G:

检查G

中的每个边缘(u,v)
if dis[u] = dis[v] + weight(u,v) then add a direct edge (u->v) to G'(capacities 1)

if dis[v] = dis[u] + weight(u,v) then add a direct edge (v->u) to G'(capacities 1)

非边相交最短路径的最大数量仅为

G&#39;从起始顶点到完成顶点的最大流量。

正确证明

显而易见的。

这是一个实现

http://lemon.cs.elte.hu/pub/doc/latest-svn/a00238.html