我在多维空间中有很多点。而且我想在任何给定点找到几个邻居(在附近区域内)(要求是避免扫描所有点)。
我想知道我的解决方案是否合适:
预处理:
dist = distance of projection to the start point of axis point_num = number of point sorted_set.put( dist, point_num )
找到任何给定点的邻居:
dx = radius of neighborhood (some constant) dist_1 = distance of projection of given point to start point of axis_1 list_1 = sorted_set_1.get_sub_set( dist_1 - dx, dist_1 + dx ) dist_2 = distance of projection of given point to start point of axis_2 list_2 = sorted_set_2.get_sub_set( dist_2 - dx, dist_2 + dx ) return intersection_of( list_1, list_2 )
这是一个简单的例子:
相交[2, 4, 1]
和[4, 5]
会产生回答[4]
请指出,如果我在算法中犯了任何错误
由于
答案 0 :(得分:1)
您尚未向我们提供有关如何构建实际邻居集的说明,在本例中为[2, 4, 1]
和[4, 5]
。你为什么从一个索引中选择3个元素而从另一个索引中选择2个元素?
你还说你想找几个邻居。有多少是或者应该是你的功能的输入?在示例中,您只找到一个,算法应该决定您想要多少?
如果所有点都在您的某个轴上的一条线上,会发生什么?然后一组确定包含所有元素。