
问题本身是个np难问题,随着点数n的增加,计算量呈n!递增
对于n=10以内的计算,可以用穷举法得到
n再增大,计算的时间就会很长
求全局最优解就没有快速的算法
只能用优化的方法求局部最优解
对于n较小的情况可以用穷举法
因为从某点出发在回到该点的路径是循环的
所以具体从哪点出发得到的解是一样的
而走的顺序是顺时针或者逆时针路程也是一样的
程序如下
n=8;
x=rand(n,1);
y=rand(n,1); %随机n个点坐标
d=squareform(pdist([x,y]));%统计坐标之间的距离
p=perms(2:n); %穷举所有可能路径,1固定为起点
m=factorial(n-1);
l=zeros(m,1); %记录路径长度的矩阵
for ii=1:m
ind=sub2ind([n,n],[1,p(ii,:)],[p(ii,:),1]); %获得路径
l(ii)=sum(d(ind));%计算路径长度
end
[minl in]=min(l); %找出最短路径
a=full(sparse([1,p(in,:)],[p(in,:),1],1,n,n)); %最短路径的连接矩阵
gplot(a,[x y],'-o'); %画最短路径图
axis equal
title(['最短路径长度:' num2str(minl)]);
程序利用随机数,随机生成n个点的x,y坐标
然后统计个点相互中间的距离矩阵d
固定第一点为出发点,利用排列穷举了所有可能路径
找出最短的路径,使用邻接矩阵a表示
最后a是一个nxn的矩阵,里面有n个1,每行只有1个1,每列也只有1个1
其余位置为0
matlab中设置当前路径方法/步骤:
1、下面假设有一文件夹 叫工具包1 里面有个函数叫fun_test
function c=fun_test(a,b)
c=a+b;
end
2、如果想以后都调用的话,就要包上面的路径加入到路径中,首先打开file菜单,点击 set path
3、在d出的对话框中,点击add folder,找到工具包1的路径,然后点确定;
4、确定后,可以看到工具箱1就已经加入到了路径。然后点击save,在点击close关闭对话框;
5、然后在命令窗口输入 fun_test(5,6)即可调用程序了;
6、同样要删除路径,回到刚才的对话框,选中要删除的路径,点击remove path 即可;
7上面的方法是永久添加路径,也就是每次打开matlab都不用重新设置。要临时添加和删除路径,采用addpath和rmpaht函数。
1、安装完成后,软件会有一点简单的提示,如下图所示。点击下一步,完成。
2、安装完成后还需要进行激活。如果你让软件自动创建快捷方式了,可以直接双击桌面上的快捷方式,否则可以进入到安装文件目录“C:\Program Files\MATLAB\R2012a\bin\win32”,打开“activate_matlabexe”,即可进入到激活界面,需要对应安装时的有无Internet安装的选择,如下图所示。
3、点击“下一步”,需要提供许可证文件,如下图所示。
4、点击“下一步”,软件提示激活完成,到此,软件就安装并激活完毕。
在做图像处理的时候,最好是保持存储路径和你的工作空间一致,如果你想读入某副的话可以直接从当前的工作路径所在的文件夹中调取,就在matlab的workspace左边那栏,如果调用的不在当前路径所在文件夹,那么必须用函数uigetdir——directoryname
=
uigetdir('',
'请选择文件夹'——就是选择新的图像文件夹路径,然后在选择要求的!
以上就是关于matlab 最优路径 代码全部的内容,包括:matlab 最优路径 代码、matlab中怎么设置当前路径、我在激活MATLAB时提示输入许可证完整路径,请问这个路径在哪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)