如何从两个点中找出最接近一组点的一个?
假设我有两个点(x1,y1)和(x2,y2),我想知道哪个更接近点p1,p2,p3,p4的集合。
有什么算法吗?
输入点数和集合中的点数不固定
Set中可以有n个输入点和n个点。
答案 0 :(得分:1)
在设定点上构建kD树。这可以在时间Ns Log Ns中完成。
然后对于每个输入点,找到最近的邻居。这需要Ni Log Ns时间。最后,找到Ni比较中最短的距离。
总时间,(Ns + Ni)对数Ns。这可以与蛮力比较,以Ns.Ni为例。对于较小的Ni,最好使用蛮力。
答案 1 :(得分:1)
这完全取决于您如何定义“最接近一组点”。
一个超快速的标准可能是“对一组点具有最小的平方距离之和”(例如,平方距离用于曲线拟合,所以这里没有什么奇怪的。)
使用此标准,您只需要最小化Σᵢ((xᵢ-x)²+(yᵢ-y)²)
,其中i
是集合上的索引。