数学建模中,给出非常多的节点,求这些节点的最短路径(类似一条线的路径),应该用什么算法好?

老师说不要用蚁群算法,遗传算法之类太悬的算法

下面是我自己编写的一段代码,用来求过包含两千多个点的最短路,速度很快,比遗传、蚁群快而且最短路更短。你可以试试看,有问题再问我。
function [S,len]=short(P)
% 此程序用来求相同类型点间的最短路
% P表示某一类型的点的坐标矩阵
% p是最短路径
% d是路径权值和
%建立权值矩阵
n=length(P);%求该类型点的数量
W=zeros(n,n);
for i=1:n %计算权值并填充权值矩阵,由于各点联通,此权值矩阵就是该图的最短路矩阵
for j=(i+1):n
W(i,j)=sqrt((P(i,1)-P(j,1))^2+(P(i,2)-P(j,2))^2);
end
end
for i=2:n
for j=1:(i-1)
W(i,j)=W(j,i);
end
end
%求通过所有点的最短路
%先求从i点至j点,必须通过指定其他n-2个点的最短路,选出其中的的最短路
S=zeros(1,n);
S(1)=1; %先插入1,2点,以此为基准,每次插进一个新点
S(2)=2;
d1=2*W(1,2);
for i=3:n %新加入的点的标号
d1i=zeros(1,i); %插入第i个点,有i中可能的距离,其中最小值将为该轮的d1
for j=1:i %新加入点的位置,插入第i个点是有i个空位可供选择
if j==1 %在第一个空位插入
d1i(j)=d1+W(i,S(1))+W(i,S(i-1))-W(S(1),S(i-1)); %插入点在首端时,距离为原距离与第i点与上一次插入后的第1位置的点之间距离之和
end
if j>1 & j<i %在中间的空位插入
d1i(j)=d1+W(S(j-1),i)+W(i,S(j))-W(S(j-1),S(j));
end
if j==i
d1i(j)=d1+W(S(i-1),i)+W(S(1),i)-W(S(1),S(i-1));
end
end
[d1,I]=min(d1i);
S((I+1):i)=S(I:(i-1)); %将第I位后面的点后移一位
S(I)=i;%将第i点插入在I位置
end
len=d1;

下面这段代码是我用来把上面的结果保存到txt文件中的代码,如果你需要,可以用用。代码是我上次用过的没有改,你自己按照需要自己改吧。
clear
close all
clc
loaddata
X=[C;E;I;J];
[S,len]=short(X);
DrawPath(S,X);
print(1,'-dpng','cmeiju3.png');
% 将结果保存至txt文件
fid=fopen('cmeijulujin.txt','wt'); %创建alunjin.txt文件
fprintf(fid,'c号刀具\n');
fprintf(fid,'%d %d\n',X(S));
save('cmeijus','S');
save('cmeijulen','len');追问

高手啊,最重要的是你猜对了我在做哪道题....

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-20
dijkstra
自己做个距离矩阵就是

数学建模中,给出非常多的节点,求这些节点的最短路径(类似一条线的路径...
function [S,len]=short(P)此程序用来求相同类型点间的最短路 P表示某一类型的点的坐标矩阵 p是最短路径 d是路径权值和 建立权值矩阵 n=length(P);%求该类型点的数量 W=zeros(n,n);for i=1:n %计算权值并填充权值矩阵,由于各点联通,此权值矩阵就是该图的最短路矩阵 for j=(i+1):...

数学建模常用算法——最短路径
最短路径问题按初始条件的不同,可分为五类:确定起点、终点,确定起点和终点,以及全局最短路径。这两种主要算法,狄克斯特拉算法和弗洛伊德算法,各有其特点和适用范围。Dijkstra算法主要解决有向图中的最短路径问题,从起点逐步扩展至终点。而弗洛伊德算法则适用于处理所有节点对的最短路径,包括有向图和...

第三章 路径分析算法——基于Floyd算法的路径分析
Floyd算法是一种用于在已知给定的加权图中求多源点之间最短路径的算法。它于Diskstra算法类似,不同点在于Diskstra计算的是单源点之间的最短路径。Floyd算法是在数学建模领域和日常工作中使用频率较高的路径分析算法。Floyd作为一种典型的求多源最短路径问题的算法,是解决任意两个点之间最短路径的算法,...

铁路,公路运输如何加权变成单一运输方式求最短路径(数学建模)
这是图论中的最短路问题,目前常见的有dijstra算法和folyed算法。用MATLAB编程就可以实现了

用数学建模算出上海到各大城市的最短直线距离
运用图论中的最短路径 —floyd(弗洛伊德)算法,matlab编程求解即可。

怎样掌握初中数学最短路径问题的知识点?
最短路径问题两点的所有连线中,线段最短 连接直线外一点与直线上各点的所有线段中,垂线段最短”等的问题,我们称它们为最短路径问题.两点的所有连线中,线段最短 如图所示,在河a两岸有A、B两个村庄,现在要在河上修建一座大桥,为方便交通,要使桥到这两村庄的距离之和最短,应在河上哪一点...

数学建模--30+种常用算法模型
4. **最小生成树**:在图中找到连接所有节点且总边权最小的树,常用于网络设计和优化。5. **最短路径**:寻找两点间路径长度最短的问题,Dijkstra和Floyd算法是解决此类问题的常用工具。6. **网络流**:模型化网络中的流量问题,涉及最大流、最小割等,用于物流、通信等领域。7. **最优化和...

微积分问题,求解答
这样,就可以等价为蚂蚁在任何方向上都是匀速1cm\/s前进.那么求最短路径,就成了图上的直线在空间中的折线路径了.值得提醒的一点就是,因为等价过后的立方体就不是正立方体了,所以类似的展开一共有6种,对应的路径同样一共有6条,如下图:如果要问怎么确认展开方式只有这六种,其实是这么计算的:起点所在的...

最短路径 数学建模
1、外层循环是枚举起点,顺时针。2、内层循环是枚举终点,逆时针。如果发现两点当前所拥有路径大于两点距离1.4则需要新增边的方式实现。新增边,雷同上述循环方式,(实际可以在对应点遍例时,对中间量进一步存储下来),选择最短边实现。同时,如果存已新增边,则要判断是否可以删除。以上循环仅针对起点和...

TSP\/VRP问题求解系列【一】概念介绍
TSP和VRP问题是数学建模竞赛中的核心题型,需深入掌握。旅行商问题(TSP)是经典的组合优化问题,目标是找到从一个城市出发,经过所有城市后再返回起点的最短路径。车辆路线问题(VRP)最早由Dantzig和Ramser于1959年提出,它涉及配送中心向多个客户分送货物,目标是优化行车路线以满足客户需求,同时考虑路程、...

相似回答