M 文件
function [circle,long]=modifycircle(c1,L);
global a
flag=1;
while flag>0
flag=0;
for m=1:L-3
for n=m+2:L-1
if a(c1(m),c1(n))+a(c1(m+1),c1(n+1))<...
a(c1(m),c1(m+1))+a(c1(n),c1(n+1))
flag=1;
c1(m+1:n)=c1(n:-1:m+1);
end
end
end
end
long=a(c1(1),c1(L));
for i=1:L-1
long=long+a(c1(i),c1(i+1));
end
circle=c1;
命令窗口
global a
L=size(a,1);
c1=[1 2:18 20:53 19];
[circle,long]=modifycircle(c1,L);
c2=[1 19 2:18 20:53];%改变初始圈,该算法的最后一个顶点不动
[circle2,long2]=modifycircle(c2,L);
if long2<long
long=long2;
circle=circle2;
end
circle,long
circle =
Columns 1 through 19
1 16 44 45 46 47 17 48 50 49 51 53 52
3 4 21 5 22 26
Columns 20 through 38
6 25 13 37 38 39 36 10 11 31 8 29 27
28 7 30 9 32 33
Columns 39 through 53
34 35 12 40 41 42 15 43 14 24 23 20 18
2 19