Dijkstra 算法是一种用于 计算加权图中最短路径 的算法,由 Edsger W. Dijkstra 在 1956 年提出。它适用于 非负权重图,广泛应用于路径规划、交通调度、网络路由等领域。
1. 算法核心思想
Dijkstra 算法的基本思路是:
- 设定一个 起始节点,初始化到所有其他节点的最短距离为无穷大(∞)。
- 使用一个 优先队列,每次选择当前已知的最短路径节点进行扩展。
- 更新邻居节点的最短路径,如果经过当前节点的路径更短,则更新。
- 重复上述过程,直到所有节点都被访问,或者找到目标节点的最短路径。
2. 适用范围
✅ 适用于:
- 无向图和有向图
- 非负权重图
- 单源最短路径问题(从一个起点到所有其他节点的最短路径)
❌ 不适用于:
- 存在负权重边的图(因为 Dijkstra 依赖于每次选取当前最短路径节点,负权边可能导致错误的路径选择)
- 动态变化的图(如路径权重在执行过程中变化,需要