在c ++

时间:2017-03-15 13:20:55

标签: c++ algorithm sorting search vector

我需要制作一个最近邻插值程序。

我的输入是点的x,y和y坐标,例如x = .5,y = .3,z = .1

输出将是在最近可用点处测量的速度。由于我有四个向量x,y,z和V,程序将查找最近的节点,假设它是x[5239], y[5239], z[5239](对应于x = .501 y = .299 z = .1),并且输出V[5239]

我正在考虑设置一些参考点(让我们称之为p和q)。我的想法是计算所有节点相对于p和q的距离。然后根据节点到p和q的距离对向量进行排序(为此我需要保留原始索引的引用,以便能够找到V[i])。之后我可以使用二分搜索,使用给定点相对于p和q的距离来找到最近的节点。

我发现可能有用的另一件事是哈希表。如果我的向量中的元素数量是~96,000并且我必须执行的插值数量可能也是那么多,那么哪一个会更有效。

我将如何关注索引(如matlab排序函数)。在这种情况下,你会推荐什么样的排序算法?

谢谢

1 个答案:

答案 0 :(得分:0)

Nearest neighbor search是一个标准问题。您可能正在寻找cover tree。维基百科的文章本身非常简短,但它链接到原始论文和GitHub上的实现。