C++ K-最近邻C/C++;实施

C++ K-最近邻C/C++;实施,c++,c,parallel-processing,nearest-neighbor,knn,C++,C,Parallel Processing,Nearest Neighbor,Knn,在哪里可以找到k-最近邻算法的串行C/C++实现? 你知道有哪个图书馆有这个吗 我找到了openCV,但实现已经并行。 我想从串行实现开始,用pthreads openMP和MPI将其并行化。 谢谢, Alex实现这一点的最简单方法是循环所有元素并存储K。(只是比较一下)。这种方法的复杂性是O(n),虽然不是很好,但不需要预处理。因此,现在真正取决于您的应用程序。您应该使用一些空间索引来划分搜索knn的区域。对于某些应用程序,基于网格的空间结构很好(只需将您的世界划分为固定的块,然后首先只在块内

在哪里可以找到k-最近邻算法的串行C/C++实现?
你知道有哪个图书馆有这个吗
我找到了openCV,但实现已经并行。
我想从串行实现开始,用pthreads openMP和MPI将其并行化。

谢谢,

Alex

实现这一点的最简单方法是循环所有元素并存储K。(只是比较一下)。这种方法的复杂性是O(n),虽然不是很好,但不需要预处理。因此,现在真正取决于您的应用程序。您应该使用一些空间索引来划分搜索knn的区域。对于某些应用程序,基于网格的空间结构很好(只需将您的世界划分为固定的块,然后首先只在块内搜索)。当实体均匀分布时,这很好。更好的方法是使用一些层次结构,如kd树。。。这完全取决于你需要什么

有关包括伪代码在内的更多信息,请参见以下演示文稿:

安怎么样。我曾经使用过kdtree实现,但是还有其他选择

从网站上引用:“ANN是一个C++编写的库,它支持任意高维的精确和近似最近邻搜索的数据结构和算法。”

< P>我用最近邻搜索写了一个。通过添加优先级队列,可以轻松地将其扩展到K近邻


更新:我增加了对N维k-最近邻搜索的支持

以解决应用该算法的哪些问题?KNN非常简单,您可以尝试实现自己的方法。谢谢您的回复。实际上,我必须从一个已经实现的版本开始。