Floyd算法求解多元最短路径问题

本文介绍了Floyd算法如何解决多元最短路径问题,通过建立距离矩阵并遍历更新,寻找最佳中转点以达到最短路径。算法适用于多目标地之间的最短路径计算,并给出了具体实现步骤和代码示例。
摘要由CSDN通过智能技术生成

**

Floyd算法求解多元最短路径问题

**
问题描述:
对于多个目标地A,B,C…,求解两地之间的最短路径问题,例如求解 A-C的距离,常见的解有两种,一种是直接由A-C,另一种是经过某个中转地再到达目的地,即A-B-C,其中中转地可以是n个。

floyd算法解释:
floyd算法的核心思想是将多地间的距离构建为一个距离矩阵(即二维数组),然后再通过遍历方法,刷新距离矩阵,下面通过一组实例来解释:
例如有A,B,C,D四个目标地点,其相互间的距离为矩阵中所示,在这里插入图片描述
其中4行1列的“7”,与1行4列的“7”,均表示由A-D的距离为7,但是我们发现,若需要从A地去D地,若途径C地,需要“1”步,再由C去D,需要“5”步,则采用A-C-D的路线,共需要“6”步,最短路径的问题从而产生。所以算法的思想就是,遍历找到合适的中转点,使得由出发地去目的地的路程最短。

算法实现:
step1、建立原始距离矩阵:

int map[4][4] = {
   
    0,4,1,7,
    4,0,2,3,
    1,2,0,5,
    7,3,5,0
};

step2、floyd遍历实现:

for(mid = 0 ; mid < 4 ; mid++)
{
   
for(start = 0 ; start <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值