迪杰斯特拉算法旨在解决给定图和起点时,寻找从起点到图中所有节点的最短路径问题。此算法操作基于两个集合,分别用于跟踪已找到最短路径的节点和待处理节点。算法流程如下:首先,创建布尔数组 `sptSet` 用于标识各节点是否已找到最短路径,初始全设为 `False`。初始化距离数组 `dist`,设置所有节点距离无穷大,仅将起点的距离设为0,以便优先处理。算法循环直至所有节点均被加入 `sptSet`:从不在 `sptSet` 中选取距离最小的节点 `u`。将 `u` 添加至 `sptSet`,即设 `sptSet[u] = True`。更新 `u` 的相邻节点的 `dist` 值。若从起点到 `u` 再到相邻节点 `v` 的路径总长小于直接从起点到 `v` 的路径,更新 `v` 的 `dist` 值。通过此迭代过程,迪杰斯特拉算法逐步确定从起点到图中每个节点的最短路径。