作业帮 > 数学 > 作业

已知n个点坐标,求覆盖所有点的最小面积圆用什么算法?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/06/01 06:57:56
已知n个点坐标,求覆盖所有点的最小面积圆用什么算法?
已知n个点坐标,求覆盖所有点的最小面积圆用什么算法?
最简单的算法是任取三个点做一个圆,验证其他n-3个点是否在该圆内,并取遍所有的三个点的组合,记录其中最小的圆.这个算法的复杂度是O(n^4).
另一种较好的算法是Shamos提出的算法,复杂度是O(nlogn).
S1.计算点集S的凸壳CH(S);
S2.计算CH(S)的直径,设为p[i]p[j],以p[i]p[j]为直径做圆C,如果S中的点都在圆C内,则C就是所求的最小覆盖圆;否则转S3;
S3.计算点集S的最远点意义下的Voronoi图即Vor(S);
S4.设v是Vor(S)中的一个Voronoi点,以v为圆心,v至S点集中3个最远点的距离为半径做圆,该圆就是所求.
S1可以在O(nlogn)内完成,S2需要O(n)时间,S3需要O(nlogn)时间,S4的复杂度是O(n),所以整个算法的复杂度是O(nlogn).