确定两个节点之间的路径时没有负循环

时间:2016-12-22 18:49:12

标签: algorithm graph shortest-path

如果我们想确定该图的两个节点之间的最短路径,为什么定向加权图不能包含负权重周期?

4 个答案:

答案 0 :(得分:2)

因为负循环会以下列方式影响路径权重:

a----------b-----------c---------------d
     2     |     2     |       4
           |           |
           | -3        | -3
           |           |
           e-----------f
                 2

首次尝试寻找路径:

a->b->c->d cost = 8

现在让我们进入循环:

a->b->c->f->e->b->c->d cost = 8 + (-2)

两个人的价格便宜,但我们可以做得更好:

a->b->c->(f->e->b->c)^i->d cost = 8 + (-2) ^ i

显而易见的问题:每次循环都会使路径变得更便宜,我们最终会以无限循环结束。

但这并不适用于所有路径寻找算法。例如,Bellman-Ford-algorithm能够处理负边缘,效率较低。

答案 1 :(得分:1)

因为如果确实如此,最短路径可以是 -inf

想象一下这个例子,你想要计算A和D之间的最短路径。可能你想要它是A - B - D,6步。但是你可以根据需要多次循环B-C-B循环。然后,最短路径是A - B - C - B - C - ... - B - C - B - D.

example1

答案 2 :(得分:0)

因为如果有这样的循环,对于每条"最短的路径"你可能会想,我可以通过简单地再次遍历这个负面循环来选择更好的一个。这肯定会降低总体路径成本,因为假设这个周期具有负权重。

答案 3 :(得分:0)

因为“最短”实际上意味着“最低成本/重量”路径。

通过使负负值循环,可以使用它来使任意路径(包含此循环)的权重任意低。