数学建模 求最短距离 最好能用多种方法

如题所述

用matlab解

%求A到E的最短距离

AB=[2 4 3];

BC=[7 4 6;3 2 4;4 1 5];

CD=[1 4;6 3;3 3];

DE=[3;4];

l=zeros(1,100)+1000;

n=1;

for a=1:3

L=AB(1,a);

for b=1:3

L=L+BC(a,b);

for c=1:2

L=L+CD(b,c)+DE(c,1);

l(1,n)=L;

n=n+1;

end

end

end

minL=min(l)

运行程序得到minL=11

数学模型

(Mathematical Model)是一种模拟,是用数学符号、数学式子、程序、图形等对实际课题本质属性的抽象而又简洁的刻画,它或能解释某些客观现象,或能预测未来的发展规律,或能为控制某一现象的发展提供某种意义下的最优策略或较好策略。

数学模型一般并非现实问题的直接翻版,它的建立常常既需要人们对现实问题深入细微的观察和分析,又需要人们灵活巧妙地利用各种数学知识。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-25
可以用数据结构里的最短路径算法,也叫Dijkstra算法,附上Dijkstra算法的Matlab编程代码

%两点间最短路的Dijkstra算法
function [d index1 index2]=Dijkf(a,s)
%d表示所求最短路的权和
%index1表示标号顶点顺序
%index2表示标号顶点索引

%a表示图的权值矩阵
%s表示开始的点

%对向量进行处理,将第n行和第n列的数据放置到第一行和第一列

b=a(s,:);
a(s,:)=a(1,:);
a(1,:)=b;
b=a(:,s);
a(:,s)=a(:,1);
a(:,1)=b;

%参数初始化
M=max(max(a));
pb(1:length(a))=0;
pb(1)=1;
index1=1;
index2=ones(1,length(a));
d(1:length(a))=M;d(1)=0;temp=1;
%更新l(v),同时记录顶点顺序和顶点索引
while sum(pb)<length(a)%重复步骤2,直到满足停止条件
tb=find(pb==0);
d(tb)=min(d(tb),d(temp)+a(temp,tb));%更新l(v)
tmpb=find(d(tb)==min(d(tb)));
temp=tb(tmpb(1));
pb(temp)=1;
index1=[index1,temp];%记录标号顺序
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
if length(index)>=2
index=index(1);
end
index2(temp)=index;%记录标号索引
end本回答被提问者采纳
第2个回答  2011-09-25
最短距离有一个(可能有多条路径),的,学过数据结构没有,,,,,直接编程
第3个回答  2019-01-28
用matlab解,,,
%求A到E的最短距离
AB=[2 4 3];
BC=[7 4 6;3 2 4;4 1 5];
CD=[1 4;6 3;3 3];
DE=[3;4];
l=zeros(1,100)+1000;
n=1;
for a=1:3
L=AB(1,a);
for b=1:3
L=L+BC(a,b);
for c=1:2
L=L+CD(b,c)+DE(c,1);
l(1,n)=L;
n=n+1;
end
end
end
minL=min(l)
运行程序得到minL=11
第4个回答  2011-09-25
找《运筹学》教材看一下,里面有例题,不难。
也可以搜索相关程序解决。
相似回答