给定3D空间中的N个点,如何找到包含这N个点的最小球体?

bit*_*ion 3 c++ algorithm data-structures

给定3D空间中的N个点,如何找到包含这N个点的最小球体?

Yin*_*Zhu 8

这个问题被称为最小封闭球问题.(谷歌这个术语,以找到它上面的教程和论文).

这是一个实现:http://www.inf.ethz.ch/personal/gaertner/miniball.html in c ++.

它的2d情况(找到一个圆圈来包围平面中的所有点)是计算几何课程中教授的经典示例.3D只是2D案例的简单扩展.

这个问题的一种算法是增量式.你从4点开始他们修复一个球体,当你添加第5点时,有两种情况:

  1. 关键在于球体.无需更新.

  2. 在这一点之外.在这种情况下,您需要更新球体.然后一个非平凡的属性是这个新点必须在你的新球体上!

根据上述观察,您的问题变得更小.阅读本书第4.7节.它也可以在谷歌书上找到.