围绕 Dijkstra 算法,观察从某个起点到终点的最短路径及其松弛过程。
给定一个带非负权边的有向图(或无向图),以及起点 s 和终点 t,最短路径问题要求找到从 s 到 t 的路径,使得路径上的边权和最小。
Dijkstra 算法通过每次选取「当前距离起点最近且尚未确定最短路」的点,利用它去松弛相邻边,逐步确定所有点的最短路,时间复杂度约为 O(n²)(这里使用朴素实现,便于展示过程)。
每行表示一条有向边 u → v,权重为 w;若想表示无向边,可输入两行 u v w 和 v u w。
结论:
下方依次列出算法在每一步中选取的点,以及对相邻边进行松弛时对 dist 数组的更新情况。左侧为序号,右侧为过程。