【发布时间】:2014-12-03 21:35:35
【问题描述】:
我想从 n 个 d 维点的集合中找到最远的点子集。
注意:我在这个主题上发现了一个类似的问题,但不幸的是,提出的答案需要凸优化 (QP),这不适合我需要的大量点 (n)。
Most mutually distant k elements (clustering?)
我尝试了以下算法
- 将 n 个 d 维点添加到 kd 树中
- 当子集 S 的大小大于 n
- 从 kd-tree 中找到距离其任何邻居最近的点 q
- 从 kd-tree 和子集 S 中删除点 q
返回m个最远点的子集S
这显然是不确定的,因为删除点的顺序会影响 S 的最终子集(但这偶尔会返回正确的解决方案)。但复杂度为 (n - m)log(n),考虑到 n 将 > 100,000,这是有利的。
有没有人知道如何改进/替换上述算法,同时降低复杂性?
【问题讨论】:
-
你可以考虑提交到mathoverflow
-
@JulienS。我不知道这个网站,但我可能会把我的问题转到那里,谢谢!
标签: optimization graph