Algorithm 需要一些关于旅行推销员问题表示的帮助吗

Algorithm 需要一些关于旅行推销员问题表示的帮助吗,algorithm,data-structures,matlab,neural-network,traveling-salesman,Algorithm,Data Structures,Matlab,Neural Network,Traveling Salesman,我遇到了一个使用Matlab脚本的旅行推销员解决方案,在它的代码中,我发现它使用了一种称为城市坐标的表示法,它看起来像: CityCood = [0.4000,0.2439,0.1707,0.2239,0.5171;0.4439,0.1463,0.2293,0.7610,0.9414] 5个城市 在这一点上,我真的不知道作者是如何得到这个表示的,因为从我到目前为止所看到的,手头上的信息应该是一个5*5对称矩阵,表示这五个城市中任意两个之间的距离 因此,如果有人能告诉我这种基于坐标的表示法是如何

我遇到了一个使用Matlab脚本的旅行推销员解决方案,在它的代码中,我发现它使用了一种称为城市坐标的表示法,它看起来像:

CityCood = [0.4000,0.2439,0.1707,0.2239,0.5171;0.4439,0.1463,0.2293,0.7610,0.9414]
5个城市

在这一点上,我真的不知道作者是如何得到这个表示的,因为从我到目前为止所看到的,手头上的信息应该是一个5*5对称矩阵,表示这五个城市中任意两个之间的距离

因此,如果有人能告诉我这种基于坐标的表示法是如何工作的,我将不胜感激。提前谢谢。

CityCoord
(我想少了一个字母)是一个2乘5的数组。我假设这意味着
CityCoord
包含每个城市的两个坐标(x,y)

要创建5乘5的距离矩阵,可以调用

squareform(pdist(CityCoord'))
CityCoord
(我想少了一个字母)是一个2乘5的数组。我假设这意味着
CityCoord
包含每个城市的两个坐标(x,y)

要创建5乘5的距离矩阵,可以调用

squareform(pdist(CityCoord'))

如果您没有统计工具箱,则计算欧几里德距离的解决方案的等效形式为:

%# dist(u,v) = norm(u-v) = sqrt(sum((u-v).^2))
D = cell2mat( arrayfun( ...
    @(i) sqrt( sum( bsxfun(@minus, CityCoord, CityCoord(:,i)).^2 ) ), ...
    (1:size(CityCood,2))', ...
    'UniformOutput',false) );
否则,我们可以使用
|u-v | | | ^2=|u | | | 2+| v | | ^2-2*u.v
实现更快的矢量化代码:

X = sum(CityCoord.^2);
D = real( sqrt(bsxfun(@plus,X,X')-2*(CityCoord'*CityCoord)) );

如果您没有统计工具箱,则计算欧几里德距离的解决方案的等效形式为:

%# dist(u,v) = norm(u-v) = sqrt(sum((u-v).^2))
D = cell2mat( arrayfun( ...
    @(i) sqrt( sum( bsxfun(@minus, CityCoord, CityCoord(:,i)).^2 ) ), ...
    (1:size(CityCood,2))', ...
    'UniformOutput',false) );
否则,我们可以使用
|u-v | | | ^2=|u | | | 2+| v | | ^2-2*u.v
实现更快的矢量化代码:

X = sum(CityCoord.^2);
D = real( sqrt(bsxfun(@plus,X,X')-2*(CityCoord'*CityCoord)) );

伟大的如果我手头已经有一个距离矩阵呢?比如说,我知道5个城市A、B、C、D、E中每对城市的城际距离?罗伯特:如果你需要将距离矩阵转换为坐标,并且你有统计工具箱,你可以使用例如
mdscale
,如
CityCoord=mdscale(distanceMatrix,2)”
.IPDM for People without Statistics Toolbox:文档中实际上有一个使用CMDSCALE根据城市间距离重建(近似值)城市位置的示例:很好。如果我手头已经有一个距离矩阵呢?比如说,我知道5个城市A、B、C、D、E中每对城市的城际距离?罗伯特:如果你需要将距离矩阵转换为坐标,并且你有统计工具箱,你可以使用例如
mdscale
,如
CityCoord=mdscale(distanceMatrix,2)”
.IPDM for People With Statistics Toolbox:文档中实际上有一个使用CMDSCALE重建的示例(近似值)基于它们之间的距离的城市的位置:考虑使用CAMEL案例的变量名:CITYCORD而不是CITYCOORD。考虑使用CAMEL变量的名称:CITYCORD而不是CITYCORD。+ 1为尼斯和先进的,虽然有点难以阅读非工具箱解决方案!为了可读性,我试着将它分解成多行,但对PDIST的一个调用要容易得多:)+1表示友好和高级,尽管阅读非工具箱解决方案有点困难!为了便于阅读,我尝试将其分解为多行,但调用PDIST更容易:)