平面点集的最小包围圆算法设计 及实现
平面点集的最小包围圆 - 邓俊辉 - Junhui Deng

平面点集的最小包围圆1、问题背景考察固定在工作平台上的一直机械手,要捡起散落在不同位置的多个零件,并送到别的地方。
那么,这只机械手的底座应该选在哪里呢?根据直觉,应该选在机械手需够着的那些位置的“中心”。
准确地讲,也就是包围这些点的那个最小圆的圆心----该位置的好处是,可使机械手的底座到它需要够着的那些点的最大距离最小化。
于是可得如下问题:给定由平面上n个点所组成的一个集合P(对应于机械手需要够着的工作平台的那些位置),试找出P 的最小包围圆(smallest enclosing disc)----亦即,包含P中所有点、半径最小的那个圆。
这个最小包围圆必然是唯一的。
2、算法及原理算法介绍:我们本次算法的设计是基于这样一个简单直观的性质:在既定的给定点条件下,如果引入一张新的半平面,只要此前的最优解顶点(即唯一确定最小包围圆的几个关键顶点)能够包含于其中,则不必对此最优解进行修改,亦即此亦为新点集的最优解;否则,新的最优解顶点必然位于这个新的半空间的边界上。
定理可以通过反证法证明。
于是,基于此性质,我们便可得到一个类似于线性规划算法的随机增量式算法。
定义D i为相对于p i的最小包围圆。
此算法实现的关键在于对于p i∉D i-1时的处理。
显然,如果p i∈D i-1,则D i= D i-1;否则,需要对D i另外更新。
而且,D i的组成必然包含了p i;因此,此种情况下的最小包围圆是过p i点且覆盖点集{ p1,p2,p3……p i-1}的最小包围圆。
则仿照上述处理的思路,D i={ p1,p i },逐个判断点集{ p2,p3……p i-1 },如果存在p j∉ D i,则D i={p j,p i }。
同时,再依次对点集{ p1,p2,p3……p j-1 }判断是否满足p k∈D i,若有不满足,则D i={p k,p j,p i}。
由于,三点唯一地确定一个圆,故而,只需在此基础上判断其他的点是否位于此包围圆内,不停地更新p k。
最小圈基问题的求解

最小圈基问题求解一、问题描述定义:一个图的圈基是圈的集合,使得对圈基集合中的某些圈应用环和操作就可以生成图中任何一个圈。
假如每条边与一个权相关,可以定义圈基的权就是这个圈基中所有权的权之和。
下面用一个例子来介绍最小圈基问题:参见图1,在这个无向图中有三个圈,分别为{}ca bc ab ,,,{}da cd ac ,,和{}da cd bc ab ,,,。
通过适当的操作,可以将两个圈合并成另外一个圈。
这个操作是环和操作,定义如下:令A 和B 是两个圈那么()()B A B A B A C ⋂-⋃=⊕=是一个圈。
对于上述情况的圈,令{}ca bc ab A ,,1= },,{2da cd ac A = },,,{3da cd bc ab A =可以很容易证明213A A A ⊕= 312A A A +=和321A A A +=这个例子说明了{}21,A A ,},{31A A 和},{32A A 都是图1中图的圈基,应为对于每个圈基用它可以生成图中所有的圈。
对于图1,最小的圈基是{}21,A A ,它有最小的权。
二、贪心法求最小圈基的算法思想(1)我们能够确定最小圈基的规模,用K 表示。
(2)假设能够找到所有的圈(在一个图中找到所有的圈决不简单,但是这与该问题不相关,不在此讨论)根据它们的圈将所有的圈排序成为一个非递减序列。
(3)从圈的有序序列中,一个一个地将圈加入到圈基中。
对于每一个加入的圈,检查它是否已存在于部分构成的圈基中的一些圈的线性组合。
如果是,那么删除这个圈。
(4)如果在圈基中有K 个圈,那么停止。
三、算法描述(1)输入图的顶点和边数,根据公式()11+-=--=V E V E K 求出最小圈基的规模(2)通过一个邻接矩阵输入图形(3)根据3个或3个以上的顶点可构成圈的思想,用组合算法找出n个顶点的所有组合(暂时不考虑位置),即可以构成圈的所有可能的顶点组合,再从找出的组合中再筛选出真正能构成圈的组合,对排好序的圈挨个放进圈基,如果圈是圈基的线性组合(即圈的所有边在圈基中都可以找到),那么就删掉这个圈,一直到圈基中圈的个数满足要求停止加圈。
最小圆覆盖

Adding a point
Question: Suppose we remembered not only Ci−1 , but also the two or three points defining it. It looks like if pi is outside Ci−1 , the new circle Ci is defined by pi and some points that defined Ci−1 . Why is this false?
Computational Geometry
Lecture 6: Smallest enclosing circles and more
Introduction Smallest enclosing circle algorithm Randomized incremental construction
Computational Geometry
Lecture 6: Smallest enclosing circles and more
Introduction Smallest enclosing circle algorithm Randomized incremental construction
Randomized incremental construction A more restricted problem A yet more restricted problem Efficiency analysis
Adding a point
Ci−1
Ci−1
pi pi
Computational Geometry
Facility location Properties of the smallest enclosing circle
ACM计算几何最小圆覆盖算法

平面上有n个点,给定n个点的坐标,试找一个半径最小的圆,将n 个点全部包围,点可以在圆上。
1. 在点集中任取3点A,B,C。
2. 作一个包含A,B,C三点的最小圆,圆周可能通过这3点,也可能只通过其中两点,但包含第3点.后一种情况圆周上的两点一定是位于圆的一条直径的两端。
3. 在点集中找出距离第2步所建圆圆心最远的D点,若D点已在圆内或圆周上,则该圆即为所求的圆,算法结束.则,执行第4步。
4. 在A,B,C,D中选3个点,使由它们生成的一个包含这4个点的圆为最小,这3 点成为新的A,B,C,返回执行第2步。
若在第4步生成的圆的圆周只通过A,B,C,D 中的两点,则圆周上的两点取成新的A和B,从另两点中任取一点作为新的C。
程序设计题解上的解题报告:对于一个给定的点集A,记MinCircle(A)为点集A的最小外接圆,显然,对于所有的点集情况A,MinCircle(A)都是存在且惟一的。
需要特别说明的是,当A为空集时,MinCircle(A)为空集,当A={a}时,MinCircle(A)圆心坐标为a,半径为0;显然,MinCircle(A)可以有A边界上最多三个点确定(当点集A中点的个数大于1时,有可能两个点确定了MinCircle(A)),也就是说存在着一个点集B,|B|<=3 且B包含与A,有MinCircle(B)=MinCircle(A).所以,如果a不属于B,则MinCircle(A-{a})=MinCircle(A)。
如果MinCircle(A-{a})不等于MinCircle(A),则a属于B。
所以我们可以从一个空集R开始,不断的把题目中给定的点集中的点加入R,同时维护R的外接圆最小,这样就可以得到解决该题的算法。
不断添加圆,维护最小圆。
如果添加的点i在圆内,不动,否则:问题转化为求1~I的最小圆:求出1与I的最小圆,并且扫描j=2~I-1,维护(1)+(i)+(2~j)的最小圆,如果找到J不在最小圆内,问题转化为:求(1~J)+(i)的最小圆。
一种求解平面图的最小顶点覆盖算法

计 算 机 系 统 应 用
一
种求解平面图的最小顶点覆盖算法①
谢 玉忠 林 宏 ( 桂林 电子科技大学 计算机 与控制 学院 广 西 桂林 5 1 0 ) 4 4 0
吴
摘
春
朱 国魂
要 : 最 小顶点覆盖 问题是 图论 中经典 的组合优化 问题 ,在 实际生活 中有着广泛的应 用价值 。根据最 小顶点 覆盖与最 大独立集在 图论 中事 实上是 属于等价 问题 这一特性 ,从 最大独 立集的 角度 出发 ,根据最大独 立集的特性 ,设计 了一种求解 简单平面 图的最大独立集算 法 ,从 而求出最小顶 点覆盖 。通过 实验 结果
Absr c : Th ii u v re o e r b e s a ca sc lp o e i c mbia o ilo tm iai n a d h s aw i e ta t e m nm m e x c v rp o lm i l s ia r blm n o t n t ra p i z to n a d r n eo au si e ll e Th r blm ftem i i m etx c v ra d t xm u d p n e ts ti a g fv l e r a i . ep o e o n mu v re o e n n f h hema i m i e e d n e n s
WU u , Ch n ZH U o Hu Xm — o , N n Gu — n, Yu Zhபைடு நூலகம்ng LI Ho g
(c o l f o ue dC nrlGul nv ri f l t nc n eh oo y Gul 4 0 4 C ia Sh o C mp t a o t , inU iesyo Eer i a dT cn l , in5 10 , hn ) o rn o i t co g i
最大圆覆盖二维点集合问题(一)

最大圆覆盖二维点集合问题(一)最大圆覆盖二维点集合问题及其相关问题问题描述最大圆覆盖二维点集合问题是指给定一个二维平面上的点集合,要求在这个点集合中找到一个圆,使得该圆包含尽可能多的点。
解决方法最大圆覆盖二维点集合问题可以通过以下方法求解: 1. 遍历所有可能的圆心和半径组合,计算每个圆能够覆盖的点数量,从中选取覆盖点最多的圆作为最大圆。
2. 使用分治法对点集合进行划分,递归地找到局部最大圆,并合并不同区域的最大圆。
相关问题1. 最小圆覆盖二维点集合问题最小圆覆盖二维点集合问题与最大圆覆盖问题相反,要求找到一个圆,使得该圆恰好覆盖所有的点,且半径最小。
2. 最近邻点对问题最近邻点对问题是指在一个点集合中,找到距离最近的两个点。
3. 最远点对问题最远点对问题是指在一个点集合中,找到距离最远的两个点。
4. 最小包围矩形问题最小包围矩形问题是指在一个点集合中,找到一个矩形,使得该矩形包含所有的点,且面积最小。
5. 最小凸包问题最小凸包问题是指在一个点集合中,找到一个凸多边形,使得该多边形包含所有的点,且面积最小。
6. 最大矩形覆盖问题最大矩形覆盖问题是指在一个点集合中,找到一个矩形,使得该矩形能够覆盖尽可能多的点。
7. 最大凸多边形覆盖问题最大凸多边形覆盖问题是指在一个点集合中,找到一个凸多边形,使得该多边形能够覆盖尽可能多的点。
8. 最大球覆盖问题最大球覆盖问题是指给定一个三维空间中的点集合,要求在这个点集合中找到一个球,使得该球包含尽可能多的点。
总结最大圆覆盖二维点集合问题是一个求解在二维平面上找到能够覆盖尽可能多点的圆的问题。
通过各种不同的问题变种,我们可以了解到几何中与点集合相关的一系列有趣问题。
这些问题不仅有理论意义,也在实际应用中有一定的价值。
最小包围圆课件资料

《C程序设计》课程设计报告(2014 —2015 学年第二学期)题目:最小包围圆问题学院:电气与电子工程学院班级:电气1309学号:***********名:***指导教师:***时间:起2015.4.27 止2015.4.30一、课程设计基本信息课程代码:05190124课程名称:计算机基础课程设计课程英文名称: Computer-based Course Design课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群课程面向专业:食品科学与工程学院、机械工程学院、电气与电子工程学院、土建学院、动物科学与营养工程学院、化学与环境工程学院、工商管理类、国际经济与贸易、旅游管理、金融学、行政管理、汉语言文学、英语、护理学、康复治疗专业、生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理课程类型:必修课先修课程:大学计算机基础通识选修课程、程序设计课程学分:1 总学时:1周二、课程设计目标掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。
通过综合设计要求达到下列基本技能:1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。
2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。
3.系统设计编程简练,可用,功能全面,并有一定的容错能力。
用户界面良好,有较好的输出功能。
在完成课题基本要求后,具有创新型设计,具有一定的实用价值。
4.根据个人的设计调试过程,撰写设计报告。
三、课程设计内容熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
改进Rosenbrock算法求包含平面多边形的最小圆

文 章 编 号 : 17 —0 52 1)1 0 5 —4 648 8 (020 — 0 3 0
改进 R snrc oebok算法 求包含平面 多边形 的最小圆
朱 平 ,欧 阳春 娟 一 , ,冷 明
5 86 ) 10 0
( .井 冈山大 学 电子 与信 息工 程学 院 ,江西 ,吉安 3 3 0 ;2 1 4 09 .深圳 大学信 息工 程 学院 ,广 东, 深 圳
第3 3卷 第 1 期 21 0 2年 1 月
Vo -3 l3 NO 1 .
J n. 2 2 a 01
井 冈 山大学 学报 ( 自然 科学 版)
Jun l f ig a gh nU iesy( trl cec ) o ra o n gn sa nv ri Na a S i e J t u n 5 3
( . l g f e t nc n n omainE gn eig Jn g n sa iv ri ,ia 4 0 9 C ia 1Col eo Elcr i s dIfr t n ie rn , ig a gh nUn est J’n3 3 0 , hn ; e o a o y
2 C lg fnoma o nier gS eze i rt, hnhn5 6 , hn) . ol e fr t nE gnei ,hnh n v sy Sez e 10 0C ia e oI i n Un e i 8
Ab t a t Th r b e o n i g t ma l s icet tc n a n i e l n l go o sfo t er s a c s r c : ep o l m ff d n hes le tcr l ha o t i sa g v n p a epo y n c me r m h e e r h i i l s o c i r wa e ma h ni g a o u e r ph s A t o p l n Ro e br c l rt m o f d fe d fm a h neha d r c i n nd c mp t rg a i c . me h d a p yig s n o k ago ih t n i t e s le t ic et a on an i e a o yg n i tf r r n t sp pe . rt e s le tc cepr bl m, h m l s r l h tc ti sa g v nplnep l o spu o wa d i h a r Fo h mal s i l o e a c i r t u c s r f i r e r h ng e te i tb s n o k ago ih de nd n t e c ie o e i iil he s c e s o a l e ofs a c u i x r me po n y Ro e br c l rt m pe s o h ho c ft n ta h
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
平面点集的最小包围圆算法设计及实现王立(P1016017)张涵初(P1016015)张超(P1016005)华北计算技术研究所一、问题背景欲在一平面区域内建立一个固定的无线信号收发中转基站,平面区域内有若干个固定的无线通信用户(可抽象为平面内一点)。
各无线通信用户之间若要实现互联通信,均需要无线通信用户先与中转基站建立无线链接,再通过中转基站链接区域内任一点。
那么这个无线信号中转基站应该选在哪里呢?根据直觉,应该选在中转基站射频作用距离范围的“中心”。
准确地讲,也就是包围这些点的那个最小圆的圆心——该位置的好处是,中转基站与它射频作用范围内的点实现通信时,射频发射机的发射功率即功耗达到最小化(无线射频通信中,作用距离越短,射频发射机功耗越小)。
于是可抽象出如下问题:给定由平面上n个点所组成的一个集合P(对应于中转基站射频作用范围覆盖的区域内的通信用户),试找出P的最小包围圆(smallest enclosing disc),即包含P中所有点并且半径最小的那个圆。
可以证明,这个最小包围圆有且仅有一个。
二、实验内容本实验主要完成了平面上随机点集P的生成和关于P的最小包围圆的计算。
在生成平面随机点集时,通过伪随机函数rand()函数实现了在平面矩形区域、平面圆形区域以及平面环形区域内的均匀随机分布。
在计算最小包围圆的过程中,使用并改进了一种比较高效的线性算法,在O(n)的时间内计算出了覆盖平面点集P的最小圆。
生成平面随机点集P时,我们将点的分布区域设置为平面矩形、圆形和扇形等,并将上述算法分别作用到不同分布区域的平面点集P,对比分析了其各自时间复杂度。
三、算法的理论描述在我们熟悉的二维平面的线性规划问题中,在目标函数和给定的初始边界条件共同确定出最优顶点P时,若引进一张半平面S1,顶点P落在S1所包围的区域内,则当前的最优点可以保存前一次所求出的最优顶点P而不必修改。
将此思路应用于最小外接圆算法:对于由平面点集P内的多个点p1,p2,……,p i(相当于i个初始边界条件)确定出一个最小包围圆C i,如果引入一张新的半平面S i+1,此半平面为以C i的圆心o i为圆心,以平面上不包含于P的一点p i+1与C i的圆心o i的距离|p i+1o i|为半径。
只要此前的最优解顶点(即唯一确定最小包围圆的几个关键顶点)能够包含于半平面S i+1中,则不必对此最优解进行修改,亦即此亦为新点集的最优解;否则,新的最优解顶点必然位于这个新的半空间的边界上。
其形式如图1所示:图1——若p i∈C i−1,则C i=C i−1,若p i+1∉C i,则C i+1更新上述性质为一几何引理,它构成了本文及本次实验的理论基石,本文所讲述的算法也将围绕该引理展开。
仿照线性规划的随机增量式算法,我们可以得到期望在线性时间内的完成的最小包围圆算法,将此算法命名为MCC算法(Minimum Circumscribed Circle)。
定义圆C i为相对于平面点集P的最小包围圆。
根据上述引理,可知当P中新引入一点p i时,若p i+1包含于圆C i内,则维护圆C i,作为此时P的最小包围圆,即C i+1=C i。
而此算法实现的关键在于对于p i+1∉C i时的处理。
显然,当p i+1∉C i,则需要对C i进行更新。
而且,圆C i+1必然经过p i+1。
因此,此种情况下的最小包围圆是过p i+1点且覆盖点集P={p1,p2,……,p i}的最小包围圆。
则仿照上述处理的思路,初始化圆C i的修改值,令其为圆C i‘,此圆通过点p1和p i+1,进而逐个扫描判断点集{p2,p3,……,p i}。
当p k∈C i’,则维护C i’不变,如果存在p k∉C i’,则再次修改圆C i’的值为圆C i“,此时圆C i“通过点p k,p i+1。
接着,再依次对点集{p1,p2,……,p i−1}进行逐个扫描,判断其是否满足p l∈C i”,若存在p l∉C i“,则C i”即由点p k, p l, p i+1三点确定。
由于三点唯一地确定一个圆,故而,只需在此基础上判断其他的点是否位于此包围圆内。
算法由两层递归调用,三层循环完成。
即首先不停地更新p l,当最内层循环完成时,退出循环,转而更新p k;当次内层循环结束时,退出循环,更新p i。
当i=n时,表明对所有的顶点均已处理过,此时的C n即为覆盖了给定平面上n个不同点的最小包围圆。
算法流程图如图2所示。
四、算法的实现根据前文算法的理论描述,设计出算法流程图如下:用伪代码描述如下:Function ini i (P)Input:由平面上n个点组成的一个集合P={p1,p2,……,p i} Output:P的最小包围圆1. 令D2为对应于{ p1,p2}的最小包围圆2. for i ← 3 to n3. do if p i ∈D i-14. then D i ← D i-15. else D i ← ini i i P in {{ p1,p2,p3……p i-1},p i}6. return D nFunction ini i i P in (P,q)Input:由平面上n个点构成的一个集合P,以及另外一个点qOutput:在满足“边界穿过q”的前提下,P的最小包围圆1. 令D1为对应于{ p1,q}的最小包围圆2. for j ← 2 to n3. do if p j ∈D j-14. then D j ← D j-15. else D j ← ini i i P in {{ p1,p2,p3……p j-1},p j,p i}6. return D nFunction ini i i P in (P,q1,q2)Input:由平面上n个点构成的一个集合P,以及另外两个点q1,q2Output:在满足“边界穿过q1,q2”的前提下,P的最小包围圆1. 令D0为对应于{ q1,q2}的最小包围圆2. for k ← 1 to n3. do if p k∈ D k-14. then D k ← D k-15. else D k ← q1,q2和p k确定的圆6. return D n在算法实现过程中,使用结构体m_circle维护动态维护当前最小包围圆C i,平面点集P={p1,p2,……,p i}则保存在点队列m_pointsArray中,其数据结构如图3所示。
CShape 类为基类,CGlPoint类和CGICircle类分别为其继承类,同时也是点对象和圆对象的数据结构。
多个点对象组成点队列,点队列用C++ STL中的V ector进行组织。
在程序中的表示分别为点队列m_pointsArray和圆对象m_circle。
图3——点队列和圆对象的数据结构示意图五、算法分析:1、时间复杂度分析前文已提及,平面上任意一组共n个点的最小包围圆,可以再O(n)的期望运行时间内计算出来,并且为此需要的空间在最坏的情况下不会超过线性规模。
现给出具体分析:函数 ini i i P in 中的每一轮迭代循环只需要常数时间,因此其运行时间为O(n);另外,它只需要线性空间。
同理,函数 ini i 和 ini i i P in 也只需要线性的空间。
故需要对 ini i 和 ini i i P in 的期望运行时间进一步分析。
对于函数 ini i i P in ,只要不计入其调用函数 ini i i P in 的时间,其余部分需要的时间为O(n)。
采用后向分析方法,假设平面点集P={p1,p2,……,p i}已固定,令C i+1为覆盖点集P、其边界穿过不包含于P的点p i+1的最小圆。
然后,删去P中某个点,分析在哪些情况下圆C i+1会发生变化。
经过分析可知,只有当删去落于圆上的三个点之中的一个,圆C i+1才会发生变化。
如图4所示:与p i+1共同确定C i+1的两个点图4——除去p i+1外,至多还有两个点的删除会导致最小包围圆缩小当圆上的点数超过三个时,即使删掉圆上的点,圆C i+1也不会发生改变。
如图所示。
又因为p i+1不属于P,故平面点集P中能使C i+1缩小的点最多有两个。
再正向分析,可知每新引入这两个点中的一个,当前维护的最小包围圆均会增大,每次增大都要调用一次函数 ini i i P in ,能够调用函数 ini i i P in 的概率为⁄,则函数 ini i i P in 的期望运行时间上界为:n∙⁄=O(n)O(n)+∑O( )i=2同理可以分析得到,函数 ini i 的期望运行时间也是O(n)。
故算法MCC的期望运行时间以O(n)为上界。
2、算法实现及效率分析算法程序的开发环境主要包括两个方面:硬件环境和软件环境。
本程序开发的硬件和软件环境如表3:表3——开发环境软硬件配置我们分别选取不同形状的分布区域进行随机点生成,计算出在圆形、矩形、环形等区域内随机分布点集的最小包围圆,并测试其计算时间,以验证其期望线性的时间复杂度。
测试结果见图5和表1。
5.1 圆形分布区域 5.2 矩形分布区域5.3环形分布区域图5—5000点随机均匀在不同区域时分布程序运行结果表1—不同分布区域下均匀随机分布点数生成最小包围圆所用时间(单位:ms)从表1中可以看出,对于不同的分布区域,算法效率略有不同,但各自基本服从线性递增的规律。
3、平面点集分布不同时算法的效率——对期望线性时间复杂度的验证对比由上文分析得知,算法MCC时间复杂度以O(n)为期望。
但是,根据直观判断,在上层函数中调用下层函数的次数愈少,算法的效率就越高。
前文给出的MCC算法复杂度分析是基于随机均匀分布。
而对于不同分布的平面点集,使用MCC算法将可能导致算法的时间复杂度不同。
验证如下:在生成平面均匀分布随机点集P时,我们使用VC中的伪随机函数rand()函数,产生两组零点周围的均匀随机分布的序列,分别作为P中的点的x,y坐标。
产生的矩形区域和圆形区域的点集分布如图6所示:图6—平面点集的随机均匀分布从图中可以看出,点在所在区域分布均匀。
由于高斯分布为连续性变量,不利于描述离散点的分布,我们考虑使用两个伪随机函数做差,即进行|rand()− rand()|运算,以生成两组随机序列,满足在0周围的密集化,在距离0较远的范围内稀疏化,将这两组序列作为一组点的x,y坐标,即可生成一种中间分布较密集,边缘分布较稀疏的类高斯分布的平面点集P′,其分布如图所示:图7—平面点集的类高斯随机分布表2—平面点集在不同分布形式下生成最小包围圆所用时间对比(单位:ms)从表2可以看出,均匀分布下,MCC算法运行效率较高,而对于中间密集、边沿稀疏的类高斯分布,其时间复杂度明显较高。
六、程序使用说明本程序用VS2008开发、编译、调试完成,程序界面友好美观,使用方便,实现了本次大作业选题的要求,算法时间复杂度较好,运算速度较快,程序吞吐量较大,可以在线性时间内计算百万个随机生成点的最小包围圆的计算,程序使用说明如下:1、随机点生成单击菜单选项“测试->生成随机点”,在弹出的对话框中填写随机点数量、随机点分布区域形状(包括矩形、圆形、环形)、分布区域的参数等,再单击“添加”按钮,即可完成随机点集生成。