在无向循环中找到所有对最短路径的最快方法

时间:2015-07-21 01:47:58

标签: algorithm graph-theory

我有无向图,这本身就是一个像这样的简单循环

a---b---c
|       |       
d---e---f

在知道这种情况的情况下,哪种是计算所有最短路径的最快方法?

1 个答案:

答案 0 :(得分:2)

A开始的一次传递顺时针遍历图形,并且每个节点计算距A的距离。假设节点X的距离为a[X]。这种方式对于任何对(X, Y)节点,距离将为:

min(abs(aX - aY), total - abs(aY - aX))

其中total是所有边权重的总和。

在您的情况下a[B](我将使用节点的大写)将为1,a[C]将为2,a[D]将为3等,总数将为6.然后如果你想计算b和f之间的距离,那就是

min(abs(aB - aF), total - abs(aB - aF)) = 
min(abs( 1 -  3),     6 - abs( 1 -  3)) = 
min(           2,                    4) =
2