algorithm - python - 计算相似向量的频率

我有N个2-d向量的列表,想找出最常出现的k个(= e.g.3)。

我想要的输出将是k个向量的字典,其频率分别为f。

最小示例:


k = 1


input = [[1.0,2.0],[1.1,2.1],[3.0,4.0]]


output = {[1.05,2.05]:2}



计算(伪代码或python会很好)最有效的算法是什么。

时间:

计算每个向量的相似性度量(即,距离d=sqrt(x^2+y^2) ),然后对矢量列表进行排序w.r.t,相似度量列表,

如果不希望在https://www.geeksforgeeks.org/count-frequencies-elements-array-o1-extra-space-time/中排序,就O(n)算法用于频率计数或使用哈希https://www.geeksforgeeks.org/counting-frequencies-of-array-elements/(也称为O(n)时间复杂度)

...