algorithm - 测量稀疏向量与 30k 其他预定义稀疏向量之间的最小角度

标签 algorithm sorting statistics computer-science knn

我有一个稀疏向量,比方说 <0,0,...,0,8,3,...>

我想从一组预定义的 30k 个向量中找到 k 个最近的向量。我正在做的特定“近”计算类似于标量乘法来找到向量之间的角度。

有没有办法优化这个过程(除了进行 30k 次计算并保存前 k 个结果的天真方法)?我感兴趣的是优化运行时间,而不是 mem

最佳答案

一个简单的解决方案是预先计算所有角度并将它们存储在查找表(上三角矩阵)中。那将花费 30k * 30k/2 = 450m。那将是最快的。

关于algorithm - 测量稀疏向量与 30k 其他预定义稀疏向量之间的最小角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685909/

相关文章:

python - 给定大小为 m*n 的输入图像 X, block 大小为 T,如何生成大小为 T*T 的 k 个随机非重叠 block ?

java - 统计查询

r - 当预测值没有变化时,为什么 lm 会返回值?

c - 将具有重复值的整数数组部分排序到存储桶中的最快方法

java - 如何为 Dijkstra 算法实现 PriorityQueue?

php - 按数字对奇怪的数组进行排序

machine-learning - 标准化多元线性回归模型中的因变量

algorithm - O(n sqrt(n)) 算法如何在给定数字数组的情况下列出所有可能的总和?

r - 使用 NA 值对列进行子集化

python - 比较列表中整数与给定值的差异