动态规划——最短路径问题Floyd算法

Floyd算法是一种动态规划方法,用于解决加权图中任意两点间最短路径的问题。该算法以O(n^3)的时间复杂度通过邻接矩阵更新最短距离,适用于有向或无向图,甚至包含负权重。算法通过比较经过中间节点的路径和当前最短路径,不断更新最短路径信息。
摘要由CSDN通过智能技术生成

Floyd算法

Floyd算法是求加权图最短路径的经典算法之一,利用了动态规划的思想解决。

算法描述

最短路径问题:

设有一加权图G,从G中某个顶点出发达到另一个顶点,所经过边的权值之和最小的路径,被称为最短路径

Floyd算法是解决加权图(图可以是有向也可以是无向,可以存在负权)中任意两点之间的最单路径的一种算法。

基本思路:

  1. 通过Floyd算法计算最短路径时,图一般采用二维数组,邻接矩阵的形式进行存储。
  2. 首先对邻接矩阵进行初始化,在图G中, g [ i ] [ j g[i][j g[i][j]表示从顶点i到顶点j的直接路径(权值);若i和j不相邻,即无直接连线,则置 g [ i ] [ j ] = ∞ g[i][j]= ∞ g[i][j]=;且设 g [ i ] [ i ] = 0 g[i][i]=0 g[i][i]=0,即顶点i到顶点i的距离为0;
  3. 寻找最短距离的过程就是对邻接矩阵进行更新的过程:若从顶点i到顶点j经过顶点k,且 g [ i ] [ j ] > g [ i ] [ k ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值