for i =1:n
for j=1:n
d(i,j)=sqrt((v(i,1)-v(j,1))^2+(v(i,2)-v(j,2))^2);
end
end
d2=0;
for i=1:n
if i<n
d2=d2+d(i,i+1);
else
d2=d2+d(n,1);
end
end
text(10,30,num2str(d2));
n=size(d,2);
C=[linspace(1,n,n) 1];%生成线性间隔
for nnn=1:40
C1=C;
if n>3
for m=4:n+1
for i=1:(m-3)
for j=(i+2):(m-1)
if (d(C(i),C(j))+d(C(i+1),C(j+1))<d(C(i),C(i+1))+d(C(j),C(j+1)))
C1(1:i)=C(1:i);
for k=(i+1):j
C1(k)=C(j+i+1-k);
end
C1((j+1):m)=C((j+1):m);
end
end
end
end
elseif n<=3
if n<=2
fprint('It does not exist Hamilton circle.');
else
fprint('Any cirlce is the right answer.');
end
end
C=C1;
d1=0;
for i=1:n
d1=d1+d(C(i),C(i+1));
end
d1;
end
figure(2)
hold on;
plot (v(:,1),v(:,2),'*'); %描点
for i=1:n
str1='V';
str2=num2str(i);
dot=[str1,str2];
text(v(i,1)-1,v(i,2)-2,dot); %给点命名
end
v2=[v;v(1,1),v(1,2)];
plot(v(C(:),1),v(C(:),2),'r');
text(10,30,num2str(d1));