ImageVerifierCode 换一换
格式:PPT , 页数:19 ,大小:306.50KB ,
资源ID:1155955      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1155955.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第8章-数论算法及计算几何算法.ppt)为本站会员(天天快乐)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第8章-数论算法及计算几何算法.ppt

1、第八章 数论算法及计算几何算法,8.5 凸包问题,1、问题提出给定一个点集SP0,P1,Pn-1,它的凸包是一个最小的凸多边形P,且满足S中的每个点或者在P的边界上或者在P的内部。 如果点集S是两个点的集合,显然它的凸包是连接这两个点的线段;如果S是由三个不共线的点组成的集合,那么凸包是以这三个点为顶点的三角形;如果三点共线,则凸包是以距离最远的两个点为端点的线段。对于更大的集合,在直观上,可以把S中的每个点看作订在地上的木桩,那么凸包就是将所有木桩围起来的一个拉紧的橡皮绳的形状,如图8-1所示。,解决方法: 1、穷举搜索法 2、分治法,1、算法思想 : 根据凸多边形的定义,对于一个由n个点组

2、成的集合S中的任意两个点Pi和Pj,当且仅当该集合中的其它点要么位于穿过Pi和Pj直线的同侧,要么位于线段PiPj上。则线段PiPj是该集合凸多边形边界的一部分。对每一个点都做一遍检验之后,满足条件的线段就构成了该凸包的边界。,8.5.1凸包问题的穷举搜索法,2、算法求解步骤 :步骤1:对于集合中的任意两点Pi和Pj ,定义穿过两点Pi和Pj的直线方程 。 (x-xi) / (xj-xi) =(y-yi) / (yj-yi)步骤2:将点集S中的其余点代入直线方程,然后检查是否位于线段同侧,如果不是,说明线段PiPj不是点集S的凸多边形的边界。 否则,PiPj是凸多边形的边界。步骤3:对点集中的

3、每个点,重复上述步骤1和步骤2,直到找出全部多边形的边界。,3、算法程序语言描述 详见课本4、算法分析 点集中的点构成的线段数目最多为n(n-1)/2,对每一条线段,最坏情况要检查点集中其余n-2个点属于哪个半平面, 故算法的时间复杂性为O(n3),8.5.2凸包问题的分治法1、算法思想 将点集S中的点按照x坐标升序排序,x坐标相同的按照y坐标升序排序,排好序的序列存放在点结构数组P中。 那么最左边的点P0、最右边的点Pn-1肯定是凸包上的点。 线段P0Pn-1将集合S中的点分成两个集合S1和S2。,子集S1的凸包由线段P0Pn-1作为下边界、多节链条作为上边界组成。这条上边界称为上包。子集S

4、2的凸包由线段P0Pn-1作为上边界、多节链条作为下边界组成。这条下边界称为下包。整个集合的凸包由上包和下包构成。如图8-2所示。,2、算法求解步骤 构造上包步骤:找到子集S1中的点Pmax,它是距离线段P0Pn-1最远的点 连接 ,找出S1中位于直线 左边的点,这些点构成集合S11;找出S1中位于直线 左边的点,这些点构成集合S12;P0PmaxPn-1内部的点不予考虑。递归构造S11和S12的上包,然后简单地将它们连接起来,得到S1的上包。 构造下包步骤:找到子集S2中的点Pmin,它是距离线段P0Pn-1最远的点 连接 ,找出S2中位于直线 右边的点,这些点构成集合S21;找出S2中位于

5、直线 右边的点,这些点构成集合S22;P0PminPn-1内部的点不予考虑递归构造S21和S22的下包,然后简单地将它们连接起来,得到S2的下包 。,3、 算法程序语言描述 详见课本,8.6最接近点对问题,1、问题提出最接近点对问题要求给定平面上n个点组成的集合S,找出其中n个点组成的点对中距离最近的一对点 。该问题具有很大的实际应用价值,例如,一个控制空中或者海上交通的系统就需要了解2个最近的交通工具,以预测可能产生的相撞事故。2、解决问题方法 穷举搜索、分治法(略),8.6.1最接近点对问题的穷举搜索法1、算法思想 分别计算点集中每一对点的距离Dij,从中找出值最小的那对点。 为了避免点对

6、的重复计算,算法只考虑ij的情况.2、算法描述Double shortdis( )double temp=,d=0; for(int i=0; in-1;i+ ) for(int j=i+1; jn,j+ ) d=sqrt( (pow( pi.x-pj.x) , 2)+pow(pi.y-pj.y),2 ); if(dtempt) tempt=d; p1=pi; p2=pj; ,3、算法分析从算法描述可知循环体内的时间是常数时间,循环次数 , 因此算法的时间复杂性为O(n2) 。,8.6.2最接近点对问题的分治法1、算法思想 将所给平面上的n个点的集合S分成规模大致相等的两个子集S1和S2。递归

7、求解S1和S2中的最接近点对; 集合S中的最接近点对: 或者是子问题S1的解; 或者是子问题S2的解, 或者是一个点在S1中,一个点在S2中的情况组成的最接近点对。,一维情形下最小点对:算法描述:Step1:用xm将x1,x2,xn分成两部分S1和S2 Step2:递归求S1中最接近点对,其距离为d1;Step3:递归求S2中最接近点对,其距离为d2;Step4:求S1中的最大值p,S2中的最小值q;Step5:计算d3=|p-q|;Step6:比较d1,d2,d3确定哪个是最接近点对。算法分析解此递归方程可得T(n)=O(nlogn)。,二维情形算法描述:Step1:选取一垂直线l:x=xm

8、作为分割线。其中xm为S中各点x坐标的中位数。由此将S分割为S1和S2Step2:递归求S1中最接近点对,其距离为d1Step3:递归求S2中最接近点对,其距离为d2Step4:令d=min(d1,d2)Step5:找出S1中的某个点p和S2中的某个点q组成的点对(p,q) (难点)Step6:比较|p-q|,d1,d2确定哪个是最接近点对思考:如何找出点对(p,q) ?如果|p-q|小于d,则p点分布在P1带形区域内(左虚线和分割线l所夹的区域),q点分布在P2带形区域内(右虚线和分割线l所夹的区域)。如图8-5所示,对于P1中任意一点p,与它距离小于d的点分布在以p点为圆心,以d为半径的圆内。因此,与点p构成最接近点对的P2中的点一定落在一个d2d的矩形R中。如图8-6所示。,由d的意义可知,矩形R中任何两个S中的点的距离都大于等于d。由此可知,至少可以将d2d的矩形R分割成如图8-7所示的六部分,其中任何一部分包含P2中的点最多有一个 因此,在矩形R中最多只有6个P2中的点与p构成最接近点对,思考:针对P1中的任意一点p,检查P2中的哪6个点,从而可以找出最接近点对呢 ?可以将p和P2中所有点到垂直线l上。由于能与p点一起构成最接近点对候选者的P2中的点一定在矩形R中,所以它们在直线l上的投影点与p在l上的投影点的距离小于d 算法分析(nlogn),

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报