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

算法分享——弗洛伊德算法暴力破解多源最短路问题

算法简介:

弗洛伊德算法是一种求解“多源最短路”问题的算法

在弗洛伊德算法中,图一般用邻接矩阵存储,边权可正可负,但是(不能出现负环),整体思路是采用动态规划的思想求解任意两点间的最短距离。

准备工作:

我们只需要准备一个二维动态,规划数组dp[i][j]表示考虑到当前情况从点i到点j的最短距离,然后给数组初始化为无穷再不断更新最短距离。

算法复杂度分析:

由于需要循环来遍历中转点,起点和终点所以需要使用三层循环,时间复杂都是O(n3),复杂度很高,所以通常用来处理n<=500即图中的点的数量小于500的情况,这也是使用弗洛伊德算法的一个提示。

算法模板:

图片

其中最外层循环表示遍历所有的中转点,次外层循环表示遍历所有的起点,最内层循环表示遍历所有的终点,其中状态转移方程:

图片

表示加入中转点K后与不加入K时比较更新最短路径,这样任意两点的最短路径就会存储在dp数组中,我们根据需要取出即可。

实战应用:

图片

图片

这道题我们需要注意以下几点:

1.题目中给出了400个点是在提示我们可以使用弗洛伊德算法

2.需要注意自己到自己的距离始终为0,初始化要注意dp[i][i]=0

3.要注意无法到达应该输出-1

4.注意无向图的初始化要双向初始化

代码实现:

图片

#include<iostream>

using namespace std;

using ll = long long;

const int N = 405;

const ll inf = 2e18;//定义无穷

ll dp[N][N];

int main()

{

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//加速输入速度

int n, m, q;

cin >> n >> m >> q;

for (int i = 1; i <= n; ++i)

{

for (int j = 1; j <= n; ++j)

{

dp[i][j] = inf;//初始化无穷

}

dp[i][i] = 0;//自己到自己的距离始终为0,易错点

}

while (m--)//处理m条边权

{

ll u, v, w;

cin >> u >> v >> w;

dp[u][v] = min(dp[u][v], w);

dp[v][u] = min(dp[v][u], w);//无向图的初始化,w为两点间的边权

}

for (int k = 1; k <= n; ++k)

for (int i = 1; i <= n; ++i)

for (int j = 1; j <= n; ++j)

{

dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

}

while (q--)

{

int st, ed; cin >> st >> ed;

cout << (dp[st][ed] >= inf ? -1 : dp[st][ed]) << "\n";//处理q次询问取出最短距离,路径不存在输出-1

}

return 0;

}

运行结果:

图片

对输入输出的图解:

图片

1到2的最短距离是1,1到3的最短距离是3,2到3的最短距离是2。

下一篇文章会介绍迪杰斯特拉解决最短路径问题。

相关文章:

  • Java-01-源码篇-04集合-05-ConcurrentHashMap(1)
  • 关于实际工作中如何定位、复现、解决bug的个人心得
  • DeepSeek 部署全指南:常见问题解析与最新技术实践
  • 【Linux网络编程】数据链路层和网络层的几个问题:MTU,校验和,全球网段,路由表
  • C1车证学习笔记
  • Ryu:轻量开源,开启 SDN 新程
  • Ubuntu及其衍生系统安装Python
  • 自制操作系统前置知识汇编学习
  • C++核心指导原则: 资源管理
  • centos7中Open-Webui的部署
  • dataframe如何在末尾添加多行
  • MySQL 中的锁:为数据安全加把锁
  • SMT贴片加工关键技术解析
  • 基于计算机视觉的手势识别:让机器理解我们的手势语言
  • leetcode day20 滑动窗口209+904
  • 基于 Python 的项目管理系统开发
  • 【前端】react大全一本通
  • 云图库平台(五)——后端图片模块开发
  • AIP-149 未设定域的值
  • 记录一次SpringMVC的406错误
  • “子宫内膜异位症”相关论文男性患者样本超六成?福建省人民医院发布情况说明
  • 印对巴军事打击后,巴外交部召见印度驻巴临时代办
  • 从黄土高原到黄浦江畔,澄城樱桃品牌推介会明日在上海举办
  • 甘怀真:天下是神域,不是全世界
  • “子宫内膜异位症”相关论文男性患者样本超六成?福建省人民医院展开调查
  • 习近平同欧洲理事会主席科斯塔、欧盟委员会主席冯德莱恩就中欧建交50周年互致贺电