You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带正权环的有向图:无访问追踪的普通队列版Dijkstra是否会无限循环?

问题解答

结论:会陷入无限循环,原因如下:

  • 原Dijkstra算法的核心逻辑依赖优先队列每次选取当前距离起点最短的节点,且标记已访问后不再处理——因为图中全是正权边,节点第一次被取出处理时,对应的就是到起点的最短路径,后续再遇到该节点的路径只会更长,无需重复处理。
  • 改用普通队列+不追踪已访问的方式后,算法失去了“终止重复节点处理”的约束:
    1. 普通队列是先进先出,不按路径长度优先级处理节点;
    2. 每次处理节点时,会把所有子节点(包括已经被处理过的节点)无条件加入队列。
  • 当图中存在正权环时,比如存在A→B→C→A的环(每条边权值为正):
    • 第一次处理A时,会把B加入队列;处理B时把C加入队列;处理C时又会把A加入队列;
    • 后续A被取出处理时,又会重复把B加入队列,以此类推,环内的节点会被无限次加入队列,队列永远无法被清空,算法也就陷入了无限循环。

哪怕后续路径的总长度比已知路径更长,但因为没有“跳过已访问节点”或“仅当路径更短时才更新并加入队列”的判断,只要环存在,节点就会被反复入队,导致循环永不停止。

内容的提问来源于stack exchange,提问作者curiousengineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:12:23