最短路径

路径最短问题和松弛操作(Relaxation)

最短路径问题 Shortest Path

  • 路径规划 城市,路由

  • 工作任务规划

image-20191016101106008

广度优先遍历 -> 最短路径树 Shortest Path Tree

单源最短路径 Single Source Shortest Path

无权图的最短路径

image-20191016101601838

松弛操作是求最短路径的核心

Dijkstra 算法的思想

dijkstra 单源最短路径算法

前提: 图中不能有负权边

复杂度 O(ElogV)

image-20191016102519633

负权边和Bellman-Ford算法

拥有负权环的图,没有最短路径

Bellman-Ford 单源最短路径算法

前提:图中不能有负权环

Bellman-Ford 判断图中是否有负权环

复杂度O(EV)

image-20191016120522021
  • 如果一个图没有负权环,从一个点到另一个点的最短路径,最多经过所有的V个顶线,有V-1条边。否则存在定点经过了两次,即存在负权环。

  • 对一个点的一次松弛操作,就是找到经过这个点的另外一条路径,多一条边,权值更小。

  • 如果一个图没有负权环,从一个点到另外一个点的最短路径,最多经过所有的V个顶线,有V-1条边。

  • 对所有的点进行V-1次松弛操作。

  • 对所有的点进程V-1次松弛操作,理论上就找到了从源点到其他所有点的最短路径。

  • 如果还可以继续松弛,就说明原图中有负权环

##更多和最短路径相关的思考