一尘不染

从给定的n点中选择最接近的k点

algorithm

在平面上给定U个n点的集合,您可以在恒定时间内计算任意一对点之间的距离。选择一个称为C的U的子集,以使C恰好具有k个点,并且对于给定的k,C中最远的2个点之间的距离应尽可能小。1
<k <= n

除了显而易见的n-choose-k解决方案,最快的方法是什么?


阅读 319

收藏
2020-07-28

共1个答案

一尘不染

一个解决方案在“
找到具有最小直径的k个点和相关问题”(Aggarwal,1991)中显示。其中描述的算法具有运行时间:O(k^2.5 n log k + n log n)

对于那些无法获得论文的人:问题称为 k直径 ,定义为

找出一组具有最小直径的 k 点。集合的 直径 是集合中任何点之间的最大距离。

我不能真正地 概述 所提出的算法,但是它包括计算点的 (3k-3)阶Voronoi图 ,然后解决每个 O(kn)
Voronoi集的问题(通过计算最大独立集)在一些二部图中)…我想我想说的是,它是非常重要的,并且远远超出了采访和本网站的范围:-)

2020-07-28