相关疑难解决方法(0)

适用于2D中快速k-最近邻搜索的数据结构和算法

我有一个大约100,000(X,Y)对的数据集,代表2D空间中的点.对于一点,我想找到它的k-最近邻居.

所以,我的问题是 - 假设我想绝对最小化整体运行时间,那么什么数据结构/算法将是一个合适的选择?

我不是在寻找代码 - 只是指向合适方法的指针.我有点害怕看似相关的选择 - 四棵树,R树,kd树等.

我认为最好的方法是构建一个数据结构,然后为每个点运行某种k-Nearest Neighbor搜索.但是,由于(a)我事先知道了这些要点,并且(b)我知道我必须对每个点进行一次搜索,或许有更好的方法?

一些额外的细节:

  • 由于我想最小化整个运行时间,我不在乎大部分时间花在结构与搜索上.
  • (X,Y)对分布相当均匀,因此我们可以假设几乎均匀分布.

algorithm performance nearest-neighbor

15
推荐指数
1
解决办法
3111
查看次数

找到最接近2D平面中每个点的三个点

您将获得平面中的点列表,编写一个程序,输出每个点以及最接近它的其他三个点.这三点按距离排序.

例如,给定一组点,其中每一行的形式为:ID x坐标y坐标

1 0.0 0.0  
2 10.1 -10.1   
3 -12.2 12.2   
4 38.3 38.3   
5 79.99 179.99  
Run Code Online (Sandbox Code Playgroud)

你的程序应该输出:

1 2,3,4   
2 1,3,4   
3 1,2,4   
4 1,2,3   
5 4,3,1  
Run Code Online (Sandbox Code Playgroud)

这是我在在线论坛上发现的一个面试问题.我可以想到一个O(n*n)解决方案:计算每个点到每个其他点的距离.返回此点的最小距离点.对其他点重复此过程

algorithm computational-geometry

6
推荐指数
1
解决办法
2032
查看次数