在 Dijkstra 算法期间,如何处理单个顶点处的多个距离值?
当一个顶点从不同路径接收到多个距离计算时,你只保留最小的值并划掉较大的值。这确保顶点的标签始终代表从源出发的最短已知距离。较大的值被丢弃,因为它们不能通过该顶点导致更短的路径。
适用条件
- 顶点可以通过来自不同圈出顶点的多条路径到达。
- 对已标记的顶点执行新的距离计算。
理解与推导
- 从当前圈出的顶点计算到该顶点的新暂定距离。
- 将这个新距离与该顶点处的现有标签进行比较。
- 如果新距离更小,用新标签替换旧标签并更新前驱箭头。
- 如果新距离更大或相等,划掉新值并保留现有的较小标签。
- 继续选择下一个最小的未圈出顶点。
例子
在视频中,顶点 C 最初有一个来自家的标签 3。当从 A 处理时,计算出新距离 。因为 ,值 4 被划掉,3 保留为 C 的有效距离。演讲者说:“每当我们在一个顶点处有两个或更多数字时,我们将划掉任何不等于最小值的数字。”
容易误解的地方
- 在单个顶点处留下多个距离值,导致混乱。
- 用较大的值更新标签。
- 忘记划掉较大的值,这可能会在后来被错误地选中。
观看对应讲解
YouTubeDijkstra算法(寻找最短路径)
1:09 – 1:19原站看这一段 ↗
继续追问
答案依据视频资料生成并经过独立核验。若有疑问,请核对原视频或联系原作者。