Dijkstra算法

结点分为两个集合,已确定最短路径的点集合S和未确定最短路径的点集合T,使用 D u D_{u} Du表示从起点s到终点u的最短路径
算法

  1. 初始化集合S为空,集合T包含所有的顶点,同时初始化 D s = 0 D_{s}=0 Ds=0,其它点的距离 D u = + ∞ D_{u}=+\infty Du=+
  2. 从集合T中取最短路径最小的点u加入到集合S中
  3. 对与顶点u的相邻的顶点作松驰操作
  4. 重复2直到集合T为空

时间复杂度 O ( ( n + m ) log ⁡ n ) O((n+m)\log n) O((n+m)logn)
其中n为顶点数,m为边数

你可能感兴趣的:(算法笔记,Dijkstra)