Bellman-Ford算法的优化,不用每次松弛所有边,只用松弛上次更新过的顶点的出边。
需要记录顶点是否在队列中,如果可能存在负环,还需要记录入队次数。
当更新某一结点时,判断它是否存在队列中,如果不在则将其入队。如果入队次数大于n-1次,则说明它被更新的次数大于n-1,说明存在负环。
以下摘自《算法笔记》:
Bellman-Ford算法的优化,不用每次松弛所有边,只用松弛上次更新过的顶点的出边。
需要记录顶点是否在队列中,如果可能存在负环,还需要记录入队次数。
当更新某一结点时,判断它是否存在队列中,如果不在则将其入队。如果入队次数大于n-1次,则说明它被更新的次数大于n-1,说明存在负环。
以下摘自《算法笔记》: