在超立方体上找到两组点之间最接近的对


11

鉴于的两个子集维超立方体(即,),我寻找以检索点的算法 ST的汉明距离(或在超立方体-distance)是最小的。仅检查每对的天真算法时间,还有更好的结果吗?中号Ñ { 0 1 } d中号Ñ Ñ 大号1 d ħÑ | M | | N | dd中号ñ{01个}d中号ññ大号1个dHñ|中号||ñ|d

为简单起见,我们可以假设。|中号|=|ñ|=d


嗯。还有其他动机/应用吗?怀疑有这种欧几里得/平面算法的多维类似物,但维基百科没有引用任何东西,也没有在其他地方听说过它。文章的开头似乎断言,对于更高维度d > 2,可以用求解,但未给出引用。也许在裁判的某个地方?O(nlogn)d>2
vzn

1
分而治之的论点依赖于包装界限。在更高的维度上,这在递归中引入了因子,但是对n的依赖性保持不变。因此,如果您不介意d中的指数项,则可以使用此方法。如果您想要精确的东西,您将不可能做得更好。2dñd
Suresh Venkat


1
这似乎不太可能。考虑一下超立方体上的n + m个随机字符串。不知何故,每对的汉明距离大约为d / 2,您必须检查所有对以找到最接近的对。
Sariel Har-Peled

@Sariel Har-Peled:正如Suresh所写,对于任何常数d,都可以在时间O(n log n)(其中n = max {| M |,| N |})中解决。因此,“您必须检查所有对以找到最接近的对”对我来说听起来并不正确。
伊藤刚(Tsuyoshi Ito)

Answers:


6

刚意识到您正在要求。那你可以做矩阵乘法,对吗?写中号是行矩阵XÑ作为列矩阵ÿ,否定的条目ÿ,并且计算矩阵Ž = X ý。显然,Ž Ĵ是之间的Hamming距离的第点中号Ĵ个的点Ñ|中号|=|ñ|=d中号Xñÿÿž=Xÿzi,jiMjN。根据最后的突破,它的运行时间为(但是我有50,000页的手稿,显示了如何通过一种非常简单的算法在O d 2.3726999999)的时间内进行矩阵乘法。O(d2.3727)O(d2.3726999999)

如果矩阵不是正方形,则可以获得类似的效果。我认为Uri Zwick在这种情况下有一篇有关快速矩阵乘法的论文。

从某种意义上说,这不太有趣-我们要避免使用 项。d项中的改进有点,嗯...O(|M||N|)d


很棒的发现。另一方面,我的一位同事找到了这篇论文:toc.cse.iitk.ac.in/articles/v008a014/v008a014.pdf,直到现在我才意识到它也是(也是)由您写的。Page 17+特别有趣
。.– HdM

是。看起来很熟悉-但请注意,这是近似值-Suresh要求提供确切结果...
Sariel Har-Peled

-3

正如评论中所述,该问题通常与希尔伯特空间中的同一问题密切相关,并且算法几乎适用。这样的一个例子可以在本文中通过的Arya找到等人[1] P29其中作者基准使用布尔立方体和他们的Hilbert空间的最近邻算法范数。他们的算法适用于任何L m Minkowski度量。正如您指出的那样(但维基百科似乎也没有,也没有很多其他参考文献),汉明距离度量等效于二进制坐标上的L 1 Minkowski空间度量或“出租车”度量。他们的算法取O d n log n LLmL1O(dnlogn)预处理时间(维)和对数“查询”时间(每点)。另请参阅[2]d

[1] 在固定尺寸下近似最近邻搜索的最佳算法 Arya等,30pp

[2] 在超立方体上搜索有效近邻,并将其应用于分子聚类 Cazals


1
Arya等人证明的查询时间范围是。任何微不足道的算法在超立方体上的效果都更好。他们在第29页认为,实验表明绑定过于悲观,但他们只能看着尺寸<= 16Ω(dd)
Sasho尼科洛夫
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.