Dijkstra 算法是用于计算单源最短路径的算法。它的基本思想是,从起点开始,每次找到距离起点最近的未曾经访问过的顶点,并更新它到起点的最短路径。
算法步骤如下:
- 将起点加入已访问的顶点集合,并将其到起点的距离设为 0。
- 从起点开始,每次找到距离起点最近的未曾经访问过的顶点 u。
- 将 u 加入已访问的顶点集合,并更新从起点到所有顶点 v 的距离,如果从起点到 u 再到 v 的距离比目前记录的距离更小,就更新它。
- 重复步骤 2 和 3,直到所有的顶点都被访问过。
Dijkstra 算法的时间复杂度为 O(n^2),如果使用堆优化,则可以将时间复杂度优化到 O(nlogn)。