即使在具有负边缘权重的图形中,我们是否可以使用Dijkstra来找到最短路径?

时间:2011-09-06 00:14:12

标签: algorithm graph shortest-path dijkstra

假设我有一个最小边缘权重为-100的图表。我可以在所有边缘添加100作为偏移并使用Dijkstra的算法吗?

请帮助我理解为什么这样的方法会给出错误的解决方案。

1 个答案:

答案 0 :(得分:14)

为每个边权重添加100会产生错误的解决方案,因为它会使具有更多边的路径比具有更少边的路径更差。

例如,假设我们有一个图形,从A点到B点的最短路径有3条边和5条总距离。假设从A点到B点的其他路径有2条边但总距离为10条

如果我们为每个边权重加100,那么第一条路径的成本为305,而第二条路径的成本为210.所以第二条路径比第一条路径短。

Example graph

因此,我们可以得出结论,为每个边权重添加偏移或偏差不一定保留最短路径。