在无向循环中找到所有对最短路径的最快方法
Fastest way to find all-pair shortest paths in a undirected cycle
我有一个无向图,它本身就是一个像这样的简单循环
a---b---c
| |
d---e---f
已知此条件,计算所有对最短路径的最快方法是什么?
从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
我有一个无向图,它本身就是一个像这样的简单循环
a---b---c
| |
d---e---f
已知此条件,计算所有对最短路径的最快方法是什么?
从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