文档介绍:该【最佳哈密尔顿圈MATLAB程序 】是由【才艺人生】上传分享,文档一共【16】页,该文档可以免费在线阅读,需要了解更多关于【最佳哈密尔顿圈MATLAB程序 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。最佳哈密尔顿圈MATLAB程序
M文件
function[circle,long]=modifycircle(c1,L);
globala
flag=1;
whileflag>0
flag=0;
form=1:L-3
forn=m+2:L-1
ifa(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));
fori=1:L-1
long=long+a(c1(i),c1(i+1));
end
circle=c1;
long=
+002
1
a=[
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
];
globala
L=size(a,1);
c1=[12:1113:1812];
[circle,long]=modifycircle(c1,L);
c2=[1122:1113:18];%改变初始圈,该算法的最后一个顶点不动
[circle2,long2]=modifycircle(c2,L);
iflong2<long
long=long2;
circle=circle2;
end
circle,long
结果
circle=
145678910111516171814133212
long=
+002
globala
L=size(a,1);
c1=[11413324:1115:1812];
[circle,long]=modifycircle(c1,L);
c2=[1141332124:1115:18];%改变初始圈,该算法的最后一个顶点不动
[circle2,long2]=modifycircle(c2,L);
iflong2<long
long=long2;
circle=circle2;
end
circle,long
结果
circle=
145671889101115161714133212
long=
+002
2
a=[
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
];
globala
L=size(a,1);
c1=[13:182];
[circle,long]=modifycircle(c1,L);
c2=[123:18];%改变初始圈,该算法的最后一个顶点不动
[circle2,long2]=modifycircle(c2,L);
iflong2<long
long=long2;
circle=circle2;
end
circle,long
circle=
1109345678111213**********
long=
+002
globala
L=size(a,1);
c1=[110911:1618173:82];
[circle,long]=modifycircle(c1,L);
c2=[110911:16181723:8];%改变初始圈,该算法的最后一个顶点不动