尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

最短路径 - Dijkstra(堆优化)中优先队列的懒删除如何理解?
📅 发布时间:2026/6/19 14:34:59

什么是懒删除?

在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]) {// ... 更新邻居}
}

相关新闻

  • 第五十八篇
  • 洛谷 P1203 [USACO1.1] 坏掉的项链 Broken Necklace 题解 最短代码|详细
  • 2025年唐老狮:游戏开发教育领域深度解析与行业竞争力权威揭秘

最新新闻

  • 深入解析NXP MC17XS6500:汽车级智能高边开关的设计、诊断与安全实践
  • Autohotkey进阶:从虚拟键码到多媒体按键的深度映射
  • 2025年Web自动化测试工具选型指南:从Selenium到AI辅助的实战对比
  • 3分钟掌握OBS背景移除:从零到精通的AI抠像实战指南
  • 【实战解析】ATGM332D-5N GPS模块:从NMEA数据到精准坐标的嵌入式实现
  • 2026石家庄漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号