最小点积查询的数据结构


19

考虑配备了标准点积和其中向量的: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)Rn,mv1,v2,,vmxRnminix,viO(nm)n=2O(log2m)

我唯一能想到的是以下内容。Johnson-Lindenstrauss引理的直接结果是,对于每个ε>0\ 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)中,我们可以计算DRnf:RnRO(logm)O(nlogm)PrxD[ix,viε(x+vi)2f(x),f(vi)x,vi+ε(x+vi)2]1εO((n+m)logm)在某种意义上,某些东西在大多数x上都接近\ min_i \ langle x,v_i \ rangle(至少如果范数\ | x \ |\ | v_i \ |很小)。minix,vixxvi

UPD如果我们使用局部敏感的散列,则可以将上述界限稍微简化为查询时间O(n+m)。更准确地说,我们选择k:=O(1ε2)独立的高斯向量r1,r2,,rk。然后我们将\ mathbb {R} ^ n映射Rn{0,1}k如下:v(r1,v0,r2,v0,,rk,v0)。然后,通过计算此映射图像中的\ ell_1-距离,可以估算加性误差\ varepsilon中两个向量之间的角度。因此,我们可以估计加法误差内的点积ε1εxviO(1ε2)时间中。



我不确定这是否行得通或有帮助,但是您的问题(在切换v_i的符号以转换为最大化之后)看起来与Voronoi图有关。可能可以针对此问题修改Voronoi图的算法,但是即使有可能,也仅对小n有用。
伊藤刚(Tsuyoshi Ito)

我不知道这是否是相同的观察结果...所有x都可以归一化为单位矢量,并且不会改变结果,我们可以在以原点为中心的单位n立方体中进行所有操作。查找立方体的哪个区域,使每个i的v_i最小化点积(每个区域必须是一个多面体)。我对多配位的数目没有限制。如果它小于nm的指数,则通过执行n维点位置查询,可以得到比O(nm)更好的东西。viinmO(nm)
徐超

您更关心哪个参数?通常,如果您想在m中获得次线性,您将开始在n中获得指数。
Suresh Venkat

@Suresh好吧,很高兴了解不同的可能取舍。近似版本也很有趣。
ilyaraz 2011年

快速说明:对于n = 2的情况,在凸包上进行二进制搜索将获得查询时间。O(logn)
杰弗里·欧文

Answers:


16

考虑一种特殊情况,即您只想确定查询向量是否与预处理集合中的某些向量正交。(也就是说,您要确定,其中所讨论的向量具有非负系数。)这种情况已经非常有趣。minix,vi=0

假设您可以在时间内回答某个,并使用预处理(多项式的度数不应取决于或或。nO(1)m1δδ>0mO(1)nO(1)mnδ

在论文“一种用于最优2约束满足的新算法及其含义”中,我观察到,这样的数据结构实际上将允许您在时间内对求解CNF-SAT ,其中是变量的数量。这将驳斥“强指数时间假说”,即k-SAT 对于无界基本上需要时间。2αvα<1v2nk

要了解原因,假设预处理时间受。考虑具有变量和子句的CNF公式我们将变量集分为大小分别为和两个部分和。列出各部分中变量的所有可能赋值(分别获得和赋值)。每个这些部分转让的相关联与比特向量其中当且仅当(nm)cFvnP1P2v(11/(2c))v/(2c)2v(11/(2c))2v/(2c)Ainwiwi[j]=1j th子句不被满足。因此,我们有两个指数级的位向量列表。FAi

注意,是可满足当且仅当有一个向量从在赋值和向量从分配上使得。Fw1P1w2P2w1,w2=0

现在,让,并用来自部分的所有矢量预处理假定的数据结构。通过假设,这花费了时间。对部分上的赋值的所有向量运行查询算法。假设这需要。令。m=2v/(2c)P2n2v/2P12v(11/(2c))nO(1)m1δ=nO(1)2vδv/(2c)α=1δ/(2c)

也许可以使用现有技术获得高效的预处理和查询时间。最著名的CNF-SAT算法并不排除它。(他们得到的像。)但是要计算稍微强一点-在这种设置下,这就像求解MAX CNF-SAT。nO(1)m11/(loglogm)2nn/lognminix,vi


太棒了!但这并不排除近似的数据结构以及像这样的查询时间,这也将非常有趣。O(mpoly(logn))
ilyaraz 2011年

顺便说一句,我们不能说类似“如果即使具有快速查询时间的近似数据结构,那么MAX-SAT也将是近似的”。
ilyaraz

为什么第一段所述的等效性成立?我认为内部乘积通常可以是负数。
伊藤刚(Tsuyoshi Ito)

ilyaraz:是的,即使近似的数据结构也将隐含近似的MAX-SAT。Tsuyoshi:谢谢您的见识
Ryan Williams'Aug

6

这是一个确切答案的想法,我怀疑Chao Xu可能在暗示。首先观察到,我们还可以像Chao指出的那样对归一化。现在考虑垂直于方向的超平面。目的是找到最靠近该超平面的点。通过双重性,这对应于超平面的布置中的射线拍摄查询,以找到在查询点“上方”的最近平面。由于可以对其进行预处理,因此主要的复杂性是点的定位,因此,您的问题现在已减少到在超平面排列中进行点定位的复杂性。使用切割,可以在空间中的时间中完成。xhxO(logn)nd


1
我应该提到,我对合理的预处理时间也很感兴趣,如果尺寸过大,则不是这种情况。
ilyaraz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.