(最小园覆盖.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(最小园覆盖

最小园覆盖向文艺(QQ:499580660)最近在考虑从n个数中选m个数的组合中,找最少的组合,使之包含所有的m-1组合的问题。实质上就是最小覆盖问题,搜搜网上,发现网上有许多关于最小圆覆盖的讨论和算法,做法见仁见智,但没找到直观且完整的文章。于是自己整理一篇,望有兴趣的同志多多指教。一、相关知识1.一般性覆盖问题A、B是集合,若A?B,则称B是A的一个覆盖。若B是A的一个覆盖,且A的任意一个覆盖C,都有B?C,则称C是A的最小覆盖。显然,对于一般的集合,自己就是自己的最小覆盖,这样研究最小覆盖没有意义。通常情况,会对覆盖集B做一定的限制,则A的最小覆盖就未必是自身了。我们讨论的是欧氏平面上的点集和圆的位置关系,所有的讨论限制在欧氏平面(下面简称平面)上。2.圆覆盖是平面上一个点集,Or是平面上一个圆(圆心是点O,半径是r).若A上任意一点A,都有A到O的距离|OA|≤r,就称Or是A的一个单圆覆盖。直观含义就是上所有点都落在圆Or中(在上或在内)。Or是的一个单圆覆盖,若任意单圆覆盖O’r’都有r≤r’,则称Or是的最小单圆覆盖。最小单圆覆盖未必在其他圆覆盖内部,这是与其他点集覆盖的最小覆盖不同之处。为了简便我们略去单字,下面的 (最小)圆覆盖就是指(最小)单圆覆盖。对于任意点集的最小圆覆盖是否存在的问题有些复杂,考虑到计算的运算的有限性,我们只讨论有限点集的最小圆覆盖问题。提出下面的命题:命题:有限点列的最小圆覆盖存在且唯一。若称单点集为半径为0的圆,单点集的最小圆覆盖就是自身。由欧氏几何的性质可知,以一条线段为直径的圆是唯一的,三角形的外接圆是唯一的。于是有以下引理:引理1 平面上任意相异两点的最小覆盖圆是以这两点所成的线段为直径的圆。引理2 两点在圆中则两点所成的线段也在圆中。引理3 钝角(或直角)三角形的最小覆盖圆是以该三角形最长边为直径的圆。引理4 锐角三角形的最小覆盖圆是该三角形的外接圆。定理1 如果凸多边形的顶点都在圆中,则整个多边形都在圆中。(由引理2和凸多边形定义很容易证明)。引理4由下图直观证明定理2 有限点集存在最小覆盖圆,且该圆是点集中某三点的最小覆盖圆。 由引理3,4可知:“某三点的最小覆盖圆”可以更细化为:或者是以其中2点为直径,或者是成锐角三角形的三点的外接圆。证明:首先,如果存在三点,使得它们的最小覆盖圆覆盖了全部点,则显然该最小覆盖圆就是全体的最小覆盖圆。其次,来证明有限点集,必能找到一个圆使得点集中①有两点为直径的两端,或者②有三点在圆上,且三点构成锐角三角形。因为是有限集,所以中所有的两点之间的距离必有最大的,设该两点为C、C’, CC’的中点为O’, O’到中其它各点的距离必有最大值r’,设该点为A。若r’ ≤|CB|/2,则以CB为直径的圆即是①。否则以O’为圆心r’为半径的圆覆盖了,而且除A点以外其它各点都在圆O’r’内。进行一下步骤:设B’是中不是A的另一点,则B’在圆O’r’内,O’B’的中垂线必交O’A于线段内部,所有这些交点中必有离O’最近的,把O’移动到该点,并把对应的B’点记为B,则以新O’点为圆心O’A为半径的圆覆盖了,且A、B都在圆上。此时AB不可能是圆的直径,否则和起初所找的CC’是最大边且不能覆盖矛盾。令r’=|O’A|,得到新圆。如果有3点(以上)在圆上,则判断这些在圆上的点是否能组成锐角三角形,若是则找到②。否则用圆上最长的弦的两端替换AB。则其它点在都在AB小弧的一侧,且有点在大弧一侧的内部。。剩余点都在圆内部,让圆心沿着的中垂线朝移动,直到大弧一侧出现第三点停止。整个过程都在圆中。跳到。中大弧一侧的内点必有和构成的角为锐角的,否则以为直径的圆就能覆盖,又与原来选择的最大边矛盾。所以过程经过有限次必定终止。综上,定理得证。二、具体操作算法给定点集计算最小覆盖圆由定理可知,穷举所有的三点组合必能找到的最小覆盖圆。穷举法看起来傻傻的,确是很有效的算法。不想用穷举法的话,可以根据定理的证明过程,步步逼近求的。穷举法问题在于当点的数量相当大的时候,运算量递增很快。但是通过以上的定理,我们可以剔除大部分不必要计算:由定理,可以先求的点集的凸多边形,去除所有内部点和边上的点。首先计算以最大边为直径的圆是否是最小圆覆盖,如果是问题解决。如果不是,由定理可知,最小覆盖圆必是由构成锐角三角形的三点决定的,而且直径不能小于最大边。这样在穷举的过程中免去许多圆心到点的距离运算。已有点集的最小覆盖圆,新增点时的计算扩张此时如果重新穷举所有三点组合,必然和原来计算重复,显然不妥。需要更加节约的算法:判断新增点是否在原覆盖圆内,如果是,就不必计算了。如果否,则可以证明:新点必在新最小覆盖圆上。于是可以更新凸多边形。判断新点到其它点的最大距离是否是所有距离中最大的,如果是是否构成直径的

文档评论(0)

saity3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档