Algorithm 查找集合A中所有点的算法集合B中的最近邻
假设我们有两组点A,B,我们想为集合A中的每个点找到它在集合B中的最近邻居 有很多很好的算法可以找到一个点的最近邻。有没有什么方法可以利用我们得到的关于a_1的信息,更有效地搜索a_2或集合中其他点的最近邻居Algorithm 查找集合A中所有点的算法集合B中的最近邻,algorithm,nearest-neighbor,Algorithm,Nearest Neighbor,假设我们有两组点A,B,我们想为集合A中的每个点找到它在集合B中的最近邻居 有很多很好的算法可以找到一个点的最近邻。有没有什么方法可以利用我们得到的关于a_1的信息,更有效地搜索a_2或集合中其他点的最近邻居 我的想法是这样的:使用三角形不等式来获得B中每个点和新点a_2之间可能距离的区间,并对区间的最大值和最小值进行排序,然后我可以只搜索B中第一个区间内的点。阅读Bentley的“编写高效程序”可能会让你受益匪浅在那里,他处理了一个旅行推销员计划的案例研究。他认识到的一个节省是两点之间的距离需
我的想法是这样的:使用三角形不等式来获得B中每个点和新点a_2之间可能距离的区间,并对区间的最大值和最小值进行排序,然后我可以只搜索B中第一个区间内的点。阅读Bentley的“编写高效程序”可能会让你受益匪浅在那里,他处理了一个旅行推销员计划的案例研究。他认识到的一个节省是两点之间的距离需要取一个平方根,这是很昂贵的。平方根表示实际距离,而不是平方根表示可以与其他相对值进行比较的数字 我强烈推荐你读这本书。它会让你的大脑处于正确的位置
时间复杂度为O((M+N)logm)。N=| A |,M=| B |。蛮力解决方案可以是使用集合B最近点的密度图。然后将集合A的每个点与密度图进行比较。您也可以使用delaunay三角测量创建密度图。在您的上下文中,努力意味着什么?计算距离d(x,y)。您可以对点设置任何限制吗?我不知道这是否是最佳解决方案的一部分,只是它是相关的