Dijkstra算法和Bellman算法思想有很大的区别:参考链接http://www.java3z.com/cwbwebhome/article/article1/1359.html?id=4720
Dijkstra算法在求解过程中,源点到集合S内各顶点的最短路径一旦求出,则之后不变了,修改的仅仅是源点到T集合中各顶点的最短路径长度。
Bellman算法在求解过程中,每次循环都要修改所有顶点的dist[],也就是说源点到各顶点最短路径长度一直要到Bellman算法结束才确定下来。
如果存在从源点可达的负权值回路,则最短路径不存在,因为可以重复走这个回路,使得路径无穷小。 在Bellman算法中判断是否存在从源点可达的负权值回路的方法:
SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。
参考链接:http://wenku.baidu.com/view/f8344b1352d380eb62946d5a.html