考虑配备了标准点积和其中向量的:v_1,v_2,\ ldots,v_m。我们要构建一个数据结构,以允许以下格式的查询:给定x \ in \ mathbb {R} ^ n输出\ min_i \ langle x,v_i \ rangle。是否有可能超越平凡的O(nm)查询时间?例如,如果n = 2,则立即获得O(\ log ^ 2 m)。
我唯一能想到的是以下内容。Johnson-Lindenstrauss引理的直接结果是,对于每个和\ mathbb {R} ^ n上的\ mathcal {D}分布,都有一个线性映射f \ colon \ mathbb {R} ^ n \ to \ mathbb {R} ^ {O(\ log m)}(可以在O(n \ log m)时间中求值),使得\ mathrm {Pr} _ {x \ sim \ mathcal {D}} \ left [ \ forall i \ quad \ langle x,v_i \ rangle-\ varepsilon(\ | x \ | + \ | v_i \ |)^ 2 \ leq \ langle f(x),f(v_i)\ rangle \ leq \ langle x ,v_i \ rangle + \ varepsilon(\ | x \ | + \ | v_i \ |)^ 2 \ right] \ geq 1-\ varepsilon。因此,在时间O((n + m)\ log m)中,我们可以计算在某种意义上,某些东西在大多数x上都接近\ min_i \ langle x,v_i \ rangle(至少如果范数\ | x \ |和\ | v_i \ |很小)。
UPD如果我们使用局部敏感的散列,则可以将上述界限稍微简化为查询时间。更准确地说,我们选择独立的高斯向量。然后我们将\ mathbb {R} ^ n映射到如下:。然后,通过计算此映射图像中的\ ell_1-距离,可以估算加性误差\ varepsilon中两个向量之间的角度。因此,我们可以估计加法误差内的点积在时间中。