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

时间:2015-01-20 02:07:52

标签: c# unity3d nearest-neighbor

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

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

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

1 个答案:

答案 0 :(得分:1)

为什么在3维中使用LSH?我建议你尝试一些基于树的方法,比如KD树(有很多选项)。 Here是关于KD树的C#问题。您可以检查ALGLIB是否有KD树。

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


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


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


修改

ANN与近似NNS有关。它使用KD树和BBD树。您可以查看我的一些ANNS here的答案。