我怎样才能找到包含一些给定点的最小圆?

时间:2010-06-23 14:32:46

标签: algorithm 2d

我已经给出了一些点(2D坐标),并希望找到包含所有这些点的最小圆。算法不一定非常有效(虽然它自然会很好)。

2 个答案:

答案 0 :(得分:7)

答案 1 :(得分:6)

这就是所谓的最小的封闭球问题(在你的情况下,最小的封闭圈),a.k.a。迷你吧。这个问题有几种算法和实现 - 以下所有都是线性时间解决方案(即,给定 n 球,它们在 O(n)中运行你认为维度 d 是固定的, d = 2 在你的情况下):

  • 对于2D和3D,Gärtner's implementation可能是最快的。

  • 对于更高的尺寸(比如说高达10,000),请查看https://github.com/hbf/miniball,这是Gärtner,Kutz和Fischer的算法实现(注意:我是其中一个-authors)。

  • 对于非常非常高的维度,核心集(近似)算法会更快。

注意:如果您正在寻找计算球体的最小封闭球的算法,您将在Computational Geometry Algorithms Library (CGAL)中找到C ++实现。 (您不需要使用所有CGAL;只需提取所需的头文件和源文件。)