当前位置: 首页 > news >正文

【算法-动态规划】贝尔曼福特算法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

贝尔曼-福特算法(Bellman-Ford algorithm)是一种用于在带有权重的有向图中找到单源最短路径的算法。它可以处理负权重边,因此在某些情况下比狄克斯特拉算法更有用。下面是贝尔曼-福特算法的基本步骤:

  1. 初始化距离:将源节点到所有其他节点的距离初始化为无穷大(除了源节点本身的距离为 0)。同时,创建一个数组或列表来保存每个节点的最短距离估计。

  2. 重复以下步骤(节点数量 - 1)次:
    a. 对于图中的每一条边(u,v)(u 是起始节点,v 是目标节点),如果从源节点到 v 的距离通过 u 更短,更新距离。更新的方式是:如果源节点到 u 的距离加上从 u 到 v 的距离小于源节点到 v 的当前距离,则将源节点到 v 的距离更新为源节点到 u 的距离加上从 u 到 v 的距离。

  3. 检查是否存在负权重环路:如果在第 2 步中的重复迭代中,最短路径估计仍然在改进(即存在负权重环路),则说明图中存在负权重环路,无法找到最短路径。算法会返回一个错误或报告有负权重环路。

  4. 最终得到最短路径:如果没有负权重环路,那么在第 2 步完成后,最短路径估计数组中的值就是从源节点到每个节点的最短距离。

public class DP_02_BellmanFord_02 {static class Edge {int from;int to;int weight;public Edge(int from, int to, int weight) {this.from = from;this.to = to;this.weight = weight;}}/*f(v) 用来表示从起点出发,到达 v 这个顶点的最短距离初始时f(v) = 0   当 v==起点 时f(v) = ∞   当 v!=起点 时之后新           旧     所有fromf(to) = min(f(to), f(from) + from.weight)from 从哪来to   到哪去f(v4) = min( ∞, f(v3) + 11 ) = 20f(v4) = min( 20, f(v2) + 15 ) = 20v1  v2  v3  v4  v5  v60   ∞   ∞   ∞   ∞   ∞0   7   9   ∞   ∞   14  第一轮0   7   9   20  23  11  第二轮0   7   9   20  20  11  第三轮0   7   9   20  20  11  第四轮0   7   9   20  20  11  第五轮*/public static void main(String[] args) {List<Edge> edges = Arrays.asList(new Edge(6, 5, 9),new Edge(4, 5, 6),new Edge(1, 6, 14),new Edge(3, 6, 2),new Edge(3, 4, 11),new Edge(2, 4, 15),new Edge(1, 3, 9),new Edge(1, 2, 7));//长度为节点数+1int[] dp = new int[7];dp[1] = 0;for (int i = 2; i < dp.length; i++) {dp[i] = Integer.MAX_VALUE;}print(dp);for (int i = 0; i < 5; i++) {for (Edge edge : edges) {if (dp[edge.from] != Integer.MAX_VALUE) {dp[edge.to] = Integer.min(dp[edge.to], dp[edge.from] + edge.weight);}}}print(dp);}static void print(int[] dp) {System.out.println(Arrays.stream(dp).mapToObj(i -> i == Integer.MAX_VALUE ? "∞" : String.valueOf(i)).collect(Collectors.joining(",", "[", "]")));}
}

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【算法-动态规划】贝尔曼福特算法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

【23-24 秋学期】NNDL 作业3

过程推导 - 了解BP原理数值计算 - 手动计算&#xff0c;掌握细节代码实现 - numpy手推 pytorch自动 对比【numpy】和【pytorch】程序&#xff0c;总结并陈述。激活函数Sigmoid用PyTorch自带函数torch.sigmoid()&#xff0c;观察、总结并陈述。激活函数Sigmoid改变为Relu&#…...

v-on/@ 事件处理指令修饰符-stop、prevent、once

v-on/事件修饰符&#xff1a; 一、.stop 阻止单机事件继续传播 event.stopProgagetion() eg: <h3>事件修饰符</h3> <div click"todo"> <div click.stop"doThis"> 单机事件会继续传递 </div> </div> 点击 单机事…...

macOS Sonoma 14.1beta3(23B5067a)发布

黑果魏叔10 月 11 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 14.1 开发者预览版 Beta 3 更新&#xff08;内部版本号&#xff1a;23B5067a&#xff09;&#xff0c;本次更新距离上次发布隔了 7 天。 根据官方发布的macOS Sonoma 14.1beta3更新日志&#xff0c;此…...

这些负载均衡都解决哪些问题?服务、网关、NGINX?

在微服务项目中&#xff0c;有服务的负载均衡、网关的负载均衡、Nginx的负载均衡&#xff0c;这几个负载均衡分别用来解决什么问题呢&#xff1f; 一、服务的负载均衡 先抛出一个问题&#xff1a; 当一个微服务被多个实例部署时&#xff0c;如何分配和平衡请求的负载&#x…...

#力扣:344. 反转字符串@FDDLC

344. 反转字符串 一、Java class Solution {public void reverseString(char[] s) {for (int l 0, r s.length - 1; l < r; l, r--) {s[l] ^ s[r];s[r] ^ s[l];s[l] ^ s[r];}} } 二、C #include <vector> using namespace std; class Solution { public:void re…...

浅谈SSL通配符证书优势

在当今数字化时代&#xff0c;网络安全是一个日益重要的问题。随着越来越多的网站和应用程序被创建和部署&#xff0c;用户输入的敏感信息面临着潜在的风险。为了确保数据传输的机密性和完整性&#xff0c;SSL&#xff08;Secure Sockets Layer&#xff09;证书成为保护用户隐私…...

[开源]基于流程编排的自动化测试工具,插件驱动,测试无限可能

一、开源项目简介 流程编排&#xff0c;插件驱动&#xff0c;测试无限可能 一款基于流程编排的自动化测试工具 二、开源协议 使用Apache-2.0开源协议 三、界面展示 四、功能概述 在软件开发旅程中&#xff0c;测试流程的管理和执行常常是复杂且耗时的挑战。传统测试工具主…...

gdb的一些常见命令收录

gdb的一些常见命令收录 基本命令设置和查看调试其他 基本命令 run 运行程序。 next (n) 单步调试&#xff08;不进入函数&#xff09;。 step (s) 单步调试&#xff08;进入函数&#xff09;。 continue © 继续执行程序。 quit (q) 退出GDB。 help 获取GDB命令的帮…...

聚观早报 | 首个“5G-A智慧家庭”发布;李鹏称5G-A是5G发展选择

【聚观365】10月12日消息 首个“5G-A智慧家庭”发布 李鹏称5G-A是5G发展的自然选择 新版努比亚Z50S Pro开售 英特尔锐炫A580显卡全球同步上市 vivo X100系列年底登场 首个“5G-A智慧家庭”发布 在全球移动宽带论坛&#xff08;MBBF2023&#xff09;期间&#xff0c;du联合…...

golang JWT原理介绍

JWT认证机制 官方文档 JWT文档 原理简介 客户端通过服务端认证之后&#xff0c;由服务端返回一个JSON对象&#xff0c;发回到客户端。客户端保存该对象用于以后服务器访问凭据&#xff0c;服务端完全依赖该JSON对象来验证客户端的身份。由于JSON数据容易被篡改&#xff0c;…...

xcode打包macos报错:FlutterInputs.xcfilelist 和 FlutterOutputs.xcfilelist

xcode 打包macos的时候&#xff0c;报错如下&#xff1a; Unable to load contents of the file list: ‘macos/ephemeral/FlutterInputs.xcfilelist’ ‘macos/ephemeral/FlutterOutputs.xcfilelist’ 解决方案&#xff1a; 我的项目macos下没有找到FlutterInputs.xcfilelis…...

智能机场系统:打造出行体验的未来

随着航空业的迅猛发展&#xff0c;机场作为出行的重要枢纽&#xff0c;必须不断提升自身的服务质量和效率。智能机场系统应运而生&#xff0c;为旅客提供更加便捷、智能化的出行体验。本文将从技术应用、服务优化和安全保障三个方面&#xff0c;全面介绍智能机场系统的特点和优…...

ROS为机器人装配激光雷达

移动机器人在环境中获取障碍物的具体位置、房间的内部轮廓等信息都是非常必要的&#xff0c;这些信息是机器人创建地图、进行导航的基础数据&#xff0c;除上面所讲的Kinect&#xff0c;还可以使用激光雷达作为这种场景应用下的传感器。 激光雷达可用于测量机器人和其他物体之间…...

ppt录屏没有声音?超实用教程来了!

随着信息技术的发展&#xff0c;ppt已经成为工作中必不可少的工具。无论是工作报告、项目展示还是学术交流&#xff0c;都离不开ppt的辅助。屏幕录制功能是ppt的一个重要特性&#xff0c;可以帮助用户方便地录制幻灯片演示&#xff0c;但在使用过程中&#xff0c;有时会遇到ppt…...

不外传秘诀| docker 快速搭建常用的服务环境

本文主要给大家介绍如何使用 docker 搭建常用的服务环境&#xff0c; 包括mysql,reedis,nginx,jenkins 等常用的环境&#xff0c;下面直接进入主题。 1、MySQL 部署 ①搜索 MySQL 镜像 docker search mysql ②拉取 MySQL 镜像 docker pull mysql:5.7 ③创建容器&#xf…...

OrcaTerm AI

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

为什么我说国内大模型都是渣渣?

先看看我的小破站实现了哪些功能&#xff1f; 2023-10-10 实现图床功能&#xff0c;图床链接。 2023-10-05 实现短视频文&#xff08;本&#xff09;案提取&#xff0c;并与GPT进行交互&#xff0c;暂不开放。至此&#xff0c;从文本到视频&#xff0c;再从视频到文本&#…...

B端产品需求分析的思路和方法 4大方面

需求分析对产品成功和客户满意度至关重要&#xff0c;它帮助团队深入了解用户需求&#xff0c;优化用户体验&#xff0c;减少开发中的需求变更&#xff0c;降低开发风险。如果缺乏产品分析&#xff0c;容易造成产品定位不准确&#xff0c;用户体验不佳&#xff0c;不能满足用户…...

2018架构真题案例(四十九)

某文件采用多级索引结构&#xff0c;磁盘大小4K字节&#xff0c;每个块号4字节&#xff0c;那么二级索引结果时&#xff0c;文件最大。 A、1024 B、1024*1024 C、2048*2048 D、4096*4096 答案&#xff1a;B 霍尔三维结构以时间堆、&#xff08;&#xff09;堆、知识堆组成…...

日常学习收获之----react的ref和wrappedComponentRef的区别

react获取子组件的方式&#xff0c;有ref和wrappedComponentRef。那这两者有什么区别呢&#xff1f; 区别在于是否用了高阶组件&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#…...

LONGLORA: EFFICIENT FINE-TUNING OF LONGCONTEXT LARGE LANGUAGE MODELS

本文是LLM系列文章&#xff0c;针对《LONGLORA: EFFICIENT FINE-TUNING OF LONGCONTEXT LARGE LANGUAGE MODELS》的翻译。 Longlora:长上下文大型语言模型的高效微调 摘要1 引言2 相关工作3 LongLoRA4 实验5 结论 摘要 我们提出了LongLoRA&#xff0c;一种有效的微调方法&…...

CF1186B

给定两个点&#xff0c;原点和p点&#xff0c;现在需要从原点走到p点&#xff0c;有两个光源&#xff0c;a点和b点&#xff0c;这两个光源的半径相等&#xff0c;我们需要输出最小的半径的数值 代码 #include<bits/stdc.h> using namespace std;double dist(double x1,…...

【Redis】Set集合内部编码方式

内部编码 集合类型的内部编码有两种&#xff1a; intset&#xff08;整数集合&#xff09;&#xff1a;当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries配置&#xff08;默认512个&#xff09;时&#xff0c;Redis会选⽤intset来作为集合的内部实现&#xf…...

2023美团外卖商家含月销量均价

外卖商家含商家基本信息、电话、月销量、均价、评分等信息...

实施运维02

一.网线制作 1.所需材料 网线&#xff0c;水晶头&#xff0c;网线钳&#xff0c;水晶头, 路由器或者网络测速仪 网线钳 网线制作标准 T568A标准&#xff08;交叉线&#xff09;&#xff1a;适用链接场合&#xff1a;电脑-电脑、交换机-交换机、集线器-集线器 接线顺序&…...

MySQL数据生成工具mysql_random_data_load

在看MySQL文章的时候偶然发现生成数据的工具&#xff0c;此处直接将软件作者的文档贴了过来&#xff0c;说明了使用方式及下载地址 Random data generator for MySQL Many times in my job I need to generate random data for a specific table in order to reproduce an is…...

iPhone 15分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 15 Plus、iPhone 15 Pro、iPhone 15 Pro Max

史上最全iPhone 机型分辨率&#xff0c;屏幕尺寸&#xff0c;PPI详细数据&#xff01;已更新到iPhone 15系列&#xff01; 点击放大查看高清图 &#xff01;...

Java实验一 Java语言基础(12题)

文章目录&#xff1a; 1、我国历法中的天干、地支和生肖的排列是有规律的。天干的顺序是“甲乙丙丁戊己庚辛壬癸”&#xff0c;地支的顺序是“子丑寅卯辰巳午未申酉戌亥”&#xff0c;生肖的顺序是“鼠牛虎兔龙蛇马羊猴鸡狗猪”。天干、地支、生肖的计算方法非常简单&#xff…...

Unity可视化Shader工具ASE介绍——5、ASE快捷键和常用节点介绍

大家好&#xff0c;我是阿赵。   继续介绍Unity可视化Shader插件ASE。这次来说一些常用节点的快捷键&#xff0c;顺便介绍一些常用的节点。   用过UE引擎的朋友可能会发现&#xff0c;ASE的整体用法和UE的材质节点编辑器非常的像&#xff0c;甚至连很多节点的快捷键都和UE的…...