多源最短路:每一对顶点之间的最短路径

本文介绍了Floyd算法用于求解图中每一对顶点之间的最短路径。通过邻接矩阵表示法,详细展示了算法如何逐步更新最短路径。以一个有向网图为例,解释了算法如何检查并更新路径长度,最后给出了算法的时间复杂度为O(|V|^3)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个图中用求单源最短路的方法对每一个顶点执行一次,即可得到每一对顶点的最短路径。由弗洛伊德提出的一个算法,和Dijkstra类似,它们得出的最短路径都是一步一步组合得到的。Floyd算法适合在稠密的矩阵图中使用,所以下面的例子我也用邻接矩阵表示法的方式来理解Floyd算法的运用。

看这样一个例子:

这是一个有向网图。表示这个图的邻接矩阵为:

首先看V0这个结点,从该图的邻接矩阵中,看0行0列以外的,且非对角线的元素。首先是D[ 1 ][ 2 ]=2。然后看D[ 1 ][ 2 ]元素在0行0列上的投影,D[ 0 ][ 2 ]+D[ 1 ][ 0 ]=11+6=17,因为17>2,所以不用跟新最短路径长度。然后矩阵里另一个元素D[ 2 ][ 1 ]=∞,在0行0列上的投影D[ 2 ][ 0 ]+D[ 0 ][ 1 ]=3+4=7,而7<∞,所以D[ 2 ][ 1 ]即顶点2到顶点1的最短路径长度被更新成7。这时对于V0这个顶点的访问就做完了。

接着到V1结点,看0行0列以外的,且非对角线的元素。D[ 2 ][ 0 ]=3,D[ 2 ][ 0 ]在第1行1列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值