用遗传算法求解TSP:距离矩阵是否应该加快运行时间



我正在尝试用Python编写一个GA来解决TSP。我想加快速度。因为现在,运行200代需要24秒种群规模为200

我使用的是29个城市的地图。每个城市都有一个id和(x,y(坐标。

我尝试实现一个距离矩阵,它计算一次所有距离并将其存储在列表中。因此,它不使用sqrt()函数1M+次来计算距离,而只使用函数406次。每次需要两个城市之间的距离时,都会使用两个城市的id作为索引从矩阵中检索。

但即便如此,它也需要同样多的时间。我认为sqrt()会比仅仅索引列表更昂贵。不是吗?字典会让它更快吗?

简短的答案:

是的。字典会让它更快。

答案很长:

比方说,你预处理并计算所有距离一次-太棒了!现在,假设我想找到A和B之间的距离。所以,我现在所要做的就是找到我放的距离——它在列表中!

在列表中查找内容的时间复杂度是多少?没错-O(n(

我会用多少次呢?根据您的问题,我的猜测是:1M+次

现在,这是一个巨大的问题。我建议你使用字典,这样你就可以在O(1(中搜索任意两个城市之间预先计算的距离。

最新更新