图论模型——Floyd算法

核心思想:通过构造带权邻接矩阵,解决多点到多点最短路径的动态规划问题。


算法思想

ac4ea839b11247f38a284289c01100c0.jpg

 


例子

408ba8e91d1f497a9665596bea5520a7.jpg

 将该带权邻接矩阵代入MATLAB中运行

f565cbeebd60490198b40a7a1f7fd6c9.jpg


 附录

学习视频

【小石老师数学建模14讲(全)_数学建模比赛快速入门_13个常用数学模型-哔哩哔哩】 https://b23.tv/JbfhryB

 

Flyod算法程序

tulun2.m

a= [ 0,50,inf,40,25,10;

     50,0,15,20,inf,25;

     inf,15,0,10,20,inf;

     40,20,10,0,10,25;

     25,inf,20,10,0,55;

     10,25,inf,25,55,0];

[D, path]=floyd(a)

 

floyd.m

function [D,path,min1,path1]=floyd(a,start,terminal)

D=a;n=size(D,1);path=zeros(n,n);

for i=1:n

   for j=1:n

      if D(i,j)~=inf

         path(i,j)=j;

      end, 

   end,

end

for k=1:n

   for i=1:n

      for j=1:n

         if D(i,k)+D(k,j)<D(i,j)

            D(i,j)=D(i,k)+D(k,j);

            path(i,j)=path(i,k);

         end, 

      end, 

   end,

end

if nargin==3

   min1=D(start,terminal);

   m(1)=start;

   i=1;

   path1=[ ];   

   while path(m(i),terminal)~=terminal

      k=i+1;                                

      m(k)=path(m(i),terminal);

      i=i+1;

   end

   m(i+1)=terminal;

   path1=m;

end

 

Flyod带权邻接矩阵范例

[0 8 Inf Inf Inf Inf 7 8 Inf Inf Inf;

   Inf 0 3 Inf Inf Inf Inf Inf Inf Inf Inf;

   Inf Inf 0 5 6 Inf 5 Inf Inf Inf Inf;

   Inf Inf Inf 0 1 Inf Inf Inf Inf Inf 12;

   Inf Inf 6 Inf 0 2 Inf Inf Inf Inf 10;

   Inf Inf Inf Inf 2 0 9 Inf 3 Inf Inf;

   Inf Inf Inf Inf Inf 9 0 Inf Inf Inf Inf;

     8 Inf Inf Inf Inf Inf Inf 0 9 Inf Inf;

   Inf Inf Inf Inf 7 Inf Inf 9 0 2 Inf;

   Inf Inf Inf Inf Inf Inf Inf Inf 2 0 2;

   Inf Inf Inf Inf 10 Inf Inf Inf Inf Inf 0;];

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值