algorithm-SPFA
SPFA算法
概念
SPFA算法是一种基于Bellman-Ford算法的改进版本,它用于计算图中各节点到源节点的最短路径。与Bellman-Ford算法不同的是,SPFA算法使用了队列来优化计算,从而在某些情况下加速了计算过程。
SPFA算法的基本思想是从源节点开始,将源节点放入队列中,然后不断从队列中取出节点,考察它的邻接节点,以更新到这些邻接节点的最短距离。如果某个节点的最短距离被更新,且该节点不在队列中,那么将该节点加入队列中,以便后续继续考察。
复杂度是O(V*E)
步骤
初始化:将源节点的最短距离设置为0,其他节点的最短距离设置为无穷大(或一个足够大的值),并将源节点加入队列中。
迭代处理队列中的节点:
从队列中取出一个节点。
考察该节点的所有邻接节点,如果通过当前节点到达邻接节点的路径比已知的最短路径更短,则更新邻接节点的最短路径。
如果邻接节点的最短路径被更新,且邻接节点不在队列中,将它加入队列中。
重复步骤2,直到队列为空。
最短路径计算完成后,可以从源节点到任意目标节点的最短路径已知。
原则
只让当前点能到达的点入队
如果一个点已经在队列里, ...