求解TSP问题时,题目只给出距离矩阵,未给出坐标点位置。如何通过距离矩阵得出二维坐标?
matlab代码如下:
clear;clc;
%任意两个城市之间的距离矩阵
D=[0,300,360,210,530,475,500,690;
300,0,380,270,230,285,200,390;
360,380,0,510,230,665,580,770;
210,270,510,0,470,265,450,640;
530,230,230,470,0,515,360,550;
475,285,665,265,515,0,460,650;
500,200,580,450,360,460,0,190;
690,390,770,640,550,650,190,0];
D([1,8],:)=D([8,1],:);
D(:,[1,8])=D(:,[8,1]);
%求各个城市的坐标
DSquare = D.^2;
[N,~]=size(D);
H = eye(N)-ones(N)/N;
K = -0.5HDSquare*H;
[eigVec, eigVal] = eig(K);
Y = eigVec(:,1:2)*sqrt(eigVal(1:2,1:2));%%求解的巡检点的坐标分布情况。
运行结果坐标位置出现了复数,是否无法获取准确坐标?
尝试通过python的numpy库解方程组,输出结果为空。
如何通过距离矩阵得出二维坐标。