language-agnostic - 在对数时间内找到向量之间的最小角度

标签 language-agnostic math vector geometry big-o

我有 n=10000 10 维向量。
对于每个向量 v1我想知道向量v2最小化 v1 之间的角度和 v2 .

有没有比 O(n^2) 更快地解决这个问题的方法?

最佳答案

你所得到的本质上是球体上最近点的问题(因为向量之间的角度大致是它们的单位向量所在球体上点之间的距离),所以你可能会做一些事情二元(也许三元会更容易避免太多边界问题)空间分区分解。

但这对编码来说会很不愉快,并且可能不会比 naive 方法快多少,因为只有 10,000 个点(特别是,您首先将点划分为 3^10 = 59049 个盒子,尽管其中大部分都是空的) .一亿个十元点积应该不到一秒。

关于language-agnostic - 在对数时间内找到向量之间的最小角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883155/

相关文章:

language-agnostic - 半字节在编程中的使用

math - 给定一个角度,我如何使用 x 和 y 找到行进线的逻辑? (数学难题)

matlab - 使用梯度计算拉普拉斯

c++ - 舍入误差减少?

c - 为什么gsl没有单独的 vector *矩阵乘法函数?

c++ - 为什么连续的 vector::push_back 会导致不同数量的构造函数调用?

language-agnostic - 我什么时候应该使用 eval(获取一个字符串并在运行时将其作为代码执行)?

language-agnostic - 什么是全屏模式

algorithm - 在没有运算符(operator)的情况下实现操作

c++ - 如何在不调用复制构造函数的情况下向 vector 添加元素?