答案 0 :(得分:1)
您需要使用Voronoi diagram,可能是Farthest-Point Voronoi图,其中平面被划分为区域,其中同一区域中的点具有相同的fartherst点
<强>更新强>
首先需要构建一个Farthest-Point voronoi图,即O(nlogn)时间,并找到所有顶点中最小圆的中心(如果圆由三个点定义)和所有边(如果圆由两点定义)。此方法的总时间复杂度为 O(nlogn)
我刚看到Smallest circle problem维基页面,似乎有一个 O(n)时间算法。如果您关心速度,可以查看它,否则不要介意。
答案 1 :(得分:1)
查看此页面。它描述了几种方法。 http://www.personal.kent.edu/~rmuhamma/Compgeometry/MyCG/CG-Applets/Center/centercli.htm
如果上面的链接死了,这里是描述最直接方法的相关部分:
一个O(n2)时算法
在这个阶段,我们是一个圆圈,C,它穿过给定集合的两个或多个点。如果圆的圆弧间隔(无点间隔)大于圆的圆周的一半,没有任何点,圆可以做得更小。设D和E为该无点间隔末端的点。在将D和E保持在圆的边界上时,减小圆的直径,直到我们有(a)或(b)的情况。
这里的另一个页面,带有一个示例applet: http://www.sunshine2k.de/stuff/Java/Welzl/Welzl.html