当前位置: 首页 > news >正文

最短路径 - Dijkstra(堆优化)中优先队列的懒删除如何理解?

什么是懒删除?

在Dijkstra算法中,同一个节点可能被多次加入优先队列,但只有最短的那次才是有效的。懒删除就是"推迟删除",直到真正从队列中取出时再判断是否有效。

举个例子理解

假设有这样一个图:

A --2--> B
A --5--> C
B --1--> C

执行过程:

  1. 初始

    • dist[A] = 0, dist[B] = ∞, dist[C] = ∞
    • 队列:[A(0)]
  2. 处理A

    • 更新B:dist[B] = 0+2=2,B(2)入队
    • 更新C:dist[C] = 0+5=5,C(5)入队
    • 队列:[B(2), C(5)]
  3. 处理B

    • 更新C:通过B到C:2+1=3 < 5
    • dist[C] = 3,C(3)入队
    • 队列:[C(5), C(3)] ← 同一个节点C在队列中出现两次
  4. 现在队列中有两个C

    • C(5) - 旧的,过时的
    • C(3) - 新的,更短的

懒删除的工作原理

while (!pq.isEmpty()) {int[] cur = pq.poll();  // 1. 从队列取出int u = cur[0], d = cur[1];// 2. 关键检查:如果取出的距离 > 当前记录的最短距离if (d > dist[u]) {continue;  // 跳过这个过时的记录}// 3. 只有这个距离 <= 记录的最短距离,才处理for (Edge e : graph[u]) {// ... 更新邻居}
}
http://www.rkmt.cn/news/79846.html

相关文章:

  • 第五十八篇
  • 洛谷 P1203 [USACO1.1] 坏掉的项链 Broken Necklace 题解 最短代码|详细
  • 2025年唐老狮:游戏开发教育领域深度解析与行业竞争力权威揭秘
  • day16-Trae开发飞机大战并上线
  • 2025年唐老狮权威解读:游戏开发课的体系化构建优势
  • java 多线程deubg调试
  • day14-影刀获取抖音评论-微信自动发消息
  • 您的能源预算,是否正被“异常气温”悄悄透支?智慧气象助力实现精准能耗管理 - 教程
  • 2025年热门的国标止水钢板高评价厂家推荐榜
  • 2025年知名的夜光石自发光材料/自发光材料厂家选购指南与推荐
  • 2025年比较好的衣物护理机厂家最新TOP实力排行
  • sadaasd
  • 2025年评价高的生活废水处理厂家推荐及选择参考
  • Python异步编程完全教程:asyncio/aiohttp核心用法与实战
  • 2025年热门的步入式恒温恒湿试验箱/高低温试验箱最新TOP厂家排名
  • python考点讲解- TYUT
  • 2025年口碑好的平开不锈钢合页/钢质门不锈钢合页TOP实力厂家推荐榜
  • Ganache-CLI以太坊私网JSON-RPC接口大全:从入门到精通 - 指南
  • 02 音视频开发--Windows环境搭建FFmpeg+Qt+Visual studio 2022
  • MySQL主从之间具有不同数据类型的列的复制
  • 2025年口碑好的大型面粉机行业内知名厂家排行榜
  • 2025年口碑好的高压SVG动态无功补偿装置/高压无功补偿装置厂家实力及用户口碑排行榜
  • 2025年专业定制触摸一体机最新TOP厂家排名
  • 告别盲目选型:2025 MES管理系统综合测评(价格、功能、实操性)
  • jar包和war包的区别
  • 2025年口碑好的opp束带行业内知名厂家排行榜
  • 102302124_严涛_第四次作业
  • 02 对象及数字对象
  • 2025雅思培训机构高分逆袭指南:精准推荐+避坑选课全攻略
  • 修炼金丹来培养元神的气功