SPFA即shotest path faster algorithm,由意思就可以看出该算法效率比较高。
其实SPFA就是bellman-ford算法的一个优化。
具体做法是用一个队列保存待松弛的点,然后对于每个出队的点依次遍历每个与他有边相邻的点(用邻接表效率较高),如果该点可以松弛并且队列中没有该点则将它加入队列中,如此迭代直到队列为空。
据说平均效率是O(E),可见对边稀疏的图用此算法效果是相当可观的。
若要判负环路,则记录一个点的入队次数,若超过边数,则有负权环。
SPFA即shotest path faster algorithm,由意思就可以看出该算法效率比较高。
其实SPFA就是bellman-ford算法的一个优化。
具体做法是用一个队列保存待松弛的点,然后对于每个出队的点依次遍历每个与他有边相邻的点(用邻接表效率较高),如果该点可以松弛并且队列中没有该点则将它加入队列中,如此迭代直到队列为空。
据说平均效率是O(E),可见对边稀疏的图用此算法效果是相当可观的。
若要判负环路,则记录一个点的入队次数,若超过边数,则有负权环。
相关文章: