图论——最短路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表记录了源点到每个节点的最短距离。

相关推荐
lwf0061642 小时前
导数学习日记
学习·算法·机器学习
头发够用的程序员2 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
武帝为此3 小时前
【数据清洗缺失值处理】
python·算法·数学建模
Halo_tjn3 小时前
Java 基于字符串相关知识点
java·开发语言·算法
念越4 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光4 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
CappuccinoRose5 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦5 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav6 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
小O的算法实验室6 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进