在 C# 中使用 LSH 进行近似最近邻搜索

Approximate Nearest Neighbour Search with LSH in C#

我发现很多讨论和文章都表明可以在 3d 空间坐标中使用局部敏感哈希 (LSH) 找到近似最近邻。不幸的是,我无法找到任何真正的工作示例,其中所有内容都可以在单个复制粘贴代码中完成。

我正在使用 C#(更具体地说是 Unity)并注意到一些文章指出近似 NNS 可以是游戏开发的快速方法。但是,我还没有找到任何真正的 C# 实现(如果 C# 不存在,则可能是 C++)。

那么有人知道一些可能的解决方案吗?

为什么要在 3 维中使用 LSH?我建议你尝试一些基于树的方法,比如 KD 树(有很多选择)。 Here is a C# question about KD trees. You could check ALGLIB 用于 KD 树。

请注意,根据您的数据集,数据结构的选择会有所不同。你可以看一下我所做的一些比较(尽管在更高维度上)here and here.


你可以查看这个link LSH for Finding Similar Documents from a large number of Documents in C# 为了获得 C# 的味道。一个有趣的问题是 here


如果你坚持使用 LSH,那么既然你是做游戏开发的,C++ 也可能是一个选择,所以这里是 E2LSH 库。


编辑

ANN与近似NNS有关。它使用 KD 树和 BBD 树。您可以查看我对 ANNS here.

的一些回答