如何求minimun enclosing circle

monthbird 2002-07-22 12:11:16
如何求minimun enclosing circle问题,越详细越好
...全文
51 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
starfish 2002-07-22
  • 打赏
  • 举报
回复
最小覆盖圆

最简单的算法是任取三个点做一个圆,验证其他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)。
atlantis13579 2002-07-22
  • 打赏
  • 举报
回复
若要求S的minimun enclosing circle

1.计算S的直径p,以p为直径做圆O
2.如果S中所有的点都在O内,则O为S的minimun enclosing circle,结束;
3.计算S最远意义下的Voronoi图并从中找点v,在v和S的N个顶点中任两个组成的三点的的所有外接圆中找出半径最小的一个.则这个圆就是S的minimun enclosing circle

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧