{[[[0.707,0.5,0.5],0.3],[[0.6,0.8,0],0.2] ....}
我想收集彼此靠近的向量,并对它们的权重求和。现在我的想法是:如果向量A与另一个向量B接近,那么我会将它们视为相同的向量,并将A的权重加到B的权重上。Python代码为
def gathervecs(vecs):
gathers = []
for vec in vecs: #in each vec, there are two elements, the first one is the normalized vector, and the second is the norm**2.
index = 0
for i,avec in enumerate(gathers):
if sum(abs(vec[0] - avec[0])) < 10**(-10):
(gathers[i])[1] = avec[1]+vec[1]
index = 1
break
if index==0:
gathers.append(vec)
return gathers
但是这段代码的时间是原始集合大小的多项式。那么,问题是如何设计更有效的算法?
PS:请生成原始集以随机测试算法的效率。