在2d平面上找到最接近的K元素

时间:2017-02-27 01:00:14

标签: algorithm data-structures geometry dynamic-programming

例如:输入:在2d平面中,假设我有一些N个点(a,b)(c,d)....... N. 我们的算法需要找出最接近的K个元素,比如说K = 4,那么我们需要找出四个位置相近的邻居。更清楚的是:如果太阳系是一个二维平面,所有行星都是它上面的点,我们需要返回地球和金星(假设地球和金星最接近两个行星对比),而在这种情况下K = 2 。 我在互联网上搜索只是为了找到w.r.t起源的第一个K点,但在这个问题中,这些点可以在2d平面的任何地方。我从某人那里听说我们需要使用动态编程。

1 个答案:

答案 0 :(得分:0)

KD Tree 完成这项工作。

这是一种几何数据结构,可以通过类似于二分搜索的方式切割搜索空间来有效地找到最近邻居。它有一些有趣的实际应用,例如,它用于KNN算法的实现,这是一种基于找到Kd超平面上给定点的最近邻居的机械学习算法。

您可以在此处找到有关结构的简单说明:https://en.wikipedia.org/wiki/K-d_tree