基本思想
我写的dijkstra算法解析,有兴趣可以看一看
同迪杰斯特拉算法不同,SPFA能处理负权边的情况。SPFA更像是广度优先搜索,枚举了与当前点连接的所有点,这些点的最短路由于当前点最短路的更新也有可能更新,从而影响更多的点;
说了半天可能没人听得懂~~ 举个例子
图片来自百度百科
从a点出发(a与a的距离是0,未连接我们视为无限大)
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ |
枚举a出发的所有点
更新b,c,d。b,c,d入队,a出队;
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 24 | 8 | 15 | ∞ | ∞ | ∞ |
这些点的更新导致:
b点:更新e=b(24)+邻边(6)=30,判断30&