【发布时间】:2011-05-09 12:17:14
【问题描述】:
我需要为数据集的每个点找到它所有最近的邻居。数据集包含大约。 1000 万个二维点。数据接近网格,但没有形成精确的网格……
此选项排除(在我看来)使用 KD 树,其中基本假设是没有任何点具有相同的 x 坐标和 y 坐标。
我需要一个快速算法 O(n) 或更好的算法(但实现起来不太难:-)))来解决这个问题......由于 boost 没有标准化,我不想使用它...
感谢您的回答或代码示例...
【问题讨论】:
-
你能提供一个例子来说明你在寻找什么吗?
-
我不太明白为什么你不能使用 kd-trees。我会总结一下我认为你在说什么:让我知道我哪里出错了。您有一组 10M 不同的点。它们不在整数网格上,但很接近,例如,有一个点 (2.01, 1.05) 和另一个 (1.99,1.03)。你不能缩放这些点,使它们都位于一个整数网格上,然后使用 kd-trees?例如,上面的 2 点可能是 (201,105) 和 (199,103)。
-
有些点在网格上,有些不在,其余的靠近网格...
标签: c++ algorithm nearest-neighbor large-data