首页 > 编程语言 >最短路径算法

最短路径算法

时间:2024-03-20 23:33:43浏览次数:36  
标签:路径 距离 最短 算法 更新 邻接 集合

原文链接:https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368

已知起始结点,求最短路径的问题。适合使用Dijkstra算法。迪杰斯特拉算法是由荷兰计算机科学家在1956年发现的算法,此算法使用类似广度优先搜索的方法解决了带权图的单源最短路径问题。它是一个贪心算法。

全局最短路径问题- 求图中所有的最短路径。适合使用Floyd-Warshall算法

Dijkstra算法:

 

 

首先,可以设置两个集合分别是A和B,A用来存放已经求出最短路径的点,B用来存放还未计算出最短路径的点,

我们从图中任选一点来解题,假设我们将源点source选择在” 0 "这个点。一开始所有点到达源点0的距离我们假设为∞,代表不可达。源点0到自己本身的距离为0,初始化如下:此时A集合为:{0},B集合为:{1,2,3,4,5,6}

 

第一步:从0点开始,更新和0邻接的所有点的距离,此时,因为与0邻接的有1和2,并且到这两个点的距离,小于原来的∞距离,所以要将这两个点到0的距离都进行更新如下图,

 

第二步:从B集合里面选择一个点加入A集合,这个点要满足距离0点的距离最短,因此我们选择2这个点添加到集合A,此时集合A变为:{0,2},集合B变为:{1,3,4,5,6},如下图

 

第三步:选择刚刚加入的这个2点,更新所有与2点邻接的点,因为与2邻接的点有3和5,并且这两个点到0点的距离小于原来它们到0点的距离∞

 

第四步:从B集合里面选择1这点加入到集合A中,因为1这个点在B集合中距离0最近,如下图,此时A集合变成:{0,1,2},B集合变成:{3,4,5,6}

 

第五步:选择刚刚加入的1这个点,更新1所有的邻接点,它的邻接点有3和4,因为此刻从0到3的距离为6,小于原来0到3的距离8,因此这个时候到6的距离更新为6(5+1),此时0到4的距离被更新为11

 

标签:路径,距离,最短,算法,更新,邻接,集合
From: https://www.cnblogs.com/Dongmy/p/18086379

相关文章

  • 代码学习第24天----回溯算法
    随想录日记part24time:time:time:2024.03.10主......
  • 数据结构:图的最短路径
    一、最短路径的基本概念无权图:路径包含的边的条数。带权图:路径包含的各边权值之和。长度最小的路径称为最短路径,最短路径的长度也称为最短距离。二、无权图单源最短路径        无权图单源最短路径使用BFS求出,时间复杂度为O(n+e)。该算法可以求出单源到所有顶点的......
  • 归并排序算法 java实现
    publicstaticvoidmain(String[]args){int[]arr={9,5,7,3,1,6,8,4,2};mergeSort(arr,0,arr.length-1);}/***归并排序*注意:归并的拆分数组和合并数组是从左到右依次进行的,网上很多文章都是错误的*并不是左右一起拆分,网上很多文章都是这样的......
  • 基于深度学习的人员指纹身份识别算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a  3.算法理论概述      指纹识别技术是一种生物特征识别技术,它通过分析人类手指末端皮肤表面的纹路特征来进行身份认证。深度学习是机器学习的一个分支,特别适用于处理大规模高维数据,并在图像识别、语......
  • 算法-购物车问题
    算法-购物车问题问题描述终于发了年终奖准备去网上购物,如何能在有限的预算内,得到最大的收益呢。如果只到这里的话,其实就是一个背包问题,可以参考链接。然鹅还有其他条件:可以购买的物品分为两类:主物品可以单独购买,附件物品只能在已经购买了主物品的情况下购买。例如,要购买......
  • 贪心算法详解
    贪心1建立数学模型来描述问题2把求解的问题分成若干个子问题3对每一个子问题求解,得到子问题的局部最优解4把子问题的解局部最优解合成原来解问题的一个解总结:局部最优做到全局最优。例题实战1在很久以前,有n个部落居住在平原上,依次编号为1到n,第i个部落的人数为ti,......
  • 目标检测——YOLOX算法解读
    论文:YOLOX:ExceedingYOLOSeriesin2021(2021.7.18)作者:ZhengGe,SongtaoLiu,FengWang,ZemingLi,JianSun链接:https://arxiv.org/abs/2107.08430代码:https://github.com/Megvii-BaseDetection/YOLOXYOLO系列算法解读:YOLOv1通俗易懂版解读SSD算法解读YOLOv......
  • 使用verillog编写KMP字符串匹配算法
    设计思路如下:定义模块的输入输出信号:包括时钟信号clk、复位信号rst、模式串pattern、文本串text以及输出信号match。定义所需寄存器和变量:使用寄存器来存储状态机的状态以及其他控制变量,如模式串数组P、失配函数数组F、模式串位置p_index、文本串位置t_index等。在时钟......
  • 2024.3.20 算法
    求最大公约数0与任何数字的最大公约数都是非0数字。intgcd(intlhs,intrhs){//默认lhs>=rhsif(rhs==0){returnlhs;}returngcd(rhs,lhs%rhs);//辗转相除}冒泡排序for(inti=0;i<n;++i){for(intj=i+1;j<n;++j){if(str[i]>str[j]){swap(str[i],str[j]);//让j始终......
  • 芒果YOLOv5改进86:上采样Dysample:顶会ICCV2023,轻量级图像增采样器,通过学习采样来学习上
    ......