【发布时间】:2015-10-19 13:49:04
【问题描述】:
我有一个稀疏向量,比如说
我想从一组预定义的 30k 个向量中找到 k 个最近的向量。我正在做的特定“近”计算类似于标量乘法以找到向量之间的角度。
有没有办法优化这个过程(除了进行 30k 计算并保存前 k 个结果的天真方法)?我对优化运行时间感兴趣,而不是内存
【问题讨论】:
-
如果你把它想象成
O(N * D),你可能会得到一些改进,其中N是向量的数量,D是向量的维数。对于某些输入,可能会获得更好的结果。 IE:其中大多数(在这种情况下超过 k)向量并不接近查询向量。您还可以使用仔细的近似和/或向量分组。即使在最好的情况下,你也会得到O(D + k)。
标签: algorithm sorting statistics computer-science knn