这种用于计算最小边界圆的天真算法是否正确?

时间:2014-01-29 20:21:34

标签: algorithm

我知道网上有很多用于计算最小封闭圆(SEC)的算法。但我想知道为什么一个简单的算法不适合它。

这是我的想法:我有一组点,我想我可以使用以下方法计算它们的最小封闭圆(SEC):

  1. 计算所有点的中心并将其视为中心     SEC(cPoint)
  2. 计算每个点之间的距离     设置和cPoint。考虑最大距离作为SEC的半径
  3. 这会有用吗?

3 个答案:

答案 0 :(得分:2)

除非您对“所有点的中心”有一个不寻常的定义,否则这将无效。例如,如果选择中心作为其失败的点的平均值,则集合{(0,0),(0,1),(0,1)},因为中心将是(0,2 / 3)并且边界圆的半径为2/3,而正确的边界圆以(0,1 / 2)为中心,半径为1/2。

您可以为您的方法可以使用的“所有点的中心”选择合适的定义,但该定义在算法上等同于您所知道的“吨算法”。

答案 1 :(得分:1)

这个程序确实会给你一个封闭的圆圈,但并不总是最小的。

只是一个反例:

考虑在Q处形成钝角的三角形PQR。具有PR作为直径的圆是圆圈。考虑三角形的任何中心(质心,正中心......);如果没有与PR对齐,它将与P或R的距离大于半径,并且需要更大的圆。

这并不意味着你的程序在任何情况下都应该被删除,它可以产生相当紧凑的结果。

答案 2 :(得分:0)

如果存在任意多个点的群集,以及一个远离的孤立点,则可以在群集内部建立“中心”,而无需找到包围外围点的圆圈。

当然,最小的圆圈有一个中心点,但这种论证表明你不太可能在O(n)时间内找到它,因为必须考虑每一点。