目前我尝试学习和理解几何算法,我发现最小圈问题非常有趣。我找到了许多解决方案和不同的算法,包括this one,其中我不确定它是否是Emo Welzl的。
但是,我不理解一个特定的(重要)部分:
获取下一个点并检查它是否被圆圈包围:
a)如果它是封闭的,重复4直到没有剩余的点数。
b)如果未封闭,请创建一个新圆,其中新点位于圆边界上,而所有其他点都位于圆内或圆上。
步骤1)到4a)很简单,我的问题是步骤4b)。我怎样才能找到这个新圈子?对我来说,看起来这只是一个较小的(子)点的问题。 (划分-ET-而治)
我猜我必须用新点替换3个原点(前3个点,构成第一个圆圈)中的一个,但我不确定 如果这真的有用......
答案 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)截然相反。