dijkstra、SPFA、Bellman-ford、ASP、Floyd-warshall比较
类型 | 算法 | 限制 | 运行时间 |
单源最短路径 | 不含负边 | 依赖优先队列实现,如O(E+VlgV) | |
SPFA | 无限制(可检测负圈) | O(k⋅∣E∣) (k≪∣V∣)O(k⋅∣E∣) (k≪∣V∣) | |
Bellman-Ford | 无限制(可检测并输出负圈) | O(∣V∣⋅∣E∣)O(∣V∣⋅∣E∣) | |
ASP | 无圈 | O(∣V∣+∣E∣)O(∣V∣+∣E∣) | |
全源最短路径 | Floyd-Warshall | 无限制 | O(∣V∣^3) |
备注:无向图一条边即可为一个圈 |
如果我们只需要一个起点和一个终点,难道不应该比计算一个起点任意终点更节省时间么?答案还真的不是,目前还没有发现比算从源点到所有点更快的算法,所以一个起点一个终点也是用单源最短路径。