我正在尝试用Python编写一个GA来解决TSP。我想加快速度。因为现在,运行200代需要24秒,种群规模为200。
我使用的是29个城市的地图。每个城市都有一个id和(x,y(坐标。
我尝试实现一个距离矩阵,它计算一次所有距离并将其存储在列表中。因此,它不使用sqrt()
函数1M+次来计算距离,而只使用函数406次。每次需要两个城市之间的距离时,都会使用两个城市的id作为索引从矩阵中检索。
但即便如此,它也需要同样多的时间。我认为sqrt()
会比仅仅索引列表更昂贵。不是吗?字典会让它更快吗?
简短的答案:
是的。字典会让它更快。
答案很长:
比方说,你预处理并计算所有距离一次-太棒了!现在,假设我想找到A和B之间的距离。所以,我现在所要做的就是找到我放的距离——它在列表中!
在列表中查找内容的时间复杂度是多少?没错-O(n(
我会用多少次呢?根据您的问题,我的猜测是:1M+次
现在,这是一个巨大的问题。我建议你使用字典,这样你就可以在O(1(中搜索任意两个城市之间预先计算的距离。