Dijkstra算法详解

2023-05-16

1.dijkstra算法简介

Dijkstra算法是由E.W.Dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法。算法解决的是有向图中单个源点到其他顶点的最短路径问题,其主要特点是每次迭代时选择的下一个顶点是标记点之外距离源点最近的顶点。但由于dijkstra算法主要计算从源点到其他所有点的最短路径,所以算法的效率较低。

2.dijkstra算法基本过程

假设路网中每一个节点都有标号 是从出发点s到点t的最短路径长度;表示从s到t的最短路径中t点的前一个点。求解从出发点s到点t的最短路径算法的基本过程为:

1.      初始化。出发点设置为:

 

标记起源点s,记k = s,其他所有点设为未标记。

2.      检验从所有已标记的点k到其他直接连接的未标记的点j的距离,并设置:


3.      选取下一个点。从所有未标记的点中选取 最小的点i,点i被选为最短路径中的一点,并设为已标记的。

4.      找到点i的前一点。从已经标记的点集合中找到直接连接到点i的点,并标记为 。

5.      标记点i。如果所有的点已标记,则算法结束。否则,记k = i,转到2继续。

从以上算法的步骤中可以看出 :dijkstra算法的关键部分是从未标记的点中不断地找出距离源点距离最近的点,并把改点加入到标记的点集合中,同时更新未标记的点集合中其余点到起始点的最短估计距离[z1] 。

以一个带有权值的无向图为例,用dijkstra算法分析从源点A到目标点F的最短路径。


1. 用带有权值的一个矩阵w表示含有n各节点的带权无向图, 代表弧段 的权值,如果从节点 到节点 不连通,那么 ,带权值图邻接矩阵如下图所示.设置A为源点,G为目的点, 代表从节点A到有向图中其他节点 的最短路径长度。设置初始值 代表标记的节点集合。


2. 是从A点出发求出的一条最短路径上的终止节点,令


3.  修改起始节点A到集合之间的最短路径的长度值,如果d(j)+w(j,k) < d(k),那么d(k) = d(j) + w(j,k);

4. 重复步骤2、3的操作N-1次,最终得到从起始节点A到其他节点的最短路径,按照递增的顺序排列路径的长度。

3.dijkstra算法的流程图如下所示:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dijkstra算法详解 的相关文章

随机推荐

  • 关于ros安装过程设置密钥不成功解决方案

    问题 xff1a 设置密钥语句 xff1a curl s https raw githubusercontent com ros rosdistro master ros asc sudo apt key add 出现错误 xff1a gp
  • CmakeLists所遇命令用法总结

    1 option命令 xff1a 形式 xff1a option lt variable gt 34 lt help text gt 34 value 简介 xff1a cmake中option起到编译开关的作用 xff0c CMakeLi
  • OpenCV——图像二值化

    OpenCV图像二值化提供了两种函数 threshold double threshold InputArray src OutputArray dst double thresh double maxval int type src xf
  • ubuntu18.04运行ORBSLAM2踩坑记录

    坑1 xff1a error 39 usleep 39 was not declared in this scope usleep 3000 解决办法 xff1a 在对应报错文件中添加头文件 xff1a include lt unistd
  • 单目相机标定

    1 下载usb cam安装包 xff0c 放置到 catkin ws src目录下 cd catkin ws src git clone https github com bosch ros pkg usb cam git usb cam
  • ubuntu18.04安装google浏览器

    sudo wget http www linuxidc com files repo google chrome list P etc apt sources list d wget q O https dl google com linu
  • ubuntu18.04安装opencv3.2.0

    1 下载所需安装包 opencv 3 2 0下载地址 xff1a opencv 3 2 0 opencv contrib 3 2 0下载地址 xff1a opencv contrib 3 2 0 2 安装所需依赖 sudo apt get
  • vscode调试orbslam2配置过程

    1 c cpp properties json 34 configurations 34 34 name 34 34 Linux 34 34 includePath 34 34 workspaceFolder 34 34 usr inclu
  • 喜茶皇茶茶叶带您走上致富之路

    我国是茶文化的发源地 xff0c 尤其是南方各类品种的茶层出不穷 xff0c 茶韵茶香引人入胜 消费者生活水平大幅提高 xff0c 饮茶几乎已经成为一种时尚 xff0c 皇茶 在市场上受到大家的认可与喜爱 xff0c 短短时间内迅速发展壮大
  • UCOSII pdf 电子书籍

    https pan baidu com share init surl 61 RrZKnhvCuC 3qCOT0bi1Gg 提取码 xff1a 4a0f
  • 变频器的逆变、变频原理

    变频器的逆变 变频原理 YJZhang 从事制造业质量管理 xff0c 做过PCBA 线束 电话机 变频器行业 90 人赞同了该文章 变频器将直流电转变为交流电的这个过程叫 逆变 xff08 inverting 先讲逆变过程 xff0c 分
  • 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04

    80X86中断系统 能够处理256个中断 用中断向量号0 xff5e 255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1 中断的分类 中断可以分为内部中断和外部中断 xff08 1 xff09 内部中断
  • 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37

    任务切换的方法 x86汇编语言 xff1a 从实模式到保护模式 读书笔记37 1 中断门和陷阱门 在实模式下 xff0c 内存最低端的1M是中断向量表 xff0c 保存着256个中断处理过程的段地址和偏移 当中断发生时 xff0c 处理器把
  • 不用 H5,闲鱼 Flutter 如何玩转小游戏?

    阿里妹导读 xff1a 最近APP游戏化成为了一个新的风口 xff0c 把在游戏中一些好玩的 能吸引用户的娱乐方式或场景应用在应用当中 xff0c 以达到增加用户粘性 xff0c 提升DAU的效果 xff0c 成本较低 同时在一些需要对用户
  • 【Invalid bound statement (not found)的解决方法】

    前言 xff1a 先说下我自己 xff0c 最开始我是可以的 xff0c 结果我去改了下mapper接口里方法的参数类型 xff0c 突然就报Invalid bound statement not found 这个错误 xff0c 我在网上
  • FreeRTOS学习(四) 列表的插入和删除

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 首先定义列表 xff0c 以及列表项 List t TestList 列表 ListItem t ListItem1 列表项1 ListItem
  • FreeRTOS学习(六) 时间片调度

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 对于FreeRTOS 允许同等任务优先级存在 那么对于多个同等优先级的任务运行 情况的是如何 FreeRTOS 的机制就是对于同等优先级任务来说
  • FreeRTOS学习(十) 信号量

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 二值信号量 二值信号量 通常用于互斥访问 或同步 大多数用于同步 任务与任务 或 任务 与中断的同步 和队列一样 信号量API函数允许设置一个阻
  • Arduino 操控 12v 电压控制电磁铁 (线性振动马达?

    在此记录一下制作过程 xff0c 以作日后参考 效果 xff1a 线性震动马达 xff1f 大概思路 xff1a 通过L298N xff0c 用外接12v电源给电磁铁进行12v供电 xff0c 给arduino进行5v供电 一个电磁铁的供电
  • Dijkstra算法详解

    1 dijkstra算法简介 Dijkstra算法是由E W Dijkstra于1959年提出 xff0c 又叫迪杰斯特拉算法 xff0c 它应用了贪心算法模式 xff0c 是目前公认的最好的求解最短路径的方法 算法解决的是有向图中单个源点