什么是在Visual Basic中解决TSP的最佳数据结构

时间:2014-12-11 11:31:37

标签: vb.net branch genetic-algorithm

我用VB编写程序用遗传算法解决TSP,我使用数据列表作为数据结构,我想问一下,在Visual Basic中解决TSP的另一种数据结构比我用的更好吗? 我也会用VB编写一个程序来解决使用分支定界算法的TSP,在这种情况下我可以使用哪种最好的数据结构,还是有利于它的数组? 谢谢

1 个答案:

答案 0 :(得分:1)

我不了解VB,但以下内容应该足够通用。

如果基因型直接是城市排列,我使用的数据结构是(对于N个城市):

  • 距离矩阵 - N-1个N-1 2-D阵列,其中位置(i,j)包含从第i个城市到第j个城市的距离
  • 基因型是城市指数的数组(或列表)(即0..N-1)

然后,健康评估既简单又快速,因为它只需一次遍历基因型,并且可以通过恒定时间查找距离。如果内存是一个问题并且问题是大的(即成千上万的城市和更多)你可能想要考虑不存储整个距离矩阵并只存储它的一部分(如果问题类型允许,就像在对称TSP中一样)其中从A到B的距离等于从B到A的距离,或者根本不存储它,并根据需要计算距离。

对于分支定界方法,您基本上也需要距离矩阵。如果您要对所选城市的顺序进行基于距离的优先级排序,并且您的TSP是度量标准(即每个城市是2D平面中的一个点),您可以使用KD树快速查找最近的城市飞机上的任何一点。