首先,Dijkstra算法与Floyd算法都是广度优先搜索的算法。

都可以用来求单源点到其他所有点的最短路径。(即从一个点到任意一个点的最短距离)

1.Dijkstra是不能计算负权图的。

Dijkstra算法本质上是贪心算法,下一条路径都是由当前更短的路径派生出来的更长的路径。不存在回溯的过程。

如果权值存在负数,那么被派生出来的可能是更短的路径,这就需要过程可以回溯,之前的路径需要被更短的路径替换掉,而Dijkstra算法是不能回溯的。它每一步都是以当前最优选择为前提的。

2.Floyd算法实际上是一个动态规划算法。

所以一定能用贪心算法解的问题肯定可以由动态规划解。但是可以用动态规划来解的问题,不一定能用贪心算法来解。