代码随想录冲冲冲 Day58 图论Part9

news/2024/9/28 3:10:38/

47. 参加科学大会(第六期模拟笔试)

根据昨天的dijkstra进行堆优化

使用的原因是点多但边少 所以直接对于边进行操作

1.对于priority_queue来说

这是最小堆, 小于的话就是最大堆

之后由于是根据边来说的 所以新建一个Edge并且初始化一下

之后由于使用了priority_queue来构造最小堆,在加上传入queue中的都是一个点以及点到原点的距离,根据自定义的判断公式,已经默认排好了最小也就是离得最近的。所以每次只要top后 pop掉就可以了

下面的判断是为了避免1 -> 2 -> 3 ->1这种的成环情况

之后就是去更新值 在更新完之后会把还没有访问到的 cur的邻边放入queue中

卡码网KamaCoder

94. 城市间货物运输 I

bellman_ford算法 使用场景是图中有负权重时可以使用

1.什么是松弛

每条边有起点、终点和边的权值。例如一条边,节点A 到 节点B 权值为value,如图:

minDist[B] 表示 到达B节点 最小权值,minDist[B] 有哪些状态可以推出来?

状态一: minDist[A] + value 可以推出 minDist[B] 状态二: minDist[B]本身就有权值 (可能是其他边链接的节点B 例如节点C,以至于 minDist[B]记录了其他边到minDist[B]的权值)

minDist[B] 应为如何取舍。

本题我们要求最小权值,那么 这两个状态我们就取最小的

if (minDist[B] > minDist[A] + value) minDist[B] = minDist[A] + value

也就是说,如果 通过 A 到 B 这条边可以获得更短的到达B节点的路径,即如果 minDist[B] > minDist[A] + value,那么我们就更新 minDist[B] = minDist[A] + value ,这个过程就叫做 “松弛” 。

对所有边松弛一次,相当于计算 起点到达 与起点一条边相连的节点 的最短距离

如图有n个节点 就松弛n-1次

然后基于

if (minDist[from] != INT_MAX && minDist[to] > minDist[from] + price) { minDist[to] = minDist[from] + price; 

这个核心公式继续更新

另外一点是如果松弛次数大于了n-1就不会继续更新了


http://www.ppmy.cn/news/1531428.html

相关文章

Python 课程14-TensorFlow

前言 TensorFlow 是由 Google 开发的一个开源深度学习框架,广泛应用于机器学习和人工智能领域。它具有强大的计算能力,能够运行在 CPU、GPU 甚至 TPU 上,适用于从小型模型到大规模生产系统的各种应用场景。通过 TensorFlow,你可以…

尊享免费博导实验指导、结果解读、一站式实验服务与论文润色,助力科研人员成就卓越

🌟 教授团队领衔,全方位服务! 🚀 从实验设计到论文发表,一站式解决方案! 📈 选择我们,加速您的科研进程,让成果不再等待! 📝 专业分析 定制服…

网站设计中安全方面都需要有哪些考虑

网站设计中的安全性是一个多方面的问题,需要从多个角度进行考虑和实施。以下是一些关键的安全考虑因素: 数据加密: 使用SSL(安全套接字层)证书来建立加密连接,确保数据在传输过程中不被截获。定期更新SSL证…

进阶SpringBoot之集合 Redis

&#xff08;在跑 Redis 测试之前&#xff0c;需要先安装 Redis&#xff0c;并开启 Redis 服务&#xff09; Spring Boot 项目添加依赖 NoSQL -> Spring Data Redis pom.xml 文件如下 <dependencies><dependency><groupId>org.springframework.boot<…

单月带货直播8场GMV1200W+,近期视频号爆款趋势是什么?

近日&#xff0c;微信官方举办了一场闭门的“视频号兴趣艺术直播专场”沙龙。 针对一些大家常见的问题&#xff0c;以兴趣艺术品类为例展开分享讨论。如&#xff1a; 直播间的哪些数据指标是至关重要的&#xff1f; 什么样的内容在视频号直播中更受欢迎&#xff1f; 我在外站…

服务器安装openssh9.9p1

11.81.2.19 更新 SSL 备份原有配置 1.1 查看 openssl 版本 openssl version OpenSSL 1.0.2k-fips 26 Jan 20171.2 查看 openssl 路径 whereis openssl openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz1.3 备份 op…

深度学习:迁移学习

目录 一、迁移学习 1.什么是迁移学习 2.迁移学习的步骤 1、选择预训练的模型和适当的层 2、冻结预训练模型的参数 3、在新数据集上训练新增加的层 4、微调预训练模型的层 5、评估和测试 二、迁移学习实例 1.导入模型 2.冻结模型参数 3.修改参数 4.创建类&#xff…

示例说明:elasticsearch实战应用

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、数据可视化等领域。以下是 Elasticsearch 实战应用的一些关键点和步骤&#xff1a; 1. 环境搭建 首先&#xff0c;你需要在你的环境中安装和配置 Elasticsearch。 安装 E…