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

图论——最短路Dijkstra算法

Dijkstra算法:给定一个源点,求解从源点到每个点的最短路径长度。单源最短路径算法。
适用范围:有向图边的权值没有负数

普通堆实现的Dijkstra算法最普遍、最常用:

a.节点弹出过就忽略
b.节点没弹出过,让其它没弹出节点距离变小的记录加入堆

普通堆实现的Dijkstra算法,时间复杂度o(m*1ogm),m为边数
1,distance[i]表示从源点到i点的最短距离,visited[i]表示i节点是否从小根堆弹出过
2,准备好小根堆,小根堆存放记录:(x点,源点到x的距离),小根堆根据距离组织
3,令distance[源点]=0,(源点,0)进入小根堆
4,从小根堆弹出(u点,源点到u的距离)
a.如果visited[u]=true,不做任何处理,重复步骤4
b.如果visited[u]=false,令visited[u]=true,u就算弹出过了
然后考察u的每一条边,假设某边去往v,边权为w
1) 如果visited[v]== false并且distance[u]+ w <distance[v]
令distance[v]= distance[u] + w,把(v,distance[u]+ w)加入小根堆
2)处理完u的每一条边之后,重复步骤4
5,小根堆为空过程结束,distance表记录了源点到每个节点的最短距离。

http://www.jsqmd.com/news/403308/

相关文章:

  • 2026年保健品推荐:品质与口碑并存,养胃颗粒/保健饮品/保健品,保健品品牌有哪些 - 品牌推荐师
  • [NOI2018] 冒泡排序
  • 通过MATLAB控制COMSOL Multiphysisc仿真进程模拟局部放电,建立有限元仿真模型
  • 【GLM-5 陪练式前端新手入门】第四篇:卡片布局 —— 让个人主页内容更有层次
  • Splay进阶
  • 【GLM-5 陪练式前端新手入门】第三篇:网页导航栏 —— 搭建个人主页的 “指路牌”
  • [AI提效-17]-豆包图片生成功能新手入门指南
  • 写一个自动检测照片光线构图,给出优化建议,颠覆拍照全靠盲拍。
  • Python基于Vue的 古城景区管理系统的设计与实现django flask pycharm
  • 视频孪生平台之上:镜像视界三维实时解算体系在危化园区风险半径动态解算中的全球领先性研究
  • 2134523
  • 5784784
  • 深度解读:Android开发工程师岗位核心能力与技术进阶之路——以苏州池久节能电气有限公司职位要求为例
  • 苏州智观易盛信息科技有限公司 Android 开发工程师职位深度解析与面试全攻略
  • AI 2.0提示工程架构师:提示词调试与优化的9个实用工具
  • 大数据领域日志数据压缩算法的比较与选择
  • Zookeeper为大数据领域分布式计算带来的优势
  • 解决推荐同质化!Agentic AI提示工程在个性化推荐系统中的创新应用
  • 顶极模型大比拼,到底谁才是真正的编程之王?
  • AI应用架构师与科研数据AI分析工具的协同作战
  • 0222cursor日志
  • 大数据领域分布式存储的扩展性设计思路
  • Python json write serialized content to json file
  • 【脑洞编程】从“治国理政”看懂C++广播机制:全局变量的“中央集权”与“局部自治”
  • 设计一个电商平台的购物车系统。
  • C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
  • 深入理解 Java join:它到底做了什么?和协程挂起有什么区别?
  • Java 版 Claude Code CLI 来了!(国产开源)Solon Code CLI 发布
  • [AI提效-15]-豆包多对话功能详解:打破传统AI工具“单对话单一主题、新对话从零起步”的局限,高效衔接创作,告别反复沟通成本。
  • SpringBoot整合ES8向量检索:构建高精度智能客服系统的工程实践