有效实施最近邻搜索

时间:2012-04-06 08:58:47

标签: c++ tree nearest-neighbor

我正在尝试为最近邻搜索问题实现一种有效的算法。

我已阅读有关某些数据结构的教程,这些数据结构支持此类问题的操作(例如, R-tree 封面树等),但是所有这些都难以实施。

此外,我找不到这些数据结构的示例源代码。我知道C ++,我试图用这种语言来解决这个问题。

理想情况下,我需要描述如何使用源代码实现这些数据结构的链接。

2 个答案:

答案 0 :(得分:11)

快速最近邻搜索库有几种不错的选择。

  • ANN,基于Mount和Arya的工作。这项工作记录在S. Arya和D. M. Mount的论文中。 “固定维度的近似最近邻居查询”。在Proc。第四届ACM-SIAM Sympos。离散算法,第271-280页,1993年。

  • FLANN,基于Marius Muja&在2009年,计算机视觉理论与应用国际会议(VISAPP'09)上有一篇由Marius Muja和David G. Lowe撰写的论文,“自动算法配置的快速近似最近邻”。 FLANN的代码可在github

  • 上找到

FLANN在某些情况下似乎更快,并且是一个更现代的代码版本,具有针对许多其他语言的可靠绑定,可以快速合并更改。如果你想要一个经过良好测试的标准库,ANN可能是一个不错的选择。

编辑以回应评论

这两个库都有大量的文档和示例。

ANN的示例代码可在Manual的2.1.4节

中找到

FLANN的示例代码可在FLANN存储库examples directory中找到,例如/examples/flann_examples.c

答案 1 :(得分:2)

你可以尝试使用lineweep算法来找到最接近的点对:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lineSweep