最短路径之Floyd-Warshall(只有五行的最短路)

算法——所有节点对的最短路径:Floyd-Warshall算法、Johnson算法 所有节点对的最短路径 前言 前面介绍了单源最短路径问题,本文是介绍所有节点对的最短路径问题,首先我们会想到用前面所介绍的知识来求解该问题,根据不同类型的图可以用一下几种方法求解: 1、  若无权重的图,则可以使用|V|次BFS,时间复杂度是O[V*(V+E)]; 2、  若为非负权重边的图,则可以使用|V|次Dijkstra算法,不同的优先队列实现得到不同的时间复杂度:①线性数组,O(V3 阅读详情
这个算法是最短路中最容易理解的一个了,,,,所以一般都是想学习这个
但是这个算法是时间复杂度最高为 n^3,,,,所以如果是竞赛中一般都不会用这一个
先看代码吧....
#include<stdio.h>
#define N 100
#define inf 999999
int main()
{
	
	int a[N][N]; 
	int n,m;	//n是顶点的数量,m是边的数量 
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		if(i==j) a[i][j]=0;
		else a[i][j]=inf;
	}
	int x,y,w; //定点和权值 
	for(int i=0;i<m;i++)
	{ 
	scanf("%d%d%d",&x,&y,&w); 
		a[x][y]=w;
	}
	for(int k=1;k<=n;k++)<span style="white-space:pre">		</span>
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	 {
	 	if(a[i][j]>a[i][k]+a[k][j])<span style="white-space:pre">		</span>//这里如果理解了就简单了。。找一个中介点,然后
	 	a[i][j]=a[i][k]+a[k][j];<span style="white-space:pre">		</span>//判断通过这个点会不会变得更近,如果有就进行更新
	 }
		for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			printf("%d->%d最短为%d\n",i,j,a[i][j]);
		}

	return 0;
} 


Floyd-Warshall算法解决所有节点对最短路径问题 在本文中,我们深入探讨了Floyd-Warshall算法,这是解决所有节点对最短路径问题的经典算法。我们从算法原理、代码实现、空间复杂度优化、时间复杂度分析以及并行化优化等方面对其进行了全面的讨论。首先,我们介绍了Floyd-Warshall算法的原理,它利用动态规划的思想来逐步优化节点之间的路径长度,从而找到所有节点对之间的最短路径。然后,我们给出了Python的代码实现,通过邻接矩阵表示图,并利用三重循环来实现算法的核心部分。 阅读详情

相关推荐

Floyd-Warshall算法:解决带权图中所有点对最短路径问题

想象你是一个外卖平台的技术负责人:需要为每个骑手计算从任意餐厅到任意小区的最短路线;或者你是游戏开发者:需要设计NPC在地图中任意两点间的自动寻路。这些场景都需要解决同一个问题——所有点对最短路径(All-Pairs Shortest Paths)。Floyd-Warshall算法正是解决这类问题的“万能钥匙”,它能在带权图中(可能包含负权边,但不能有负权环),一次性计算出所有顶点对之间的最短路径。算法核心思想(动态规划+中间顶点扩展)数学模型与状态转移方程Python代码实现与逐行解读。

AI 算法实战派 1036

Floyd-Warshall 算法-- 最短路径(适合节点密集的图)

由于此算法时间复杂度为O(V³)。大多数情况下不如迪杰斯特拉算法的。迪杰斯特拉算法适合于节点疏散的图。演示样例图例如以下:Step 1 创建节点与边的最短路径结果表(直接可达关系)。数值表示距离。INF表示不可达 1 2 3 4 1 0 8 INF 1 2...

aoe41606的博客 256

【算法】全局最短路——Floyd-Warshall算法

给定一张图,该如何确定图中任意两点间的最短距离呢? 我们先想想通常的做法。在一个有n个点的图中,任意两点间的最短距离的步数(经过一个点算一步)一定不超过n,也就是说把n个点每个点经过一次,那么我们来想这样一个算法,每次枚举i到 j经过的步长,从1到n,最后的结果就是比较这些步数对应的值的最小值,就是i到j的最短距离。实现起来也很简单,来考虑矩阵的乘法 ,我们把所有的加法变成取最小值,乘法变成加法

CFhM_R's Blog 1743

最短路算法——Floyd-Warshall

在更多的应用场景中,需要用不同的算法来解决。下表总结了一些经典算法,除了贪心最优搜索之外,其他都是最优性算法,即得到的解是最短路径。表中的 m 是边的数量,n 是点的数量。 一、BFS BFS 也是一种很不错的最短路算法。但 BFS 只适合一种场景:任意的相邻两点之间距离相等,一般把这个距离看成 1,称为“1跳”,从起点到终点的路径长度就是多少个“跳数”。在这种场景下,查找一个起点到一个终点的最有短距离,BFS 是最优的最短路径算法,计算复杂度是 O(n),n 是图上点的...

指北针_N的博客 6890

最短路径算法详解:Dijkstra vs Floyd-Warshall

本文详细对比了Dijkstra和Floyd-Warshall两种最短路径算法。Dijkstra算法适用于单源最短路径问题,时间复杂度为O(E log V),但不支持负权边;Floyd-Warshall算法解决全源最短路径问题,时间复杂度O(V³),支持负权边但不支持负权环。文章通过原理讲解、步骤分析、特性对比和代码实现(含C++示例),帮助开发者理解两种算法的核心思想与应用场景。Dijkstra适合GPS导航等单源场景,Floyd-Warshall更适合网络分析等全源需求。实际应用中应根据问题规模、负权需求

QiangDeHeng的博客 969

Ubuntu24.04/20.04设置网络共享文件夹

Ubuntu20.04利用向日葵远程控制时,不能传输文件。使用linux版本QQ来传输是可以的,不过linuxqq功能真的很弱。因此,打算在Ubuntu系统中建立一个共享文件夹,可在局域网中访问。 1、新建共享文件夹 获取root权限,或者登陆root账户。可在/home文件夹(或其它文件夹)下新建一个文件夹,如share。 右击文件夹,选择“本地网络共享”菜单。按下图设置。 点击确定。如果系统已经安装了samba服务器,就可以进入第3步。如果没有,会提示安装,按提示安装,可能会出错,可进.

willhu2008的专栏 2万+

Floyd-Warshall算法 五行解决 (最短路径)

今天继续看《啊哈,算法》,学到了Floyd-Warshall算法 刚开始突然给我出现了e[i][j] 与 e[i][1]+e[1][j] 比较然后哪个小就赋值给e[i][j] 根据开头图来绘制出下面的表格,像之前求出最短路径使用深搜与广搜的方法 这一次不用深搜与广搜来解决最小路径 举个例子现在: 要求1->3的最小路径,首先看图 一种是直接到达目的地:4->3 是有12格 另...

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 547

ArcGIS Pro中文帮助离线包安装指南:版本匹配与操作详解

本文详细指导如何为ArcGIS Pro安装中文帮助离线包,解决在线帮助访问不畅的问题。核心在于确保软件版本与离线包的精确匹配,并提供了从版本查看、离线包获取、安装步骤到软件内配置的完整操作流程。文中重点强调了版本匹配的重要性,并分享了高效使用本地帮助搜索及管理多版本帮助的实用技巧。

whisky的博客 990

C语言中【不确定输入个数数值的最大值、最小值、平均值】

#include //计算 不确定输入个数数值 的最大值、最小值、平均值并输出 #define INF 999999 //其实可以把 min 和 max 设置成读入的第一个数值 int main() { int x, n = 0, min = INF, max = -INF, s = 0; while (sca

iwblfl的博客 7319

硬件开发实践:高速 PCB 差分信号与时钟同步优化

由两条互补信号线组成(正负极)接收端只关注两线之间电压差共模噪声对两线同时作用,可被抵消。

2501_93174775的博客 394

DRV8711驱动器的各寄存器的介绍

drv8711驱动器

PCLintelligence的博客 1634

C语言宏

了解宏,我们首先得了解编译器编译C语言程序的过程: 其中预处理器工作有: (1) 文件包含:可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。 (2) 条件编译:预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外。 (3) 宏展开:预处理器将源程序文件中出现的对宏的引用展开成相

dgergeg的专栏 619

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include #include #include

张旺华的博客 1万+

《算法笔记》—— 图 "最短路径" 之 Floyd-Warshall算法、Diljkstra算法

现实之中,我们往往会使用百度地图等一系列的地图软件,当我们选择一个目的地时,这些软件会给我们匹配一个最佳的路线,也就是最近的路线,例如下面这个图: 那么这些算法是如何实现的呢 ? 下面我们一起来学习一下吧 . . . ^_^ . 此文将讲述两个重要的算法,他们分别用于 “多源最短路径” 与 “单源最短路径” 问题 . . . 至于什么是多源什么是单源我们将在下面讲解 . . . . Fl...

浪子花梦 2678

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

CMOS图像传感器——工作原理

CMOS图像传感器的曝光与读出

沧海一升的博客 9459

最短路问题——(最短路径)

一、只有五行的算法——Floyd-Warshall 下图中有4个城市8条公路,公路上的数字表示这条公路的长短。注意公路是单向的。我们需要求出任意两个城市之间的最短路程,即任意两点之间的最短路径。 首先,我们建立一个数据结构来存储图的信息,使用一个4*4的矩阵(二维数组e)来存储。例如1号城市到2号城市的路程为2,则使e[1][2]的值为2。2号城市无法到达4号城市,则设置e[2][4...

博客 8874

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

Jet4505的博客 6820

最短路之Floyd-Warshall(10张图解)

基本思路:从1~n号所有顶点中转,求任意两点的最短路径,一句话概括就是,从 i号 顶点到 j号 顶点,只经过前 k号 点的最短路程(一种动态规划思想

IT OR 考公? 3748

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最短路径(Floyd-Warshall、Dijkstra、Bellman-Ford)

《啊哈!算法》学习笔记,图的遍历,通过算法优雅实现。

tn1949的博客 967

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【算法导论】【Floyd-Warshall 算法】每对节点之间的最短路径

所有结点对的最短路径问题 目录 所有结点对的最短路径问题 计算最短路径权重 - Floyd 算法 邻接矩阵 最短路径的结构 所有结点对最短路径问题的一个递归解 自底向上计算最短路径权重 打印所有最短路径 前驱矩阵 打印最短路径 参考 问题:有一个带权有向图 G = (V, E),V 为图的顶点集合,E 为边的集合,权重函数为 w:E → R,该函数将边映射到

ideaqjx的博客 9467

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最短路径算法:Floyd-Warshall算法

最短路径算法:Floyd-Warshall算法

闲余知道 1515

Dijkstra 算法和 Floyd-Warshall 算法

Dijkstra 算法和 Floyd-Warshall 算法

weixin_74066588的博客 1975

最短路径(一)—Floyd-Warshall(只有五行的算法)

“多源最短路径”——计算任意两个城市之间的最短路径。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。公路是单向的。我们现在需要求任意两个城市之间的最短路径,也就是求任意两个点之间的最短路径。这个问题称为“多源最短路径”问题。 用4*4的矩阵存储图的信息,二维数组e存储。 之前通过dfs和bfs可以求出两点之间的最短路径。所以进行n^2遍深度或者广度优先

小地盘的诺克萨斯 6122

【深度解析】最短路径算法:Dijkstra与Floyd-Warshall

你是否曾在导航软件中输入起点和终点,惊叹于它瞬间规划出的最优路线?或者在玩游戏时,NPC总能找到最短路径追上你?这背后都离不开最短路径算法的魔法。无论是日常生活中的地图导航,还是网络通信中的数据路由,最短路径算法都在默默优化我们的世界。作为一名程序员,掌握这些算法不仅能提升你的代码能力,还能让你在面试或项目中脱颖而出。Dijkstra算法和Floyd-Warshall算法。我们会从零开始,用通俗的语言带你理解它们的原理,提供实用的Python代码实现,并结合真实场景展示应用。

吴师兄大模型的博客 1590
上一篇: 山东省第六届蓝桥杯 ///标题:错误票据//c/c++组
下一篇: 最短路径之Dijkstra算法
Strive_Buff
博客等级 码龄11年 4粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值