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

数据结构(6.4_4)——Floyd算法

Floyd算法

第一步:建立两个二维数组,一个用来存放所有顶点,一个用来存放顶点之间的中转点

第二步:循环遍历A矩阵,若A^{k-1}[i][j]>A^{k-1}[i][k]+A^{k-1}[k][j],则A^{k}[i][j]=A^{k-1}[i][k]+A^{k-1}[k][j]path^k[i][j]=k;否则

A^kpath^k保持原值,循环完所有i,j后更新数组并且k+1

第三步:重复第二步操作

初始:

第0轮:

第一轮: 

 

第二轮:

 

总:

 

代码实现:

 

时间复杂度和空间复杂度:

 

Floyd算法实例

1、

v0;

v1;

v2; 

v3; 

 

v4; 循环后无顶点需要更新

寻找最短路径

寻找v0——v4

练习:Floyd算法用于负权图 

不能解决的问题

 

总结:

 


http://www.kler.cn/a/286947.html

相关文章:

  • 使用 Box2D 库开发愤怒的小鸟游戏
  • OSPF协议部分解读
  • 【MySQL】数据库基础知识
  • qiankun+vite+vue3
  • 如何在idea中搭建SpringBoot项目
  • JavaScript笔记基础篇03——函数
  • 单元测试 Mock不Mock?
  • 基于QT与STM32的电力参数采集系统(华为云IOT)(211)
  • 【RabbitMQ应用篇】常见应用问题
  • 【Canvas与数学】N边形中的N边形
  • linux本地库迁移到阿里云云redis
  • GoLang:Go语言开发环境的配置
  • 探索AntSKPro AI知识库一体机:离线智能的便捷之选
  • 什么是CSRF跨站请求伪造
  • 国产开源最强?Qwen2-VL强势发布,效果实测!
  • mysql高可用之组复制
  • 数据结构(邓俊辉)学习笔记】串 06——KMP算法:构造next[]表
  • 鸿蒙界面开发(12):选项卡布局(Tabs)
  • Rust到底值不值得学,之二
  • JAVA呵护晚年从智慧开始养老护理代办陪诊陪护小程序
  • 《自然语言处理》—— jieba库的介绍与使用
  • 024、架构_资源_主机
  • Django开发
  • 深度学习基础-- 浅层神经网络
  • 【Rust练习】11.struct
  • Java的反射机制