有效实施最近邻搜索

dat*_*ili 5 c++ tree nearest-neighbor

我正在尝试实现最近邻搜索问题的有效算法.

我已经阅读了一些关于某些数据结构的教程,这些数据结构支持这类问题的操作(例如,R-tree,封面树等),但是所有这些都很难实现.

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

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

And*_*ker 13

快速最近邻搜索库有几个很好的选择.

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

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

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

编辑以回应评论

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

ANN的示例代码可在手册的 2.1.4节中找到

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


Gig*_*egs 2

您可以尝试使用行扫描算法来查找最接近的点对:http://community.topcoder.com/tc? module=Static&d1=tutorials&d2=lineSweep 。