从一组n个点中找出m个最远点

时间:2014-12-03 21:35:36

标签: optimization graph

我想从n个d维点的集合中找到m个最大距离的点子集。

注意:我在这个主题上发现了类似的问题,但不幸的是,提出的答案需要凸优化(QP),这不适合我需要的非常多的点(n)。

Most mutually distant k elements (clustering?)

我尝试过以下算法

  • 将n维维度点添加到kd-tree
  • ,而子集S size大于n
    • 从kd-tree中找到与其任何邻居最不相距的点q
    • 从kd树和子集S
    • 中删除点q

返回m个最远点的子集S

这显然是不确定的,因为删除点的顺序会影响S的最终子集(但这偶尔会返回正确的解)。但是复杂度是(n-m)log(n),这是有利的,考虑到n将> 100,000。

有没有人有关于如何改进/替换上述算法同时保持复杂性的想法?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用希尔伯特曲线并沿曲线预先分配点,例如在cgal和三角测量中使用它。