从一组点中选择最分散的点


15

是否有任何(有效的)算法从一组N个点(M < N)中选择个点的子集,以使它们“覆盖”大部分区域(在大小为M的所有可能子集上)?MNM<NM

我假设这些点在2D平面中。

天真的算法很简单,但是在时间复杂度方面却令人望而却步:

for each subset of N points
    sum distance between each pair of points in the subset
    remember subset with the maximum sum

我正在寻找一种更有效甚至近似的方法。

例如,这是其中有一些随机点的平面:

在此处输入图片说明

对于,我希望选择以下点:M=5

在此处输入图片说明

请注意,所选点(红色)分散在整个平面上。

我找到了一篇与该问题有关的文章“ 为视觉跟踪有效地选择空间分布的关键点 ”。但是,这是假定点是加权的。


2
对于的情况,请参见StackOverflow:找到距离最远的点的算法-比O(n ^ 2)好吗?M=2
hardmath

不幸的是,通常约为1500-5000,M约为10-50。NM
Libor 2015年

N是否都是固定的,或者您是否也在改变M(例如,因为您要最大化距离的平均值,在这种情况下,进一步增加M可能会导致减小)?MNMM
Wolfgang Bangerth,2015年

1
我强烈怀疑这是NP难题。它非常类似于最大权重集团问题,其中两个顶点之间的边的权重是它们之间的欧几里得距离。(我相信有些实用的启发式方法以最大
爬坡度

1
@hardmath对不起,这是一个错字。我试图说明我需要实现的目标。问题来自图像特征提取,在这里我只需要获取少数点特征,但由于将它们用于变换估计,因此将它们分散在所有图像上,当它们在空间上分散时,估计更加稳定。也许“熵”是一个更好的度量-我想选择个点,使它们遍布整个位置,就像处于最大熵状态的气体一样。另一方面,我试图避免将所选点聚类。M
Libor 2015年

Answers:


11

这是一个大概的解决方案。由于N太大而M太小,该怎么办:

  1. 计算N的凸包
  2. 从船体中最多选择M个满足最大距离标准的点。
  3. 如果步骤2留下少于M个点,则从内部选择1个点,以使其与先前选择的点的距离最大。
  4. 重复步骤3,直到选择的点数为M

它的直觉是,由于N >> M,并且您希望点之间的距离尽可能远,所以它们很可能靠近数据的边缘,因此您最好从船体开始,然后迭代从那里开始工作。

同样,从船体开始,您可以将初始搜索从N减少到N 1/2


更新

如果上面的步骤3和步骤4花费的时间太长(因为您正在迭代地测试数据集的内部),我想到了另外两个想法来加快问题的解决速度。

  1. 随机搜索:假设您在步骤2中在船体上找到了P点。然后从内部随机抽取M - P点。经过X次试验后,选择最佳组合。
  2. 模拟退火:计算覆盖数据集的最小边界框(不必与轴对齐,也可以倾斜)。然后在该边界框上定义一组M个均匀分布的网格点。请注意,这些点不一定与您的任何数据集点一致。然后对于每个网格点,在数据集中找到k个最近邻居。遍历每个M x k组合,然后选择满足最大距离标准的组合。换句话说,您正在使用初始网格作为引导程序来查找良好的初始解决方案。

谢谢。也许是错误地提出了这个问题。我的目标是使它们“覆盖”大部分区域。我认为仅距离标准就足够了,但似乎还需要添加一些东西。
Libor 2015年

好的,我已经更新了问题。您建议的方法可能效果很好。我还考虑了贪婪版本算法,该算法的工作方式如下:1)选择随机点A,2)选择距离A最远的点B,3)选择距离A和B最远的点C,4)...继续直到选择了点。M
Libor 2015年

1
也许用一种更正式的方式来陈述您的问题是,您想要一个M尺寸的镶嵌来覆盖N并最小化平均镶嵌面的面积?最小化构面区域似乎是散布这些点并确保它们不会聚集在一起的一种方法。
dpmcmlxxvi 2015年

是。我想避免使用网格,因为如果可以将点偶然地围绕网格线聚集,那么它们将在选择中聚集。
Libor 2015年

您提到的贪婪算法的一个问题是,它对初始种子点非常敏感。种子生长算法(从内而外地开始)存在该问题。我提到的船体方法可能会更稳定,因为它是从外而内的。
dpmcmlxxvi 2015年

6

在有大量个点和一个较小子集M被选择的情况下,考虑关于二维连续问题版本的已知知识可能会有所帮助。NM

L. FejesTóth(“由点集确定的距离之和”,Acta Math。Acad。Sci。Hungar。,7:397-401,1956年)表明,圆上的个点集使成对距离是通过圆上刻有正则M边的顶点实现的。 MM

随后,他(L. FejesTóth,“人类科学”,Acta Math。Acad。Sci。Hungar。,10:13-19,1959年)提出了更困难的问题,即最大化点的成对距离之和在直径(最大成对距离)为1的平面中。这个问题仍然在一般公开,虽然弗里德里希Pillichshammer给一个上限值,并且它显示出尖锐对于中号= 3 4 5“关于在欧几里得平面极值点分布”,ACTA数学Hungarica,98(4): 2003年3月31日)。M1M=3,4,5

这些少数情况表明,这种极值分布的点将倾向于出现在区域的外围。对于,解决方案是边长为1的等边三角形。对于M = 4,又有三个点形成等边三角形,第四个点位于通过两个点的圆弧的中点,并以第三个点为中心。对于M = 5,解决方案是直径为1的正五边形。这些都没有通过图形的内部呈现点的“散布”。M=31M=4M=51

如果我们希望避免在外围点的选择上占主导地位,那么另一个目标很容易证明是有用的。点之间的最小距离的最大化就是这样的标准。在StackOverflowComputer Science SEMath.SEMathOverflow提出了相关的问题。

MDMD


1

好的,因此您想从欧几里得平面中的给定N个点集中选择M个点,以便所选点的成对距离之和最大,对吗?

标准的本地搜索算法非常快,并且提供了很好的近似值。运行时间在N中为线性,在M中为二次。其近似比为1-4 / M。这意味着该比率随着M的增加而变得更好。例如,对于M = 10,它将获得60%的最佳值,对于M = 50,它将获得92%的最佳值。

该算法还适用于一般维数的欧几里得空间。在这种情况下,问题是NP难题。但是在飞机上,尚不清楚它是否具有NP-hard功能。

来源是本文。希望这可以帮助!最好,阿方索



1
我已经使用论文“有效选择空间分布的关键点进行视觉跟踪”(2011年第18届IEEE国际图像处理会议)中的“通过磁盘覆盖抑制”算法解决了这一问题。IEEE,2011年
Libor

1
阿方索(Alfonso),请明确表明您与该论文的从属关系。
nicoguaro

0

一种解决方案是:

  • 在创建边界矩形O(n)

  • 使M个人造均匀分布的点在此边界矩形内,有些M比其他困难。在您的情况下,矩形的四个角和中心的一个角

  • O(n(log(n)))

  • O(m(log(n)))

O(n(log(n)))MN

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.