多图的多宿最短不相交路径问题的实现

时间:2019-04-08 14:19:43

标签: algorithm graph-theory graph-algorithm shortest-path dijkstra

我想在对Banerjee等人的解释中为多图实现Suurballe和Tarjan的最短的边不相交路径对(http://web.cs.iastate.edu/~pavan/papers/short.pdf ,仅依靠第3节)。

关于简单图,可以为具有源 s G =(V,E)简单图定义该算法,非负边成本 c(u,v)如下:

(1)使用Dijkstra算法构造以 s G 的最短路径树 T

(2)降低所有边(a,b)的成本,因为 c'(a,b)= c(a,b)+ d(a)-d( b),其中 d(a)是顶点 a 与顶点 s 的距离。

(3)通过以下方式创建辅助图 G'=(V',E')

(3.1)设置 V'= V E' =空,

E \ T 的每个非树边缘(a,b)的

(3.2):

(3.2.1)将 V *定义为 T <中 a b 之间路径中的节点集/ em>,除了 b

对于 V 的每个 v' *

(3.2.2):设置 E'= E'U {(v',b)} c'(v',b)= c'(a,b)

(4)为以 c'加权的 G'构造一个以 s 为根的最短路径树 T'。 em>函数,使用Dijkstra算法。

(5)将 T'中每个顶点 x 的前任另存为 q(x),并将非树边缘的尾部保存为 G 导致(q(x),x)插入 G'中。

(6)以下列方式为 V 的每个 v 创建一对不相交的路径:

(6.1)在 G 中标记从 v s 的最短路径中的所有顶点。

(6.2)通过下面给出的步骤 Traversal 的两次迭代来生成路径。在每次迭代中,都会生成最短对的一条路径。

Traversal:定义 x = v ,路径为空,并重复以下步骤,直到 x = s 。如果标记了 x ,请取消标记,然后将(p(x),x)添加到路径中,否则添加(y,x)到路径,其中 y T x 的父级。

能否请您帮我重新构造多图算法?我猜想Banerjee 等人论文第3节的G',p(),q()和 Traversal 应该以某种方式修改,但我不希望这样做。知道怎么做。

0 个答案:

没有答案