我有无向图,这本身就是一个像这样的简单循环
a---b---c
| |
d---e---f
在知道这种情况的情况下,哪种是计算所有最短路径的最快方法?
答案 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