Dijkstra算法(求最短路)

简介:

        迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。

特点:

        迪杰斯特拉算法采用的是一种贪心策略,其主要特点是从起始点开始,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

时间复杂度:O(n*n)

使用场景:从一个顶点到其余各顶点的最短路径(权重不可为负)

Dijkstra算法思路

初始步骤:记录初始节点到其余各点的距离(初始为真无穷大),并在循环步骤中不断更新

核心循环步骤:

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

代码模版:

例:计算节点A到所有节点的最短路径

步骤一:节点A计算到节点A的距离

因为是自己到自己所以距离为0,更新表格

然后在未标记的节点中寻找距离出发点最小的节点,为节点A并收录进最优路径节点中

步骤二:更新节点A临近的节点B、D、E的距离

由A到节点B、D、E的距离为10、30、100,因为比无穷大要小,所以更新表格中B、D和E的距离

然后在未标记的节点中寻找距离出发点最小的节点,为节点B并收录进最优路径节点中

步骤三:尝试更新节点B的临近节点C

节点B到节点C的距离为50,那么节点A到节点C就有一条经过节点B的路径,距离为60,小于无穷大,更新表格

然后在未标记的节点中寻找距离出发点最小的节点,为节点D并收录进最优路径节点中

步骤四:更新节点D的临近节点C和E的距离

节点D到节点C的距离为20,那么节点A经过节点D到节点C的路径距离为50,小于60,即距离小于原本经过B到C的路径距离,更新表格

节点D到节点E的距离为60。那么从A经过节点D到E的距离为90,小于100,更新表格。

然后在未标记的节点中寻找距离出发点最小的节点,为节点C并收录进最优路径节点中

步骤五:更新节点C的临近节点E

节点C到节点E的距离为10,那么从A经过节点D、C到达的节点E距离为60,小于90,更新表格

然后在未标记的节点中寻找距离出发点最小的节点,为节点E并收录进最优路径节点中

至此,所以节点皆被标记,因此所有节点的最短路径也在表格中写出

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java基础】关于Java基础的一些有趣的常识!

前言 今天看到了一篇文章&#xff0c;是关于茶余饭后的Java常识的一些有趣解答&#xff0c;我觉得写的很有趣很易懂&#xff0c;所以截取了其中我觉得比较有趣的问题分享给大家。原文&#xff1a;饭后茶余的java常识 - 知乎 (zhihu.com) 1. Java语言的特点有哪些&#xff1f; …

MySQL的DML语言

DML&#xff1a;Data Manipulation Language&#xff08;数据操作语言&#xff09; DML语言用来对数据库中表的数据记录进行增、删、改操作。 一、添加数据命令 注意&#xff1a; 插入数据时&#xff0c;指定的字段顺序需要与值的顺序是一一对应的。 字符串和日期型数据应该包…

#pragma once和条件编译

#pragma once 和 #ifndef 是 C/C 中用于防止头文件被多次包含的两种不同的预处理器指令。 一、那么为什么要防止头文件被重复包含 头文件的重复包含问题需要避免的原因主要有以下几点&#xff1a; 编译效率&#xff1a; 如果头文件被重复包含多次&#xff0c;编译器需要重复解…

【并发编程】手写线程池阻塞队列

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 示意图 步骤1&#xff1a;自定义任务队列 变量定义 用Deque双端队列来承接任务用ReentrantLock 来做锁并声明两个条件变量 Condition fullWai…

网站不收录,与服务器不备案有关吗

随着互联网的快速发展&#xff0c;网站已经成为企业、个人和机构宣传和展示自己的重要平台。然而&#xff0c;许多网站在建设完成后却面临着不收录的问题&#xff0c;这给网站的管理者和拥有者带来了很大的困扰。其中&#xff0c;一些人认为&#xff0c;网站不收录的原因与服务…

代码随想录算法训练营第23天(回溯1)| 回溯算法的理论77.组合问题

回溯的理论基础 其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&#xff0c;这次正式开启回溯算法&#xff0c;大家可以先看视频&#xff0c;对回溯算法有一个整体的了解。 题目链接/文章讲解 视频讲解 回溯的总结&#xff1a; 树的深度&#xff08;递归的层数&…

什么是Instagram Reels?用好Reels 让你的流量暴涨!

Instagram Reels是Instagram在2020年全新推出的短视频功能&#xff0c;旨在与TikTok展开竞争。作为跨境卖家的你&#xff0c;利用 Reels 这一神器&#xff0c;将为你带去更多的流量。那该如何利用好这一神器呢&#xff1f;本篇文章&#xff0c;大白将带大家深入了解 Reels 并用…

推动海外云手机发展的几个因素

随着科技的不断发展&#xff0c;海外云手机作为一种新兴技术&#xff0c;在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面&#xff0c;探讨海外云手机在未来的发展。 1. 用户需求的引领&#xff1a; 随着人们对移动性和便捷性的需求不断增长&…

《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)

文章目录 2.1 本地仓库与版本历史2.1.1 基础知识讲解2.1.2 重点案例&#xff1a;回滚错误提交2.1.3 拓展案例 1&#xff1a;利用 git bisect 查找引入 bug 的提交2.1.4 拓展案例 2&#xff1a;合并提交历史 2.2 远程仓库的使用2.2.1 基础知识讲解2.2.2 重点案例&#xff1a;在 …

通过Harbor构建docker私服仓库

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器&#xff0c;它扩展了开源的Docker Distribution&#xff0c;通过添加一些企业必需的功能特性&#xff0c;如安全、标识和管理等。Harbor由VMware公司开发并开源&#xff0c;旨在帮助用户迅速搭建一个企业级的Docke…

点云transformer算法: FlatFormer 论文阅读笔记

代码&#xff1a;https://github.com/mit-han-lab/flatformer论文&#xff1a;https://arxiv.org/abs/2301.08739[FlatFormer.pdf] Flatformer是对点云检测中的 backbone3d部分的改进工作&#xff0c;主要在探究怎么高效的对点云应用transformer 具体的工作如下&#xff1a;一…

scrcpy 的安装使用教程

一、scrcpy scrcpy 是一个开源的应用程序&#xff0c;允许您显示和控制连接到电脑的 Android 设备。它不需要在 Android 设备上进行根访问&#xff0c;但需要至少 API 21&#xff08;Android 5.0&#xff09;。 简而言之&#xff0c;手机和电脑不用下载任何应用&#xff0c;通…

PostgreSQL的wal文件回收问题

引子 将PostgreSQL的GUC参数wal_recycle设置为on&#xff0c;然后对数据库执行一定业务量的操作&#xff0c;会发现在pg_wal目录下&#xff0c;有很多未来使用的wal文件&#xff0c;且创建时间比现在正在使用的wal文件更早&#xff0c;下文将描述和分析这种情况。 问题描述 …

springboot160社区智慧养老监护管理平台设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

游戏行业需要高防护服务器的理由有哪些?

众所周知&#xff0c;游戏行业是最易受DDOS攻击的行业&#xff0c;不管游戏设置的多么精彩&#xff0c;一旦玩家在玩的过程中经常出现死机、卡机的状况游戏用户也会选择离开的&#xff0c;所以服务器是影响游戏业务是否能正常运行的重要因素之一&#xff0c;而游戏行业选用高防…

【数据分享】1929-2023年全球站点的逐年平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐年平均气温数据、逐年最高气温数据…

在django中集成markdown文本框

首先需要下载开源组件&#xff1a;http://editor.md.ipandao.com/&#xff0c;可能需要挂梯子。 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1D9o3P8EQDqSqfhAw10kYkw 提取码&#xff1a;eric 1.在html代码中生成一个div&#xff0c;ideditor <div c…

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长&#xff08;auto increment&#xff09;功能&#xff0c;即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种&#xff0c;通过序列&#xff08;sequence&#…

蓝桥杯Web应用开发-CSS 基础语法4(字体属性、链接中的伪类、列表样式)

专栏持续更新中 字体属性 字体属性用于定义字体的类型、字号大小、加粗、斜体等方面样式。常用的字体属性如下表所示&#xff1a; 属 性可 取 值描 述fontfont-style、font-variant、font-weight、font-size&#xff08;或 line-height&#xff09;、font-family在一个声明中…

《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)

5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法 5.1.1 基础知识 无线局域网络&#xff08;WLAN&#xff09;允许设备通过无线方式连接到一个局部区域网络&#xff0c;主要基于IEEE 802.11标准&#xff0c;俗称Wi-Fi。WLAN的核心是无线路由器&#xff0c;它不仅充当着网络中各设…