【发布时间】:2010-06-23 14:32:45
【问题描述】:
我已经给出了一些点(2D 坐标),并希望找到包含所有这些点的最小圆。该算法不必非常有效(虽然它自然会很好)。
【问题讨论】:
-
Smallest circle which covers given points on 2D plane 的可能重复项;在我看来,同一个用户有一个相同的答案,而另一个问题的措辞更好。此版本中仅链接的答案也不是很好...
我已经给出了一些点(2D 坐标),并希望找到包含所有这些点的最小圆。该算法不必非常有效(虽然它自然会很好)。
【问题讨论】:
这就是所谓的 Smallest Enclosure Balls 问题(在你的例子中,Smallest Enclosure Circle),也就是 Miniball。这个问题有几种算法和实现——以下都是线性时间解决方案(即,给定 n 个球,如果它们在 O(n) 内运行,您认为尺寸 d 是固定的,在您的情况下是 d=2):
对于 2D 和 3D,Gärtner's implementation 可能是最快的。
对于非常非常高的维度,core-set(近似)算法会更快。
注意:如果您正在寻找一种算法来计算最小的封闭球体of spheres,您可以在Computational Geometry Algorithms Library (CGAL) 中找到一个 C++ 实现。 (您不需要使用所有 CGAL;只需提取所需的头文件和源文件即可。)
【讨论】: