社区
数据结构与算法
帖子详情
已知n个点坐标,求覆盖所有点的最小面积圆用什么算法?
ahuacxh
2002-05-14 10:38:11
是不是先求一个凸包,再对凸包的顶点枚举任三个点和任两个点确定的圆是否满足条件?
有什么高效的算法?
...全文
466
7
打赏
收藏
已知n个点坐标,求覆盖所有点的最小面积圆用什么算法?
是不是先求一个凸包,再对凸包的顶点枚举任三个点和任两个点确定的圆是否满足条件? 有什么高效的算法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangqiqi
2002-05-15
打赏
举报
回复
不对,待我回去想想。
wangqiqi
2002-05-15
打赏
举报
回复
取凸包中内角最小的三个顶点,作圆,即可。
starfish
2002-05-15
打赏
举报
回复
最简单的算法是任取三个点做一个圆,验证其他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)。
nethermit
2002-05-15
打赏
举报
回复
两位的算法本质上和我说的那个一样
row
2002-05-15
打赏
举报
回复
在n个点中找出A B两点,A B两点满足|AB|距离是n个点中距离最大的两点。
求取A B的中点C点,
1.如果其它的点到C点的距离都小于|AB|/2的话
则以C为圆心,R=|AB|/2为半径,就是所求的圆。
2.如果其它的点中存在到C点的距离大于|AB|/2
遍历其它所有的点,计算角AXB,求取使张角AXB最小的点X,
则以 A X B三点确定的圆即为所求圆。
atlantis13579
2002-05-15
打赏
举报
回复
求出两两的距离,找距离最大的两点AB,以此线段为直径作圆;
如所有点在此圆内,此圆就是所求圆;
否则求出中点M,找到离M距离最大的点P,作过PAB的圆.
nethermit
2002-05-15
打赏
举报
回复
连结两个距离最大的点,以此线段为直径作圆;
如所有点在此圆内,此圆就是所求圆;
如不是,取圆外点与该两点夹角最小的点,三点作圆,可得所求圆。
证明从略……
最小
圆
覆盖
算法
总结
一、定义 什么是
最小
圆
覆盖
?其实和
最小
矩形
覆盖
定义是类似的,给出一
个点
集,
求
能
覆盖
住所
有点
的
最小
圆。 二、两种
算法
求
最小
圆
覆盖
有两种
算法
,分别是增量法和模拟退火,个人推荐增量法,它的精度更高一些,且时间复杂度是稳定的线性级(点的顺序打乱后),所以下面也主要介绍增量法的原理。 增量法 前置知识 1. 圆上三点确定唯一的一个圆。 这个道理很简单,考虑三角形外接圆就行。 2. 若已有某
个点
集的
最小
圆
覆盖
,向该点集中再加入一个圆外的点,这时
最小
圆会被更新,这
个点
一定出现在新的
最小
圆的边界上。 反
[ZOJ 1450] Minimal Circle(
最小
圆
覆盖
问题)
题目描述: 给出一组点的
坐标
,
求
出能够
覆盖
掉他们的
最小
圆的
坐标
及半径.
算法
分析: 解决这个问题有一种
算法
,随机化增量
算法
,在随机数据下可以O(N)的解决这个问题. 具体实现方法: 1.先将所有的点随机化处理 2.按顺序把点一个一个的加入(一步一步的
求
前i
个点
的
最小
覆盖
圆),每加入一
个点
就进入步骤3 3.判断当前点是否在当前的最下
覆盖
圆内,如果不在进入4,在进入2
最小
覆盖
圆及备用
算法
完成对一组随机点的
最小
覆盖
圆规划,偶尔存在外漏点则会生成
覆盖
最多点的
最小
覆盖
圆
圆
覆盖
的
坐标
点c语言,
求
最小
覆盖
圆C程序
给个思路哦:平面上有n
个点
,给定n
个点
的
坐标
,试找一个半径
最小
的圆,将n
个点
全部包围,点可以在圆上。 1. 在点集中任取3点A,B,C。 2. 作一个包含A,B,C三点的
最小
圆,圆周可能通过这3点,也可能只通过其中两点,但包含第3点.后一种情况圆周上的两点一定是位于圆的一条直径的两端。 3. 在点集中找出距离第2步所建圆圆心最远的D点,若D点已在圆内或圆周上,则该圆即为所
求
的圆,
算法
结束.则,执...
最小
覆盖
圆
描述 平面上n
个点
,包含这n
个点
(点可以在圆的边界)的圆称为这n
个点
的
覆盖
圆,
求
这n
个点
的半径
最小
的
覆盖
圆,输出该圆的圆心
坐标
和半径。 输入 第一行是整数n,表示点数。后面是n
个点
的
坐标
。0<n<5000 n x1 y1 x2 y2 , xn yn 输出 输出n
个点
的
最小
覆盖
圆,圆心
坐标
和半径。保留五位小数 输入样例 1 3 0 0 0 3000 4000 0 输出样例 1 2000.00000 1500.00000 2500.00000 输入样例 2 9 200 400 300 400 300
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章