优化对称测试

时间:2019-06-20 13:21:36

标签: python-3.x performance for-loop computational-geometry

我有n个物品。对于每一对,我都必须进行测试(对/错)。该测试是对称的:test(a,b)= test(b,a)。我正在寻找运行这些测试的最快解决方案。

每个项目都有一个ID和一个属性。在这种情况下,该属性是多边形,我正在寻找附近的其他多边形。此测试是对称的:如果A触摸B,则B触摸A。 测试两次是多余的。因此,我编写了这段代码以仅测试n(n-1)/ 2次:

from collections import defaultdict
dict_neigh = defaultdict(list)

# initially my data is in a dataframe, but I though an array would be faster(?) 

# the property of the item:
data=df_gps.coordinates.values

# the index of the item:
ind=df_gps.index.values

end=len(data)
for x in range(0,end-1):
    for y in range(x +1,end):
        # The symmetric test:
        if Polygon(data[x]).touches(Polygon(data[y])):
            # Store the result in a dic
            dict_neigh[ind[x]].append(ind[y])
            dict_neigh[ind[y]].append(ind[x])

我想知道是否有人看到一种提高这种(某种)测试速度的方法。

0 个答案:

没有答案