图的最短路径算法对比

Floyd Dijkstra Bellman-Ford 队列优化的Bellman-Ford
空间复杂度 O(N^2) O(M) O(M) O(M)
时间复杂度 O(N^3) O((M+N)logN) O(NM) 最坏情况下也是O(NM)
适用情况 稠密图 稠密图 稀疏图 稀疏图
负权 可以解决 不能解决 可以解决 可以解决
有负权边 可以处理 不能处理 可以处理 可以处理
判断是否有负权回路 不能 不能 可以判定 可以判定

Floyd算法整体时间复杂度高,但可以处理带有负权边的图(无法处理负权回路),编码复杂度小

Dijkstra算法无法处理带有负权边以及负权回路的图,但具有可扩展性

Bellman-Ford算法可以处理带有负权边和负权回路的图