dijkstra算法为什么不能有负边?
因为Dijkstra算法在计算最短路径时,不会因为负边的出现而更新已经计算过(收录过)的顶点的路径长度,
这样一来,在存在负边的图中,就可能有某些顶点最终计算出的路径长度不是最短的长度。
假设前两个数字表示顶点,第三个数字表示边的权值或路径长度,
考虑有三个顶点,三条边:(1,2,1),(1,3,2),(2,3,-3),最终计算出的路径长度是(1,2,1),(1,3,-2),但明显存在(1,2,-1)这条更短的路径。
因为Dijkstra算法在计算最短路径时,不会因为负边的出现而更新已经计算过(收录过)的顶点的路径长度,
这样一来,在存在负边的图中,就可能有某些顶点最终计算出的路径长度不是最短的长度。
假设前两个数字表示顶点,第三个数字表示边的权值或路径长度,
考虑有三个顶点,三条边:(1,2,1),(1,3,2),(2,3,-3),最终计算出的路径长度是(1,2,1),(1,3,-2),但明显存在(1,2,-1)这条更短的路径。