用GA解决TSP:距离矩阵是否应加快运行时间?

时间:2018-12-09 19:51:48

标签: python list dictionary time-complexity sqrt

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

我正在使用具有 29个城市的地图。每个城市都有一个ID和(x,y)坐标。

我尝试实现一个距离矩阵,该矩阵一次计算所有距离并将其存储在列表中。因此,它不是使用<?xml version="1.0" encoding="utf-8"?> <!-- unbounded ripple effect ?android:attr/selectableItemBackgroundBorderless --> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/dialpad_button_pressed" android:radius="56dp" /> 函数计算1M +次的距离,而是仅使用函数406次。每次需要两个城市之间的距离时,都将使用两个城市的id作为索引从矩阵中检索距离。

但是即使如此,它也需要花费很多时间。我认为sqrt()比索引一个列表要贵。不是吗字典会使它更快吗?

1 个答案:

答案 0 :(得分:0)

简短答案:

是的。字典可以使其更快。

长答案:

让我们说,您预处理并计算一次所有距离-太好了!现在,假设我要查找A和B之间的距离。因此,我现在要做的就是找到放置该距离的位置-它在列表中!

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

我将有多少次使用它?根据您的问题,我的猜测是: 1M +次

现在,这是一个很大的问题。我建议您使用词典,以便搜索O(1)中任何两个城市之间预先计算的距离。