
如何用matlab floyd算法求出生产基地到销售连锁店的最短距离
1个回答
推荐于2016-01-26 · 知道合伙人数码行家

知道合伙人数码行家
采纳数:117533
获赞数:517216
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注

展开全部
matlab没有现成的floyd算法,你可以自己写一个,也可以上网上搜索,有很多实现。
%floyd算法通用程序,输入a为赋权邻接矩阵
%输出为距离矩阵D,和最短路径矩阵path
function [D,path]=floyd(a)
n=size(a,1);
D=a;
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
%配合floyd算法的后续程序,s为源点,t为宿点
%L为长度,R为路由
function [L,R]=router(D,path,s,t)
L=zeros(0,0);
R=s;
while 1
if s==t
L=fliplr(L);
L=[0,L];
return
end
L=[L,D(s,t)];
R=[R,path(s,t)];
s=path(s,t);
end
%floyd算法通用程序,输入a为赋权邻接矩阵
%输出为距离矩阵D,和最短路径矩阵path
function [D,path]=floyd(a)
n=size(a,1);
D=a;
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
%配合floyd算法的后续程序,s为源点,t为宿点
%L为长度,R为路由
function [L,R]=router(D,path,s,t)
L=zeros(0,0);
R=s;
while 1
if s==t
L=fliplr(L);
L=[0,L];
return
end
L=[L,D(s,t)];
R=[R,path(s,t)];
s=path(s,t);
end

2025-03-03 广告
构建MES(Manufacturing Execution System,制造执行系统)的详细步骤通常包括以下步骤:1. 需求分析:明确构建MES系统的目的和需求,了解工厂生产流程、设备、物料、人员等基本情况,确定MES系统的功能和范围。2...
点击进入详情页
本回答由Jackyzhu提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询