floyd-warshall算法浅理解

news2025/8/12 0:14:01

相比于矩阵乘法,floyd巧妙利用了最短路具有最优子结构的性质,即最短路径的子路径也是最短路径,得到以 d i j ( k ) d_{ij}^{(k)} dij(k)(为从i到j的一条中间节点全部取自集合 { 1 , 2 , . . . , k } \{1,2,...,k\} {1,2,...,k}的一条最短路径权重)为状态的转移方程,减少每次迭代的计算量,而且迭代过程只需保存两个矩阵 D ( k ) D^{(k)} D(k) D ( k + 1 ) D^{(k+1)} D(k+1),这也允许我们方便地进行手工验证。

D i j ( k + 1 ) D^{(k+1)}_{ij} Dij(k+1)时,仅对应floyd算法的一步松弛 D i j ( k + 1 ) = m i n ( D i j ( k ) , D i k ( k ) + D k j ( k ) ) D^{(k+1)}_{ij}=min(D^{(k)}_{ij},D^{(k)}_{ik}+D^{(k)}_{kj}) Dij(k+1)=min(Dij(k),Dik(k)+Dkj(k)),就是找到前一个矩阵的第 i i i行第 k k k个元素以及第 j j j列第 k k k个元素求和和 “十字” 中心元素比大小。

在这里插入图片描述
举个例子,如图, D 45 ( 1 ) D_{45}^{(1)} D45(1)更新为 -2,因为 D 45 ( 0 ) > D 4 k ( 0 ) + D k 5 ( 0 ) D_{45}^{(0)}>D_{4k}^{(0)}+D_{k5}^{(0)} D45(0)>D4k(0)+Dk5(0),此时 k = 1 k=1 k=1,找到 D 41 ( 0 ) D_{41}^{(0)} D41(0) D 15 ( 0 ) D_{15}^{(0)} D15(0).

由于矩阵共有 n 2 n^2 n2个元素,floyd做到了 O ( n ) O(n) O(n)求每个元素,按老师的话说,别人很难想到,因此,前面的矩阵乘法方法叫矩阵乘法求全源最短路,而这个算法用floyd的名字命名。

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

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

相关文章

全球人口突破80亿!免费分享全球人口分布数据

概述 就在2022年11月15日16:00左右全球人口突破80亿! 全球人口突破80亿 根据此前联合国人口基金会的统计,全球人口在2011年10月31日达到了70亿。 全球人口从70亿增长到今天的80亿,用了11年零半个月。 到2022年,全球哪里人口最…

分组查询子查询

分组查询 分组查询是指使用 group by 字句对查询信息进行分组。 格式: SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件; 分组操作中的 having 子语句,是用于在分组后对数据进行过滤的,作用类似于 where 条 件。 having与where的区…

在agx xavier上运行 deepstream的样例 deepstream-test4

在agx xavier上运行 deepstream的样例 deepstream-test4 主要演示如何将检测结果通过kafka发送到服务器。 deepstream版本:5.0 前置条件:服务器上正常运行的kafka服务。 下面主要讲发送端的操作。 1、安装依赖项 1)所有样例都需要的依赖…

Prometheus 采集snmp监控数据

download snmp_exporter snmp_exporter采集数据 snmp_exporter 一键监控安装脚本 vim /snmp_exporter.sh #!/bin/sh # -*- coding: utf-8 -*- # Date: 2022/11/18echo "download snmp_exporter" sleep 2 wget -N -P /root/ https://github.com/prometheus/snmp_ex…

美食杰项目 -- 菜谱大全(二)

目录前言:具体实现思路:步骤:1. 展示美食杰菜谱大全效果2. 引入element-ui3. 代码总结:前言: 本文给大家讲解,美食杰项目中菜谱大全实现的效果,和具体代码。 具体实现思路: 点击头…

金蝶苍穹开发工程师初级学习第一节

金蝶苍穹开发工程师初级学习第一节 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,金蝶首发! 😘系列专栏:低代码学习 💻首发时间:🎞2022年11月12日&a…

github action定时任务

需求 定时任务1 (8:00~13:00),执行bash脚本定时任务2 (18:00),修改定时任务1的执行时间 文档 workflows官方文档workflows action uses查询actions/checkoutv3About the GITHUB_TOKEN secret 问题之refusing to allow a GitHub App to create or upd…

MySQL:常用函数解析、开窗函数示例

数学函数 count() count()、count(field) 统计某个结果集中的总数量,field为要统计的字段。 SELECT count( 1 ) FROM db1.users 复制代码 sum() sum(field) 统计某个字段累计的总和,field为要统计的字段。 SELECT sum( price ) FROM order_info 复制…

Git 操作流程与命令汇总

1. 为什么要使用 git ? 在写项目时,会产生多个版本,以及多个同学协同配合的情况,为了很好的管理,推出了Git, 版本管理工具,持久化,多人化 2. 首先需要弄明白四个概念 工作区:仓库…

深入浅出mybatis分页

MyBatis 分页插件 PageHelper 如何使用&#xff1f; 如何使用分页插件 1&#xff1a;添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.5</ver…

基于springboot学生管理系统设计与实现

摘  要 目前&#xff0c;借助信息管理系统能够有效解决高校的信息管理问题&#xff0c;对于提高教育管理水平有着非常重要的作用。 因此&#xff0c;有必要建立一个与之相适应的管理信息系统。基于此&#xff0c;本文为了使教师高效地管理学生信息&#xff0c;需要对现代的学…

【LeetCode-中等】221. 最大正方形(详解)

题目 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 力扣原题链接 方法1&#xff1a;暴力 暴力法一般不是最优解&#xff0c;但是可以拿来练手 由于正方形的面积等于边长的平方&#xff0c;因此要找到最大正方形的面积&…

【C++】C++基础知识(八)---结构体

C基础知识&#xff08;八&#xff09;1. 定义与使用2. 结构体数组3. 结构体指针4. 结构体嵌套5. 结构体作函数参数6. 结构体中const使用场景7. 结构体使用案例1. 定义与使用 结构体定义&#xff1a; ------结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类…

元宇宙持续升温,金蝶推出数字员工破圈而来

作者 | 伍杏玲 “金小蝶&#xff0c;请分析今年企业销售事业部的业绩”。 话音刚落&#xff0c;大屏幕展开一张张账务报表&#xff0c;一位身着西装&#xff0c;举止大方得体的数字人条理清晰地回复&#xff1a;“截至今年10月&#xff0c;企业销售事业部在签单金额、新签收入…

数字化转型过程中,企业如何搭建好数据安全?

在企业数字化转型变革中&#xff0c;确保数据安全是企业的责任也是重任。“数据安全”关乎企业数字化发展和未来的商业模式及竞争力&#xff0c;如何在企业数字化转型过程中搭建好“数据安全”的保障&#xff1f; 一、建立数据安全保护意识 互联网时代&#xff0c;有各种各样、…

Vue--》详解Vue组件生命周期的三个阶段

目录 组件生命周期 创建阶段 beforeCreate阶段&#xff1a; created阶段&#xff1a; beforeMount阶段&#xff1a; mounted阶段&#xff1a; 运行阶段 beforeUpdate阶段&#xff1a; updated阶段&#xff1a; 销毁阶段 beforeDestroy阶段&#xff1a; destroyed阶…

windows工作窗口太多,需要频繁切换?摸鱼利器你必须了解下

当我们创作一份内容需要使用到不同窗口的信息时&#xff0c;无比苦恼的就是窗口需要频繁切换了&#xff0c;并且当我们需要参照某个窗口时&#xff0c;这时如果可以把窗口置顶甚至透明窗口效率翻倍&#xff01; WindowTop 是一款窗口自定义设置工具&#xff0c;可将任意窗口置…

[附源码]计算机毕业设计JAVA购买车票系统

[附源码]计算机毕业设计JAVA购买车票系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

怎么把加密的PDF解密?安利几个办公小技巧

大家都知道给pdf文件加密是对文件的一种保护措施&#xff0c;但是如果我们需要对其进行频繁的编辑改动的话&#xff0c;加了密的pdf文件操作起来就很不方便&#xff0c;因为每次的打开都需要输入密码&#xff0c;这个操作其实很浪费时间&#xff0c;其实我只需要将其解密就好了…

用pageOffice文档控件实现 office文档在线编辑

第三方文档控件&#xff0c;pageOffice 系统开发中经常要处理办公文档&#xff0c;如果word&#xff0c;excel&#xff0c;ppt&#xff0c;编辑整理&#xff0c;保存&#xff0c;归档。 开发市场上也有很多第三文文档控件&#xff0c;多年的总结&#xff0c;还是认为pageOffi…