网站大量收购独家精品文档,联系QQ:2885784924

计算几何中的二分思想.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算几何中的二分思想【摘要】本文简要阐述了计算几何中的二分思想,并通过例题对其进行应用,体现二分在计算几何中简洁高效的优势。【关键字】计算几何二分【引言】二分思想,古已有之,邵子曰:“一分为二,二分为四,四分为八也。”正是根据这样的思想,我们的祖先创造了太极八卦。在当今的信息时代中,这一古老的智慧依旧闪耀着光芒,通过渗透到各门新兴学科中发扬光大,计算几何学就是其中之一。在此基础上,产生了无数经典算法,例如用分治法求解最近点对、凸包、三角剖分和空间分区二叉树。在近年来的各类信息学竞赛中,不断涌现了大批关于计算几何的试题,其中许多复杂的题目可以利用二分思想得到简单解决。掌握了这一思想,无疑是多了一把解决相关问题的利器。【例题解析】下面,就让我们通过几个例题,一起探究二分思想的应用。例题一、Simplified GSM Network ( 2005 ACM/ICPC World Finals )题意:已知B(1≤B≤50)个信号站和C(1≤C≤50)座城市的坐标,坐标的绝对值不大于1000,每个城市使用最近的信号站。给定R(1≤R≤250)条连接城市线路的描述和Q(1≤Q≤10)个查询,求相应两城市间通信时最少需要转换信号站的次数。分析:显然,题目要求的是最短路,关键在于线路权值的计算。题目中告诉我们:每个城市使用最近的信号站,也就是说,该城市所处位置位于平面中离这一信号站最近的点的轨迹内,而离各点最近点的轨迹就是Voronoi图。因此,每条路线的权值就是这条线段所穿过的Voronoi边的数量。由上可看出,题目即为求Voronoi图与最短路的简单组合,只需分别解决。通过以上的分析,我们发现了一种最直接的办法:先求Voronoi图,再求最短路。此法时间效率也足以通过测试,可是求Voronoi图的编程复杂度很高、调试麻烦,在真实的竞赛环境中实用性不强。有没有更好一点的解法呢?考虑一条线段l,如果l两端点所属的信号站相同,显然l的权值为零,否则将l从中点(红点)分为两部分(分割点不在Voronoi边上)l1和l2,l所对应的权值自然就等于l1和l2的权值之和。然后,对l1和l2进行同样的操作。由于不可能无限的分割下去,当两端点的距离小于某个设定的小正常数?(实验证明??∈[10-10,10-5]均能AC),并且与两端点所属信号站不同(蓝点),两点之间就一定存在一条Voronoi边与线段相交,该段权值为一。利用上述办法,可以在不作Voronoi图的情况下,简单地求出各边的权值,避免了冗长的代码;之后使用Floyd或Dijkstra等最短路算法,问题即可完整解决。小结:计算几何有许多诸如Voronoi图的经典模型,在方便思考的同时,也会让我们陷入固有的思维定势,难以自拔。当原有的模型不能方便地解决问题时,就需要另辟蹊径,跳出传统思维来考虑问题。在本例中,通过二分思想,将一条线段分为两半,利用分治法解出问题,使题目化繁为简,易于编程,避开了求作Voronoi图的套路。例题二、Collecting Luggage ( 2007 ACM/ICPC World Finals )题意:已知一简单N(3≤N≤100)边形的各顶点坐标,行李箱从第一个顶点以速度Vl沿多边形边界移动,人从点(px,py)出发,速度为Vp(0VlVp≤10000,单位为米每分),所有坐标均为绝对值不大于10000的整数(单位为米),求人最快取得行李的时间(精确到秒)。分析:乍一看,题目似乎与最短路有密切的联系,然而目标点随时间在改变,可以在多边形边界上的任何一点,所求是一个动态过程。要计算到达一个顶点所需的时间,是个很简单的问题,但是怎样抵达最后的目的地呢?这正是题目的难点所在。首先,考虑简单情形:人站在原始位置,行李在一条直线上移动,初始时位于(x0,y0)处,以速度Vl=(a,b)移动。人在t时刻取得行李,此时行李坐标为(at+x0,bt+y0),可得如下关系:利用以上公式,可以求出任意一组点到直线的动态最短距离,对于题目中的线段,只需附加目的点在线段上这一条件就能求解。得到了距离公式,问题似乎已经大部分被解决,可是当我们把它搬到多边形中时,却发现问题并不是我们想象中的那么简单:如图所示,点不一定能够沿直线到达边,也不一定就能沿直线到达可达边的全部。这样一来,还必须求出可达范围,并且枚举人和行李移动至各点各边的情况,问题的复杂性大大增加。怎样才能简化复杂的过程?其实,关键之处在于“化动为静”,把题目中的动态过程转化为静态。假设人“暂停”,行李先经过t时间运动到一点,如果行李静止在边上,只需再建立一个顶点,把边拆成两段,则可以很轻松地求出最短距离,人再花t时间行走,看能否取得行李,即比较求得的距离与人行距离的大小。这样的做法,可以知道人是否可以在规定时间内完成动作,但一秒一秒

文档评论(0)

管理学科 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档