【期末复习】例题讲解Dijkstra算法
使用场景
Dijkstra算法用于解决单源点最短路径问题,即给一个顶点作为源点,依次求它到图中其他n-1个顶点的最短距离。
例题讲解
Dijkstra算法将图中所有顶点分成两部分,第一部分是已知到源点最短距离的顶点Known(K),第二部分是不知道到源点最短距离的顶点Unknown(U)。初始化K中只有源点一个顶点,U中有n-1个顶点。如下图,我们求源点1到终点7的最短路径。

根据上图,可以得到如下表:
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 2 | 无穷 |
3 | 无穷 | ||
4 | 无穷 | ||
5 | 无穷 | ||
6 | 无穷 | ||
7 | 无穷 |
1-1. 找到顶点1的邻接点2和3,然后更新它们到源点1的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 2 | 2 |
3 | 5 | ||
4 | 无穷 | ||
5 | 无穷 | ||
6 | 无穷 | ||
7 | 无穷 |
1-2. 更新K,U中的顶点。发现U中2到源点的距离最小,把2加入K中得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 3 | 5 |
2 | 2 | 4 | 无穷 |
5 | 无穷 | ||
6 | 无穷 | ||
7 | 无穷 |
2-1. 找到2的邻接点4和5,更新它们到源点的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 3 | 5 |
2 | 2 | 4 | 6+2=8 |
5 | 8+2=10 | ||
6 | 无穷 | ||
7 | 无穷 |
2-2. 更新K,U中的顶点。发现U中3到源点距离最小,把3加入K中得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 4 | 8 |
2 | 2 | 5 | 10 |
3 | 5 | 6 | 无穷 |
7 | 无穷 |
3-1. 找到3的邻接点4和6,更新它们到源点的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 4 | 5+1=6 |
2 | 2 | 5 | 10 |
3 | 5 | 6 | 6+5=11 |
7 | 无穷 |
3-2. 更新K,U中的顶点。发现U中4到源点的距离最短,把4加入K中得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 5 | 10 |
2 | 2 | 6 | 11 |
3 | 5 | 7 | 无穷 |
4 | 6 |
4-1. 找到4的邻接点5和6,更新它们到源点的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 5 | 2+6=8 |
2 | 2 | 6 | 1+6=7 |
3 | 5 | 7 | 无穷 |
4 | 6 |
4-2. 更新K,U中的顶点。发现6到源点的距离最短,把6加入K中加入得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 5 | 8 |
2 | 2 | 7 | 无穷 |
3 | 5 | ||
4 | 6 | ||
6 | 7 |
5-1. 找到6的邻接点7,更新7到源点的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 5 | 8 |
2 | 2 | 7 | 7+6=13 |
3 | 5 | ||
4 | 6 | ||
6 | 7 |
5-2. 更新K,U中的顶点。K中5到源点的距离最小把5加入K中得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 7 | 13 |
2 | 2 | ||
3 | 5 | ||
4 | 6 | ||
6 | 7 | ||
5 | 8 |
6-1. 找到5的邻接点7,更新7到源点的距离得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | 7 | 3+8=11 |
2 | 2 | ||
3 | 5 | ||
4 | 6 | ||
6 | 7 | ||
5 | 8 |
6-2. 更新K,U中的顶点,将顶点7加入K中完成计算得到下表
K | K中顶点到源点的距离 | U | U中顶点到源点的距离 |
1 | 0 | ||
2 | 2 | ||
3 | 5 | ||
4 | 6 | ||
6 | 7 | ||
5 | 8 | ||
7 | 11 |
由此我们就得到源点1到各个顶点的最短路径。
相关文章:

【期末复习】例题讲解Dijkstra算法
使用场景Dijkstra算法用于解决单源点最短路径问题,即给一个顶点作为源点,依次求它到图中其他n-1个顶点的最短距离。例题讲解Dijkstra算法将图中所有顶点分成两部分,第一部分是已知到源点最短距离的顶点Known(K),第二部分是不知道到…...
Pytorch 基础之张量索引
本次将介绍一下 Tensor 张量常用的索引与切片的方法: 1. index 索引 index 索引值表示相应维度值的对应索引 a torch.rand(4, 3, 28, 28) print(a[0].shape) # 返回维度一的第 0 索引 tensor print(a[0, 0].shape) # 返回维度一 0 索引位置…...

JVM系统优化实践(1):JVM概览
您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~这是多年之前做过的学习笔记,今天再翻出来,觉得仍然是记忆犹新。「独乐乐不如众乐乐」,就拿出来分享给「众乐乐」吧。目前大多…...

优秀!19年后,它再次成为TIOBE年度编程语言
新年伊始,TIOBE发布了2022年度编程语言,C时隔19年再度登顶,成为2022年最受欢迎的编程语言。TIOBE在2003年首次统计编程语言的流行指数时,C便成为年度编程语言。2022年,C获得了最高的人气4.62%,紧随其后的是…...

剑指 Offer 26. 树的子结构
摘要 剑指 Offer 26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构),B是A的子结构, 即 A中有出现和B相同的结构和节点值。 一、子树解析 思路解析:若树B是树A的子结构,则…...

他是00年的,我们卷不过他...
现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…...
C#开发的OpenRA的OpenGL创建纹理流程
C#开发的OpenRA的OpenGL创建纹理流程 由于OpenRA采用的是OpenGL来显示游戏画面, 那么它就必然采用纹理来显示了。 并且由于它是2D的游戏,所以3D的模型是没有的,只要使用纹理贴图,就可以完全实现了游戏的功能。 OpenGL的纹理要起作用,需要经过一系列的动作。 先要使用glGen…...
3D目标检测(一)—— 基于Point-Based方法的PointNet系列
3D目标检测(一)—— PointNet,PointNet,PointNeXt, PointMLP 目录 3D目标检测(一)—— PointNet,PointNet,PointNeXt, PointMLP 前言 零、网络使用算法 …...
《设计模式》策略模式
策略模式 前言 先了解一下设计模式的几种类似: 行为型设计模式(Behavioral Design Pattern)是指一组设计模式,它们关注的是对象之间的通信和协作。行为型设计模式描述了对象之间的职责分配和算法的封装,以及如何在运…...

【离散数学】1. 数理逻辑
1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 离散数学:研究离散量结构及相互关系的学科 数理逻辑集合论代数系统图论 逻辑:研究推理的科学 数学方法:引进一套符号系统的方法 数理逻辑是用数学方法研究形式逻辑的科学,即使用符号化…...

Java8新特性学习
Java8新特性学习为啥使用Lambda表达式Lambda表达式的基础语法无参无返回有参无返回一个参数多参单个语句体类型推断四大内置核心函数式接口其他接口方法引用与构造器引用Stream简介什么是StreamStream操作步骤创建Stream中间操作终止操作(终端操作)归约与收集并行流…...
SPARK outputDeterministicLevel的作用--任务全部重试或者部分重试
背景 目前spark的repartition()方法是随机分配数据到下游,这会导致一个问题,有时候如果我们用repartition方法的时候,如果任务发生了重试,就有可能导致任务的数据不准确,那这个时候改怎么解决这个问题呢? …...

图数据库中的 OLTP 与 OLAP 融合实践
在一些图计算的场景下,我们会遇到同时需要处理 OLTP 和 OLAP 的问题。而本文就给了一个 OLTP 与 OLAP 融合实践的指导思路,希望给你带来一点启发。 Dag Controller 介绍 Dag Controller 是 NebulaGraph 企业版的图系统,经过反复测试无误后已…...

Shader Graph简介
使用着色器(shader)和材质(material),我们能够创造出非常多有趣的效果。除了Unity自带的shader外,还可以自己编写shader或使用其他人所编写的shader。编写shader通常需要我们了解shader编程语言的语法和相关…...

kubectl
目录 一、陈述式资源管理方法 二、基本信息查看 2.1 基本信息查看格式 2.2 查看master节点组件状态 2.3 查看命名空间 2.4 创建/查看命名空间 2.5 删除(重启)命名空间/pod 2.6 查看资源的详细信息 2.7 创建副本控制器来启动Pod 2.8 查看指定命…...

实验室设计SICOLAB第三方检测中心实验室设计
第三方检测中心实验室怎么设计?详细设计内容有哪些?功能区域有哪些?仪器有哪些?要多少面积?第三方检测中心实验室是一种独立的实验室,为客户提供各种测试和分析服务。以下是一个第三方检测中心实验室的详细…...
GPS经纬度转距离
function [pN, pE] distance_gps(lon1, lon2, lat1, lat2)d2r pi/180; % deg转radR 6371000.0; % 地球半径pN (lat2 - lat1) * d2r * R;pE (lon2 - lon1) * d2r * R * cos(lat2 * d2r); end...
7-周赛333总结
7-周赛333总结 还是只过了前两题,第三题又写了好久好久,然后也不知道错在了哪里,只过了部分题解,也许是思考不全面吧。下次也许先做第四题更好…第四题今天花了点时间 做出来了个大概 开心 :happy: 合并两个二维数组 - 求和法【…...
电子招标采购系统源码—互联网+招标采购
智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明,可…...
SQL注入和XSS攻击
1、SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输…...
深入理解 Java 多线程:原理剖析与实战指南
深入理解 Java 多线程:原理剖析与实战指南 一、引言 在现代软件开发中,多线程编程已经成为提升应用性能与响应能力的重要手段。Java 作为一门成熟的编程语言,自 JDK 1.0 起就提供了对多线程的原生支持。本文将深入剖析 Java 多线程的底层原…...

【k8s】k8s集群搭建
k8s集群搭建 一、环境准备1.1 集群类型1.2 安装方式1.3 主机规划1.4 环境配置1.4.1 说明1.4.2 初始化1.4.3 关闭防火墙和禁止防火墙开机启动1.4.4 设置主机名1.4.5 主机名解析1.4.6 时间同步1.4.7 关闭selinux1.4.8 关闭swap分区1.4.9 将桥接的IPv4流量传递到iptables的链1.4.1…...
护网行动面试试题(2)
文章目录 51、常见的安全工具有哪些?52、说说Nmap工具的使用?53、近几年HW常见漏洞有哪些?54、HW 三(四)大洞56、获得文件读取漏洞,通常会读哪些文件57、了解过反序列化漏洞吗?58、常见的框架漏…...
AI问答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 这样的项目 在服务器怎么部署
为什么记录有子路径项目的部署,因为,通过子路径可以区分项目,那么也就可以实现微前端架构,并且具有独特优势,每个项目都是绝对隔离的。 要将 Vue3 项目(如路径为 http://www.abc.com:3022/m-saas-pc/#/sno…...
在 Windows 系统上运行 Docker 容器中的 Ubuntu 镜像并显示 GUI
在 Windows 上安装一个 X Server(如 VcXsrv 或 X410),Ubuntu 容器通过网络将图形界面转发到 Windows。 步骤: 安装 X Server: 推荐使用VcXsrv,免费开源。 安装后运行 XLaunch,选择࿱…...
无字母数字webshell的命令执行
在Web安全领域,WebShell是一种常见的攻击手段,通过它攻击者可以远程执行服务器上的命令,获取敏感信息或控制系统。而无字母数字WebShell则是其中一种特殊形式,通过避免使用字母和数字字符,来绕过某些安全机制的检测。 …...

贝叶斯深度学习!华科大《Nat. Commun.》发表BNN重大突破!
华科大提出基于贝叶斯深度学习的超分辨率成像,成功被Nat. Commun.收录。可以说,这是贝叶斯神经网络BNN近期最值得关注的成果之一了。另外还有AAAI 2025上的Bella新框架,计算成本降低了99.7%,也非常值得研读。 显然鉴于BNN“不确定…...
【自动驾驶避障开发】如何让障碍物在 RViz 中‘显形’?呈现感知数据转 Polygon 全流程
【自动驾驶避障开发】如何让障碍物在 RViz 中"显形"?呈现感知数据转 Polygon 全流程 自动驾驶系统中的障碍物可视化是开发调试过程中至关重要的一环。本文将详细介绍如何将自动驾驶感知模块检测到的障碍物数据转换为RViz可显示的Polygon(多边形)形式,实现障碍物…...

有人-无人(人机)交互记忆、共享心智模型与AI准确率的边际提升
有人-无人(人机)交互记忆、共享心智模型与AI准确率的边际提升是人工智能发展中相互关联且各有侧重的三个方面。人机交互记忆通过记录和理解用户与机器之间的交互历史,增强机器对用户需求的个性化响应能力,从而提升用户体验和协作效…...

从混乱到秩序:探索管理系统如何彻底改变工作流程
内容摘要 在许多企业与组织中,工作流程混乱是阻碍发展的“绊脚石”。员工们常常被繁琐的步骤、模糊的职责和沟通不畅等问题搞得焦头烂额,工作效率低下,错误频发。而与之形成鲜明对比的是,一些引入了先进管理系统的团队࿰…...