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

随机增量算法.docVIP

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

随机增量算法 解轶伦 【摘要】 随机增量算法是计算几何中一个重要的算法,它对理论知识要求不高,编程复杂度低,而应用范围却十分广大。本文通过两个经典例题,详细阐述了本人一步一步理解随机增量算法的过程,最后是本人对随机增量算法的总结以及思考过程中的感悟。 【关键字】 增量算法 随机化 计算几何 【目录】 摘要 1 关键字 1 目录 1 引言 2 正文 2 例一 监视摄像机 2 问题描述 2 问题分析 3 算法描述 5 复杂度分析 5 例二 最小外接圆 6 问题描述 6 算法一 6 算法二 6 算法三 7 总结 7 参考文献 7 附录 7 【引言】 增量法(Incremental Algorithm)的思想与第一数学归纳法类似,它的本质是将一个问题化为规模刚好小一层的子问题。解决子问题后加入当前的对象。写成递归式是: 增量法形式简洁,可以应用于许多几何题目中。 增量法往往结合随机化,以避免最坏情况的出现。 【正文】 例一 监视摄像机一个著名的仓库管理公司*ERKOI请你的公司为其安装一套闭路监视系统。由于 SERKOI财力有限,每个房间只能安装一台摄像机作监视用,不过它的镜头可以向任意方向旋转。 首要的问题是确定摄像机的位置以确保房间的每一个角落都能被它监视到。例如,图一和图二是某两个房间的示意图,每个房间用一个封闭的多边形表示,图中的每条边表示一面墙。对于图一所示的房间,我们将摄像机安置在标黑点的位置就能满足要求;而对于图二所示的房间,无论将摄像机安置在那里都无法使其满足要求。 写一个程序,对于给定的房间示意图,判断是否有可能在这个房间中的某一位置安置一台摄像机,使其能监视到这个房间的任何一个角落。 输入 输入文件包含一个或多个房间示意图的描述信息。每个描述信息的第一行是一一个正整数n(4<=n<=100),表示该房间的示意图为一个n边形。以下n行每行包括用空格符隔开的两个整数x,y,按顺时针方向依次为这个n边形的n个顶点在直角坐标系中的的横纵坐标,x,y,的范围在:-1000至1000之间。若n等于0则表示输入文件结束。 输出 对于每个房间,首先输出一行该房间的编号信息“Room #k:”,k按照输入次序从1开始计数。紧接着一行是判断结果,如果摄像机在房间中某处安置能满足条件,输出: “surveillance is possible。”,否则输出“surveillance is impossible。”?每两个房间的输出结果之间用一个空行隔开。读完题目给人的第一印象是求半平面相交,由于题目按顺时针方向给出顶点,所以我们可以用向量来表示半平面: 如图,如果点P在边ViVi+1内侧,那么从ViVi+1转到ViP为顺时针,所以它们的叉积小于等于0,于是我们可以很容易地得到每个半平面的代数形式。 但如果直接做半平面这令人感觉杀鸡用牛刀,因为问题只要求判断是否存在可行区域,并不要求具体解的情况,因此我们应该考虑更简单的方法。 另一个直观的想法是,枚举网格上的点,看能否满足不等式组,但这显然不会是一个有效算法。上面的算法看上去“很笨”,但是会让我们产生一种改进的冲动。枚举网格上的点太盲目,完全没有利用已知条件。再来仔细分析一下问题,半平面相交最后得到的一定是个凸多边形,而我们就是要找到一个点,这个点属于这个凸多边形,那么我们可不可以加强一下命题,只考虑一些特殊的点呢?显然,凸多边形的顶点就是一类很特殊的点,它们拥有内部点所有的性质,不同之处在于,它们必是两条线的交点。那么我们可以求出所有交点,再逐个判断。 如果就此打住,我们可以得到一个的算法,足以将1998年国家队选拔的这道题解决了,但你看到这篇文章时,起码2009年已经过了一半,倘若此题重现江湖,你难道指望它还像上个世纪时那么弱小吗?新世纪,强算法,我们还得继续思考。 我们求出了所有的交点,之后逐一判断,这是不是很浪费呢? 如下图,显然A和D已经被排除了,只有BC之间的区域是有效的,也就是说交点中只有B和C是有效的。于是我们很自然地想到,每条直线,最终都只有2个交点是有效的,那么我们最终只需要判断2n个点是否满足不等式组。 到这里我们已经得到了一个的算法了,似乎已经很优了,但实际上仍有更优的算法。我们一直是处理完所有直线后再判断,如果我们每处理完一条直线就判断呢?假设前k条直线的交点中有一个点P满足前k个不等式,那么考虑第k+1条线时,先看点P在不在第k+1个半平面上。如果在,那么P就是满足前k+1个不等式的点,如果不在,那么无非两种情况。 图A中,第k+1条线与前k条线交点中,必有满足前k+1个不等式的点。 图B显然是无解的情况,此时第k+1条线必被前k条线截空。 如果按照这个思路写出程序,似乎比刚才的更优了,因为这已

文档评论(0)

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

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

1亿VIP精品文档

相关文档