在由坐标和数字K(0 <K <N)给出的集合V中有N个点.我需要确定具有相同半径R的K个圆(磁盘),它们的中心位于V set中的点.这些圆圈必须"覆盖"所有N个点,R是最小的.
谁能帮我这个?
这个问题被称为(离散)$ k $ -center问题,并且是群集中众所周知的问题.虽然问题通常是NP完全的,但是有一种非常简单的算法可以在任何度量的最优解的因子2内生成解(包括问题的隐含的2-D欧几里德距离).这是由于冈萨雷斯,如下
最后得到的半径R是从最后一个点到下一个最远点的距离.通过构造,您可以保证覆盖半径为中心的每个k点的所有点,并且通过三角不等式,该R在最佳半径的2倍内.
如果你知道你在飞机上,你可以在理论上做得更好(包括在n中获得时间多项式的精确算法,在k中获得指数),但实际上上述算法可能是最简单的