我们知道,在使用dijkstra求单源最短路径时,如果边的权重是负值,那么有可能得不出正确的结果,但是,注意我的话,是“有可能”,并不是说只要出现负边权,dijkstra一定无法处理,有时候即便出现负边权,dijkstra也能正确处理,我举两个例子就能证明我的观点,看下图:
图片中,两个图都出现了负边权,左侧的图1无法使用dijkstra,但是右边的图2就可以使用,不信的话,自己按照dijkstra的原理模拟一遍就知道了。
dijkstra之所以不能处理负边权,其实和负边权没有直接关系,问题的根本在于dijkstra对于已经确定最短路径的结点无法进行二次修改和更新,