图论part09dijkstra算法

dijkstra算法:有向图的最短路径及到达问题

该算法可以同时求到所有节点的最短路径

权值不能为负数

类似于pirm算法(针对无向图),dijkstra算法三部曲:

  1. 选源点到哪个未被访问的节点近(prime:哪个未被访问的节点到生成树的距离最近)
  2. 标记最近的点(将距离树最近的节点加入树)
  3. 更新非访问节点到源点的距离(更新minDist数组)

还是要初始化minDist数组用来存距离源点(起点)的最小距离,且初始化int最大值

这里要清楚和最小生成树就不同了, 最小生成树里面含有多个节点,一个非树节点可能和树里面的多个节点都相连,mindist存的是距离最近的那一个,比如树里有五个节点,节点6(非树)与树中的节点4、5都相连,距离分别是3和6,mindist取3;而dijkstra算法是存每个未访问节点到起点的最短距离,在mindist里面从起点开始数值应该由近到远累加的,所以说该算法可以求起点到所有节点的距离

Dijkstra堆优化

就是利用小顶堆将第一步优化,在使用邻接表使遍历更高效

小顶堆

相关推荐
启观川8 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
码爸8 小时前
排序算法介绍
python·算法·排序算法
动词ing10 小时前
【题目练习】算法 组合总和||
算法
longlongzihan10 小时前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
专业程序开发源10 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计
Logic10110 小时前
C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
c语言·数据结构·算法·贪心算法·时间复杂度·空间复杂度·欧几里得算法
yi01110 小时前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
极光通讯11 小时前
服务器内存来料检验(IQC)实操:批次追溯、外观判定与上机验证
java·服务器·算法
淡海水11 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
ClickHouseDB11 小时前
ClickHouse 大规模 OpenTelemetry 数据接入架构的可靠性演进
算法