题目
Dijkstra算法可以处理带有负权边的图A. √B. X
Dijkstra算法可以处理带有负权边的图
A. √
B. X
题目解答
答案
B. X
解析
Dijkstra算法的核心是通过贪心策略逐步确定各顶点的最短路径,其正确性依赖于边权非负的条件。若存在负权边,可能导致已确定的最短路径被后续更短路径覆盖,而算法无法检测到这种变化,从而输出错误结果。因此,Dijkstra算法无法处理含负权边的图。
关键点解析
-
贪心策略的局限性
Dijkstra算法假设一旦确定某顶点的最短距离,后续无需调整。但负权边可能使已处理顶点的后续路径变得更短,导致算法失效。 -
负权边的影响
例如:路径A→B→C的总权重为2 + (-3) = -1,比直接A→C的5更短。若算法先处理A→C,再发现更优路径时,C已被标记为已处理,无法更新。 -
算法机制限制
Dijkstra依赖优先队列选择最小距离顶点,但负权边可能需要多次处理同一顶点,而算法不支持此机制。此时应改用Bellman-Ford算法(可处理负权边)。