理解找到最小圆圈包围点的算法

时间:2015-10-30 18:52:06

标签: algorithm

目前我尝试学习和理解几何算法,我发现最小圈问题非常有趣。我找到了许多解决方案和不同的算法,包括this one,其中我不确定它是否是Emo Welzl的。

但是,我不理解一个特定的(重要)部分:

  1. 你在(XY)-Plane上获得N分。
  2. 您随机订购这些积分
  3. 选择3个点并创建它们在圆形边界上的圆圈。
  4. 获取下一个点并检查它是否被圆圈包围:

    a)如果它是封闭的,重复4直到没有剩余的点数。

    b)如果未封闭,请创建一个新圆,其中新点位于圆边界上,而所有其他点都位于圆内或圆上。

  5. 步骤1)到4a)很简单,我的问题是步骤4b)。我怎样才能找到这个新圈子?对我来说,看起来这只是一个较小的(子)点的问题。 (划分-ET-而治)

    我猜我必须用新点替换3个原点(前3个点,构成第一个圆圈)中的一个,但我不确定 如果这真的有用......

1 个答案:

答案 0 :(得分:1)

从3点A,B,C你可以计算圆的中心O:与这三个点等距的点。其坐标x0和yO分别是xA,xB,xC和yA,yB,yC的平均值。

让我们称D为第4点,追踪中心0和半径OD的圆。

OD> OA(和OA = OB = OC)所以A,B和C都在圈内。

修改

我上面提出的解决方案并不是最优的。

我找到了对Welzl算法的一个很好的解释:see link

当然,您可以通过查看Google学术搜索来轻松获取论文,但这很难理解。

基本原则是在4b)中,圆是从边界上具有D的所有可能圆以及之前在边界上的两个其他点计算的(或者如果不起作用则是一个点,它将会与D)截然相反。