Dijkstra(迪杰斯特拉)算法

Dijkstra(迪杰斯特拉)算法的思想是广度优先搜索(BFS) 贪心策略。
是从一个顶点到其余各顶点的最短路径算法,节点边是不各自不同的权重,但都必须是正数
如果是负数,则需要 Bellman-Ford 算法
如果想求任意两点之间的距离,就需要用 Floyd 算法

image

求节点0 -> 4 的最短路径

  • 每次从未标记的节点中选择距离出发点最近的节点,标记,收录到最优路径集合中
  • 计算刚加入节点A的邻近节点B的距离(不包括标记的节点),若(节点A的距离 + 节点A到节点B的边长)< 节点B的距离,就更新节点B的距离和前序节点

初始状态

节点012345678备注
最优节点每一步,找出未标记的节点中,最短的距离,标记为最优节点
出发节点当前节点,到每个节点的距离,刚开始,所有的节点都认为是 ∞ 无穷大
前序点为了记录最短路径,需要记录每个节点的前序节点

从0出发

节点012345678
最优节点✔️
0 出发0
前序点

首先,节点0的距离是0,所有节点中距离最短的是它自己,0为最优路径中的节点

更新0邻近节点1、7

image

从0点出发,到 相邻的节点 1、7
0->1 = 4 , 节点 1 此时为 ∞,因此 节点 1 的 距离 标为 4,前序节点为 0
0->7 = 8 , 节点 7 此时为 ∞,因此 节点 7 的 距离 标为 8,前序节点为 0

从未标记最优节点(1~8)中,找距离出发点最小的节点 => 1

节点012345678
最优节点✔️
0 出发048
前序点00

更新1邻近节点2、7

上一次的最优节点是 1

image

从0点出发,到 节点 1 相邻的节点 2、7
0->1->2 = 4 + 8 = 12 , 节点 2 此时为 ∞,因此 节点 2 的 距离 标为 12,前序节点为 1
0->1->7 = 4 + 11 = 15 , 节点 7 已有值 8,8<15,因此 节点7 的 距离、前序节点保持不变
从未标记最优节点(2~8)中,找距离出发点最小的节点 => 7

节点012345678
最优节点✔️
0 出发04128
前序点010

更新7邻近节点 8、6

上一次的最优节点是 7

image

从0点出发,到 节点 7 相邻的节点 8、6
0->7->8 = 8 + 7 = 15 , 节点 8 此时为 ∞,因此 节点 8 的 距离 标为 15,前序节点为 7
0->7->6 = 8 + 1 = 9 , 节点 6 此时为 ∞,因此 节点 6 的 距离 标为 9,前序节点为 7
从未标记最优节点(2~6、8)中,找距离出发点最小的节点 => 6

节点012345678
最优节点✔️
0 出发04129815
前序点01707

更新6邻近节点 8、5

上一次的最优节点是 6

image

从0点出发,到 节点 6 相邻的节点 8、5
0->7->6->8 = 8 + 1 + 6 = 15 , 节点 8 已有值 15,15=15,因此 节点 8 的 距离、前序节点保持不变
0->7->6->5 = 8 + 1 + 2 = 11 , 节点 5 此时为 ∞,因此 节点 5 的 距离 标为 11,前序节点为 6
从未标记最优节点(2~5、8)中,找距离出发点最小的节点 => 5

节点012345678
最优节点✔️
0 出发0412119815
前序点016707

更新5邻近节点 2、3、4

上一次的最优节点是 5

image

从0点出发,到 节点 5 相邻的节点 2、3、4
0->7->6->5->2 = 8 + 1 + 2 + 4 = 15 , 节点 2 已有值 12,12<15,因此 节点2 的 距离、前序节点保持不变
0->7->6->5->3 = 8 + 1 + 2 + 14 = 25 , 节点 3 此时为 ∞,因此 节点 3 的 距离 标为 25,前序节点为 5
0->7->6->5->4 = 8 + 1 + 2 + 10 = 21 , 节点 4 此时为 ∞,因此 节点 4 的 距离 标为 21,前序节点为 5
从未标记最优节点(2、3、4、8)中,找距离出发点最小的节点 => 2

节点012345678
最优节点✔️
0 出发04122521119815
前序点01556707

更新2邻近节点 3、8

上一次的最优节点是 2

image

从0点出发,到 节点 2 相邻的节点 3、5、8,节点5已标记,所以不处理节点5
0->1->2->3 = 4 + 8 + 7 = 19 , 节点 3 已有值 25,25>19,因此 节点 3 的 距离 标为 19,前序节点为 2
0->1->2->8 = 4 + 8 + 2 = 14 , 节点 8 已有值 15,15>14,因此 节点 8 的 距离 标为 14,前序节点为 2
从未标记最优节点(3、4、8)中,找距离出发点最小的节点 => 8

节点012345678
最优节点✔️
0 出发04121921119814
前序点01256702

更新8邻近节点

上一次的最优节点是 8

image

8的邻近节点,2、7、6 都已被标记为最优节点,所以不需要处理
从未标记最优节点(3、4)中,找距离出发点最小的节点 => 3

节点012345678
最优节点✔️
0 出发04121921119814
前序点01256702

更新3邻近节点

上一次的最优节点是 3

image

最优节点3的邻近节点:2、5、4中 2、5都已被标记为最优节点,处理 4
0->1->2->3->4 = 19 + 9 = 28 , 节点 4 已有值 21,21<28,因此 节点 4 的 距离 、前序节点保持不变
从未标记最优节点(4)中,找距离出发点最小的节点 => 4

节点012345678
最优节点✔️
0 出发04121921119814
前序点01256702

已时已全部结束

最短距离

从出发点0 到节点 4 的最短距离 = 21

最短路径

反向追溯
4 的前序节点 5,5的前面是 6 ... => 4 -> 5 -> 6 -> 7 -> 0
因此 0 -> 7 -> 6 -> 5 -> 4 是最短路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

占用站点资源,无法正常登录?这个功能帮助解决

在企业里随着PDM用户的增加PDM管理员是否发现原本的站点已经不够用出现部分用户占用站点资源导致其他用户无法正常登录导致该问题无法解决&#xff0c;本篇介绍PDM自动下线的功能助力企业解决问题&#xff0c;更好的帮助企业完成PDM的正常使用 今天我给大家带来的就是SOLIDWOR…

外网的maven项目转移到内网操作的步骤

1、新起一个仓库路径testRep&#xff0c;idea 引用的maven里的setting.xml里仓库配置修改成刚才建的路径&#xff0c;目的把需要的jar全部下载到那个文件夹里 2、项目打压缩包&#xff0c;刚才仓库文件夹打压缩包&#xff0c;并复制到内网电脑 3、内网电脑idea引入项目 4、修改…

【重点】【矩阵】48. 旋转图像

题目 参考答案 法1&#xff1a;辅助矩阵 class Solution {public void rotate(int[][] matrix) {int n matrix.length;int[][] newMatrix new int[n][];for (int i 0;i < n; i) {newMatrix[i] matrix[i].clone();}for (int i 0; i < n; i) {for (int j 0; j <…

PD-1、BRAF和MEK联合抑制BRAFV600E结直肠癌癌症的2期试验

今天给同学们分享一篇文章“Combined PD-1, BRAF and MEK inhibition in BRAFV600E colorectal cancer: a phase 2 trial”&#xff0c;这篇文章发表在Nat Med期刊上&#xff0c;影响因子为82.9。 结果解读&#xff1a; MAPK抑制增强BRAF V600E CRC的免疫反应 作者之前在BRAF…

图的深度优先搜索(数据结构实训)

题目&#xff1a; 图的深度优先搜索 描述&#xff1a; 图的深度优先搜索类似于树的先根遍历&#xff0c;是树的先根遍历的推广。即从某个结点开始&#xff0c;先访问该结点&#xff0c;然后深度访问该结点的第一棵子树&#xff0c;依次为第二顶子树。如此进行下去&#xff0c;直…

彩色成像的基础和应用 原理 Principles(一)

下面我将不定期尽可能出一系列&#xff08;我觉的非常好&#xff09;翻译的文章来解释颜色这们学科。【下图为此次翻译的书籍封面】 Introduction: 颜色是一种与光的物理学&#xff0c;物质的化学&#xff0c;物体的几何特性以及人…

【【RGB LCD 彩条显示实验 ---1】】

RGB LCD 彩条显示实验 —1 TFT-LCD 的全称是 Thin Film Transistor-Liquid Crystal Display&#xff0c;即薄膜晶体管液晶显示屏&#xff0c;它显示的每个像素点都是由集成在液晶后面的薄膜晶体管独立驱动&#xff0c;因此 TFT-LCD 具有较高的响应速度以及较好的图像质量。 我…

基于JAVA+SpringBoot+微信小程序的宠物领养平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着人们生活水平的提…

Linux挂载配置本地yum源

1.vi /etc/yum.repos.d/redhat.repo 2. [baseos] namebaseos baseurlfile:///mnt/BaseOS #enabled:默认为1 enabled1 gpgcheck0 [appstream] nameappstream baseurlfile:///mnt/AppStream enabled1 gpgcheck0 3. mount /dev/sr0 /mnt/ 4.yum clean all 5.yum makecache

Java 简易版 UDP 多人聊天室

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

校园跑腿小程序源码系统 源码完全开源可二开,在线下单 附带完整的搭建教程

随着互联网的快速发展&#xff0c;人们的生活方式也在不断改变。特别是在校园内&#xff0c;由于学习、生活等各种原因&#xff0c;学生们需要处理许多琐碎的事情。而校园跑腿服务正是在这样的背景下应运而生&#xff0c;它能够为学生们提供便捷、快速、个性化的服务&#xff0…

LeetCode题:931下降路径最小和

目录 一、题目要求 二、解题思路 &#xff08;1&#xff09;状态表示 &#xff08;2&#xff09;状态转移方程 &#xff08;3&#xff09;初始化 &#xff08;4&#xff09;填表顺序 &#xff08;5&#xff09;返回值 三、代码 一、题目要求 931. 下降路径最小和 给你…

统信UOS_麒麟KYLINOS上使用WeekToDo

原文链接&#xff1a;统信UOS/麒麟KYLINOS上使用WeekToDo hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在统信UOS/麒麟KYLINOS上使用WeekToDo的介绍。在忙碌的工作和生活中&#xff0c;有效地管理时间和任务是非常重要的。WeekToDo作为一个免费和开源的每周计划器…

python实现pdf转word、word转pdf

我的博客 文章首发于公众号&#xff1a;小肖学数据分析 Python自动化办公通常对常用的办公软件文档格式进行操作&#xff0c;比如Word和PDF。 很多软件都需要付费&#xff0c;作为程序员&#xff0c;怎么可能付费。 下面是一个简单示例&#xff0c;如何在Python中将Word文档…

Java网络编程——非阻塞通信

对于用ServerSocket以及Socket编写的服务器程序和客户程序&#xff0c;它们在运行过程中常常会阻塞。例如当一个线程执行ServerSocket的accept()方法时&#xff0c;假如没有客户连接&#xff0c;该线程就会一直等到有了客户连接才从accept()方法返回。再例如当线程执行Socket的…

跨境电商做自己养号做测评,收货地址怎么解决?

近期有很多朋友问我&#xff0c;自己在做自媒体的时候&#xff0c;物流方面的问题该怎么解决&#xff1f;其实这个问题很简单&#xff0c;下面我就给大家分享一些解决物流问题的方法。 首先&#xff0c;如果你是自己发货&#xff0c;可以选择直接找物流商购买单号或者发空包。这…

基于ssm人事管理信息系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本人事管理信息系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

题目:谈判(蓝桥OJ 545)

题目描述&#xff1a; 解题思路&#xff1a; 本题采用贪心的思想&#xff0c;与蓝桥的合并果子题思路一样。可以使用优先对列&#xff0c;输入进去后自动排序。将两个最小的合并再放入对列中&#xff0c;并将值加入到ans&#xff0c;最终结果即ans。如下图&#xff1a;xy为4&a…

布隆过滤器及其在Java中的实际应用

前言 布隆过滤器一直是面试中的重点&#xff0c;本篇文章将深入探讨Java中的布隆过滤器的底层思想&#xff0c;包括它的工作原理、优缺点等。同时&#xff0c;我们将结合一个小实际案例&#xff0c;来给大家展示布隆过滤器在解决实际问题中的应用。 布隆过滤器简单介绍 在数…

观海微电子---触控显示模组一体化效果方案

随着车载电子后视镜及智能魔镜的普及类似镜面一体化要求的产品越来越多&#xff0c;行业熟知的木纹、一体黑、镜面显示都属于触控显示一体化效果。 一体化效果是指显示模组灭屏状态下玻璃盖板显示区域与非显示区域无明显的色差可见的效果&#xff0c;显示模组亮屏后显示仍可见&…