《庆余年算法番外篇》:范闲通过最短路径算法在阻止黑骑截杀林相

剧情背景

在《庆余年 2》22集中,林相跟大宝交代完为人处世的人生哲理之后,就要跟大宝告别了
在这里插入图片描述

在《庆余年 2》23集中,林相在告老还乡的路上与婉儿和大宝告别后在这里插入图片描述
范闲也在与婉儿的对话中知道黑骑调动是绝密,并把最近一次告老还乡梅执礼被马匪截杀与黑骑调动日期关联在一起,范闲知道了老皇帝要杀林相消息,所以范闲必须尽快找到一条最短路径在黑骑到之前去营救林相。这时候范闲在另外一个世界带来的记忆突然奔袭而来,马上想到用于地图导航GPS的Dijkstra算法,得找到路程最短的路径赶在黑骑到达前才能拯救林相,而在此之前他早就把庆国地形和路径都让人探究清楚了。知道黑骑所在位置到林相的位置大概需要75分钟。

现状输入描述

  • 起点A:范闲目前所在的位置。
  • 中点B:林相目前所在的位置。
  • 节点集:A和B之间的多个节点路口CDEGF(例如路上的交叉点、村庄等)。
  • 路程:连接这些节点的道路,每条道路有对应的行驶时间。

在这里插入图片描述

使用Dijkstra算法求解最短路径

实现原理

  1. Dijkstra 算法从指定的节点(源节点)出发,寻找它与图中所有其它节点之间的最短路径。
  2. Dijkstra 算法会记录当前已知的最短路径,并在寻找到更短的路径时更新。
  3. 一旦找到源节点与其他节点之间的最短路径,那个节点会被标记为“已访问”并添加到路径中。
  4. 重复寻找过程,直到图中所有节点都已经添加到路径中。这样,就可以得到从源节点出发访问所有其他节点的最短路径方案。

以下是详细的步骤和计算过程:

步骤 1: 初始化

  • 起点A到所有其他节点的初始距离设为无穷大,除了起点本身,其距离为0。
  • 使用优先队列初始化,从起点A开始。
距离:
A: 0
C: ∞
D: ∞
E: ∞
F: ∞
G: ∞
B: ∞优先队列:
[(0, 'A')]

步骤 2: 处理节点A

  • 从A出发,可以到C和D,更新距离。
    在这里插入图片描述

步骤 3: 处理节点C

  • 从C出发,可以到E,更新距离。
    在这里插入图片描述

步骤 4: 处理节点D

  • 从D出发,可以到E,但已有更短路径 C -> E,不更新。
距离:
A: 0
C: 15
D: 20
E: 25
F: ∞
G: ∞
B: ∞优先队列:
[(25, 'E')]

步骤 5: 处理节点E

  • 从E出发,可以到F和G,更新距离。
    在这里插入图片描述

步骤 6: 处理节点F

  • 从F出发,可以到B,更新距离。
距离:
A: 0
C: 15
D: 20
E: 25
F: 43
G: 45
B: 88优先队列:
[(45, 'G'), (88, 'B')]

步骤 7: 处理节点G

  • 从G出发,可以到B,更新距离。
    在这里插入图片描述

结果

通过Dijkstra算法计算,范闲从A到B的最短路径是A -> C -> E -> G -> B,总时间为:

  • A -> C:15分钟
  • C -> E:10分钟
  • E -> G:20分钟
  • G -> B:25分钟
  • 总时间:15 + 10 + 20 + 25 = 70分钟 (黑骑到林相需要75分钟)
    这时候选择A -> C -> E -> G -> B 因为没有导航刚刚手动计算已经花了两分钟了,情况紧急叫来王启年,马上赶路
    王启年说范闲我们两个打不过黑骑,但是范闲说情况紧急没法给你找兵马,要去拼一把,跟打工人不给资源不给权利但是还要让你做出业绩一样、跟研究生不给钱不给署名还要写出论文一样
    在这里插入图片描述
    这里可以看出王启年作为一个优秀员工,肯定每年拿E,这表情比老板还急
    在这里插入图片描述

从这里可以看出来,王启年业务能力也是一流,跑的比骑马快
在这里插入图片描述
按预期时间总算到了,开始正面刚黑骑
在这里插入图片描述
王启年虽然辛苦,但是范闲作为老板还是能抗事,马上承担责任,确保拿到结果,取得业绩有超强的领导力,是一个好老板
在这里插入图片描述

参考代码

import heapqdef dijkstra(graph, start):queue = [(0, start)]distances = {node: float('inf') for node in graph}distances[start] = 0while queue:current_distance, current_node = heapq.heappop(queue)if current_distance > distances[current_node]:continuefor neighbor, weight in graph[current_node].items():distance = current_distance + weightif distance < distances[neighbor]:distances[neighbor] = distanceheapq.heappush(queue, (distance, neighbor))return distances# 图的邻接表表示
graph = {'A': {'C': 15, 'D': 20},'C': {'A': 15, 'E': 10},'D': {'A': 20, 'E': 15},'E': {'C': 10, 'D': 15, 'F': 18, 'G': 20},'F': {'E': 18, 'B': 45},'G': {'E': 20, 'B': 25},'B': {'F': 45, 'G': 25}
}# 计算从起点A到各节点的最短路径
start = 'A'
distances = dijkstra(graph, start)
print(f"从{start}到各节点的最短路径: {distances}")

写到最后

希望文章能让大家放松的同时有知识进入到脑子里
这里作者祝大家:

  • 高考\期末考的同学们:笔尖跃动光辉梦,心中理想定成真
  • 毕业生们:才华扬帆乘风起,壮志凌云展未来
  • 正在工作:不畏艰难勇向前,努力奋斗创佳绩
  • 老板领导们:睿智领导拓新路,胸怀广阔业绩殊

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

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

相关文章

汇智知了堂实力展示:四川农业大学Python爬虫实训圆满结束

近日&#xff0c;汇智知了堂在四川农业大学举办的为期五天的校内综合项目实训活动已圆满结束。本次实训聚焦Python爬虫技术&#xff0c;旨在提升学生的编程能力和数据分析能力&#xff0c;为学生未来的职业发展打下坚实的基础。 作为一家在IT教育行业享有盛誉的机构&#xff…

代码随想录算法训练营Day7|454.四数相加II、 383. 赎金信、15. 三数之和、 18. 四数之和

454.四数相加II 四个数组分成两组进行for循环&#xff0c;先用HashMap存储所有第一组for循环出现的和的次数。再进行第二组for循环&#xff0c;每一次得出的和判断其负数是否在map的key中&#xff0c;如果存在&#xff0c;就加上这个value。 class Solution {public int four…

C++数据结构之:队Queue

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…

嵌入式不一定只能用C!

嵌入式不一定只能用C! ---------------------------------------------------------------------------------------手动分割线-------------------------------------------------------------------------------- 本文章参考了以下文章&#xff1a; 这里是引用 ------------…

高级数据结构-树状数组

基本知识&#xff1a; 1.lowbit运算 int lowbit(int x){return x & -x; } 2.树状数组及其应用 a[N]是原始数组&#xff1b; c[N]是树状数组&#xff0c;存放数组a中i号位之前的lowbit(i)个元素之和&#xff0c;c[i]覆盖长度是lowbit(i) 特别强调 树状数组的下标必须从…

LIMS系统在建设行业中的应用

1、保证实验室检验检测业务效率及质量 通过系统对实验室实验业务流程进行管控&#xff0c;提高各个业务环节工作效率&#xff0c;对报表、记录、报告、各类文件实现电子化管理&#xff0c;避免了人工打印和传递&#xff0c;提高实验室检验检测工作业务水平。应用更先进的自动化…

现场辩论赛活动策划方案

活动目的&#xff1a; 技能竞赛中的辩论环节既可以考核员工的知识点&#xff0c;同时也可以考核员工业务办事能力&#xff0c;表达能力&#xff0c;是一种比较全面且较有深度的竞赛方式。 辩论赛细则&#xff1a; 1、时间提示 : 自由辩论阶段&#xff0c;每方使用时间剩…

springcloud项目部署Nginx+Gateway+其他服务

一. 部署 Nginx&#xff1a; Nginx 是一个高性能的 Web 服务器和反向代理服务器。它常用于将流量从公共互联网引导到内部的应用程序服务器。你可以在服务器上安装 Nginx&#xff0c;并根据你的需求进行配置。通常的配置包括监听端口、定义服务器块、配置反向代理、设置 SSL/TL…

中老年人交友市场的现状与趋势分析

随着社会的发展和人口老龄化的加剧&#xff0c;中老年人的社交需求日益增长&#xff0c;这为交友市场带来了新的机遇和挑战。本文将从中老年人的社交需求出发&#xff0c;对当前中老年人交友市场的现状、问题及未来发展趋势进行深入分析。 一、中老年人交友市场的现状 1. 市场…

华为云会议对接,华为云会议事件消息订阅

最近做了一个对接华为云视频会议接口&#xff0c;订阅华为云会议事件消息的功能。做之前在网上搜索了一番&#xff0c;居然发现没有一个这方面的资料。决定整理一下分享出来&#xff0c;留给有缘人 具体的需求是&#xff0c;我们的app上集成了华为云会议sdk&#xff0c;在用户开…

【CTF-Web】XXE学习笔记(附ctfshow例题)

XXE 文章目录 XXE0x01 前置知识汇总XMLDTD &#xff08;Document Type Definition&#xff09; 0x02 XXE0x03 XXE危害0x04 攻击方式1. 通过File协议读取文件Web373(有回显)Web374(无回显) Web375Web376Web377Web378 0x01 前置知识汇总 XML 可扩展标记语言&#xff08;eXtensi…

Android音频焦点

什么是音频焦点&#xff1f; 音频焦点是 API 8 中引入的一个概念。它用于传达这样一个事实&#xff1a;用户一次只能专注于一个音频流&#xff0c;例如收听音乐或播客&#xff0c;但不能同时关注两者。在某些情况下&#xff0c;多个音频流可以同时播放&#xff0c;但只有一个是…

2021职称继续教育--实行高水平对外开放,积极参与全球经济治理体系改革,开拓合作共赢新局面

单选题&#xff08;共7题&#xff0c;每题5分&#xff09; 1、根据本讲&#xff0c;我国目前已有&#xff08;&#xff09;个省份设立了自贸区。 C、21 2、根据本讲&#xff0c;“一带一路”的官方翻译为&#xff08;&#xff09;。 A、The Belt and Road Initiative 3、根据…

故障诊断 | 基于KAN故障诊断模型

效果一览 文章概述 故障诊断 | 基于 KAN故障诊断模型。KAN是一种全新的神经网络架构&#xff0c;它与传统的MLP架构不同&#xff0c;能够用更少的参数量在Science领域取得惊人的表现&#xff0c;并且具备可解释性&#xff0c;有望成为深度学习模型发展的一个重要方向。运用KAN&…

从0开始学web之信息收集

web1~源代码 web1:where is flag?直接右键源代码找到。 web2~源代码 无法查看源代码确实右键不了&#xff0c;F12用不了&#xff0c; 但是还可以在URL前加上view-source: web3~HTTP响应 web3:where is flag?右键源代码没有&#xff0c;那就看看HTTP 头&#xff0c;F12抓…

数据大屏方案 : 实现数据可视化的关键一环_光点科技

在数字时代的浪潮中&#xff0c;数据已经成为企业决策和操作的重要基础。因此&#xff0c;“数据大屏方案”逐渐成为业界关注的焦点。这类方案通过将复杂的数据集合以直观的形式展现出来&#xff0c;帮助决策者快速把握信息&#xff0c;做出更加明智的决策。 数据大屏的定义及作…

什么是银行虚拟户?

虚拟银行账户是一种不同于传统银行账户的银行服务形式。又称银行云账户&#xff0c;主要是一个结算账户&#xff0c;可以作为企业开立多个不同名称子账户的主账户。 这些子账户可以用于各种用途&#xff0c;包括企业核算、佣金支付等。&#xff0c;同时保证转账和报送的同音性…

机器学习-9-python中的pipeline以及sklearn中的pipeline

参考探秘Python的Pipeline魔法 参考sklearn之pipeline:pipeline函数/make_pipeline函数的简介及其区别联系、使用技巧、案例应用之详细攻略 参考Python函数式编程之pipeline——很酷有没有 1 什么是Pipeline? pipeline 管道借鉴于Unix Shell的管道操作——把若干个命令串起…

nginx 配置 gzip压缩及去除 html 缓存

server{listen 80;server_name test.exmaple.cn;gzip on; # 是否开启gzip# gzip_buffers 32 4K; # 缓冲(压缩在内存中缓冲几块? 每块多大?)gzip_comp_level 6; # 推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)gzip_min_length 1k; # 开始压缩的最小长度(再小就…