单源最短路径 -- Dijkstra

Dijkstra算法就适用于解决带权重的有向图上的单源最短路径问题 -- 同时算法要求图中所有边的权重非负(这个很重要)

针对一个带权有向图G , 将所有节点分为两组S和Q , S是已经确定的最短路径的节点集合,在初始时为空(初始时就可以将源节点s放入,毕竟源节点到自己的代价是0 ), Q为其余未确定最短路径的节点集合,**每次从Q中找出一个起点到该节点代价最小的节点u,将u从Q中移除,并放入S中,对u每一个相邻节点v进行松弛操作。**松弛即对每一个相邻节点v,判断源节点s到节点u的代价与u到v的代价之和是否比原来的s到v的代价更小,若代价比原来小则要将s到v代价更新为s到u与u到v的代价之后,否则维持原样,如此反复,直到Q集合

贪心策略:每次去选从s->Q 去选最短路径边的那个顶点,去更新其连接的路径

代码实现

Dijstra算法的缺陷

带有负权路的,搞不定

相关推荐
拂拉氏12 分钟前
【知识讲解-题目讲解】:二叉树的前、中、后序遍历的三种实现(递归,非递归,Morris遍历)与二叉树oj题讲解(二叉树最近公共祖先,二叉树展开为链表)
数据结构·算法·leetcode·二叉树·遍历
ʚ希希ɞ ྀ42 分钟前
打家劫舍----背包dp
数据结构·算法·leetcode
微风欲寻竹影1 小时前
队列(Queue)-详解
java·数据结构
YL200404269 小时前
048路径总和III
数据结构·dfs
️是7811 小时前
信息奥赛一本通—编程启蒙(3395:练68.3 车牌问题)
数据结构·c++·算法
故事和你9112 小时前
洛谷-【图论2-1】树5
开发语言·数据结构·c++·算法·动态规划·图论
paeamecium13 小时前
【PAT甲级真题】- String Subtraction (20)
数据结构·c++·算法·pat考试·pat
-To be number.wan15 小时前
为什么关系数据库主要采用b+树、散列表来构建索引
数据结构·b树·散列表·数据库系统
澈20715 小时前
滑动窗口算法:双指针高效解题秘籍
数据结构·c++·算法
如竟没有火炬16 小时前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先