给定加权无定向图,开始和结束顶点,我需要找到在任何边缘不相交的最短路径<(强度之和)的数量。
我试图在这里使用Ford-Fulkerson算法,但它只给出了潜在的最大数量并且找不到最短路径。
使用Dijkstra算法在Ford-Fulkerson中找到路径也无济于事,因为它可能找到一条或多条连接最佳解决方案路径的路径。
据我所知,对于类似的问题有一些答案,但是有一个未加权和定向的图表。我想我需要某种强力方法,它会以某种顺序去除边缘。或者可能有一种已知的方法来解决这个问题?感谢。
编辑1:这里的图表显示了Dijkstra走错路的一个例子。红色边缘(最有可能)将被发现第一,它将使最佳解决方案成为不可能。我看到算法的目标是以某种方式去除所有红色边缘并做Vedang Mehta建议的
答案 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;从起始顶点到完成顶点的最大流量。
正确证明
显而易见的。
这是一个实现