平面最接近点对算法

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:chrisl0708
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:描述了平面最接近点对问题,针对这一问题给出了3种算法,循环遍历算法、分治算法和平面扫描算法,并详细分析了3种算法的时间复杂度。
  关键词:平面最接近点对;循环遍历算法;分治算法;平面扫描算法
  中图法分类号:TP391文献标识码:A文章编号:1009-3044(2007)15-30828-01
  Algorithms for Finding the Closest Pair of Points
  WU Zhong-bo
  (Department of Electrical and Information Engineering, Xiangfan University, Xiangfan 441053, China)
  Abstract: In this paper we describe the problem of finding the closet pairs of points in the plane and we use three algorithms to solve this problem including na?ve algorithm, divide and conquer algorithm and plane sweep algorithm. At last we analyze the efficiency of these algorithms.
  Key words: closest Pair of Points; divide-and-conquer algorithm; circulation Algorithm; plane sweep algorithm
  
  1 引言
  
  在计算机应用中,常用点、圆等简单的几何对象表达现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其领域中其他几何对象的信息。最接近点对问题常用于空中交通的计算机自动控制系统中,也是计算机几何学研究的基本问题之一。
  该问题可以描述为:设S是平面上n个点的集合(n>=2),对于S中的每一个点p∈S,都有2个坐标值p(x)和p(y),找出其中的一对点,使得在n个点组成的所有点对中,该点对间的距离最小。
  
  2 算法描述
  
  2.1 循环遍历算法
  循环遍历算法是最简单的解决办法,算法思想如下:依次计算两个节点之间的距离,然后进行比较,从中选择出具有最短距离的点对即可。
  首先对于n个点有n*(n-1)个点对,所以依次计算两个节点之间距离的时间复杂度为O(n2);然后需要将n*(n-1)个点对扫描一遍以选择出最短距离的点对,时间复杂度也为O(n2)。所以,循环遍历算法的时间复杂度为O(n2)。
  2.2分治算法
  用分治算法求S中最接近点对的基本思想是:选取一垂直线L∶x = m作为分割直线,将S的点分割为点数大致相同的2个子集S1和S2,使得:
  S1={p∈S | p(x)≤m},S2={p∈S | p(x)>m}
  其中:m是S中各点x坐标的中位数,因此S1和S2中点数大致相同,且S=S1∪S2。递归地在S1和S2上解最接近点对的问题,分别得到S1和S2中的最小距离d1和d2,并设d=min{d1,d2}。用P1和P2分别表示在直线L左边和右边与其距离在d范围的点构成的两个垂直长条平面区域。
  P1:{p∈P1 | (|m-x(p)|≤d)},P2:{p∈ P2 | (|x(p)-m|≤d)}
  S中的最接近点对的距离或者是d,或者是某个{p,q}点对的距离,其中p∈P1,q∈P2。如果{p,q}是S中的最接近点对,则必有distance(p,q)  将上述描述简化如下:
  图1 分治算法
  (1)递归用L将节点集分成两个相等的部分;
  (2)设d是d1和d2的最小值;
  (3)删除离L超过d的节点;
  (4)按照y维扫描剩下的节点,计算5个邻居的距离;
  (5)如果距离小于d,更新d
  下面我们分析分治算法的时间复杂度,由于步骤2-5是每个递归过程中都要去做的,我们先分析2-5。步骤2时间复杂度为O(1);步骤3时间复杂度为O(n);步骤4时间复杂度为O(1);步骤5时间复杂度为O(1),所以步骤2-5的时间复杂度为O(n)。步骤1递归地将平面S中的点分成两个相等的部分时间复杂度为O(logn),所以总的时间复杂度为O(n)* O(logn)=O(nlogn)。
  2.3 平面扫描算法
  平面扫描算法如图2所示,用一根垂直的线从左扫到右。在扫描的过程中,需要维护遇到的最近的节点对以及它们之间的距离d;还需要维护一个区域D,D是一个矩形,右边界由下一个扫描到的点p确定,宽为已经扫描的点中的最近点对的距离。每次遇到下一个点p,我们就执行以下操作:
  (1)将在x轴上离p的距离超过d的节点从D中删除掉;
  (2)确定p左边离p最近的点q;
  (3)如果q点和p之间的距离小于d,更新最近的节点对和d;
  下面我们分析平面算法的时间复杂度。首先对所有点按x坐标排序,时间复杂度为O(nlogn);其次在D中插入删除点,每次插入的时间复杂度为O(logn),因为共有n个点,所以时间复杂度为O(nlogn);然后比较p点的常数个邻居,时间复杂度为O(n)。所以平面扫描算法的时间复杂度为O(nlogn)。
  
  3 结束语
  
  本文描述了平面最接近点对问题,针对这一问题给出了3种算法,分别是循环遍历算法、分治算法和平面扫描算法,其中循环遍历算法的时间复杂度为O(n2),分治算法和平面扫描算法的时间复杂度都为O(nlogn)。
  
  参考文献:
  [1]林志庆,范庆. 平面最接近点对问题的改进算法[J]. 福州大学学报, 1999,12: 19-23.
  [2]Bentely J L, Shamos M I. Divide and conquer in multidimensional space [A]. Proc 8th ACM Annual Symp on Theory of Computer [C], 1976: 220-230.
  [3]王晓东. 算法设计与分析[M]. 北京:清华大学出版社, 2002.
其他文献
手持式检波器测试仪选取超低功耗的16位单片机MSP430为主控MCU,选择μC/OS-Ⅱ作为系统地实时操作系统,采用低功耗的智能处理策略,实现多任务处理、超长待机,便于野外长时间作
本文考虑带旋转的人脸检测方法,提出了一种基于颜色空间以及模板匹配的快速人脸定位方法。首先从常用的颜色空间中选择出对光照因素稳健的肤色子空间,然后基于该子空间进行肤色检测方法得到人脸大致区域,最后采用模板匹配的方法确定人脸区域。实验结果表明,该方法速度快,对于带角度旋转的人脸定位有很好的效果。
出访归来话开放访中共河北省委常委、常务副省长丛福奎本刊记者夏明芳今年3月份应韩国大韩贸易振兴公社汉拿集团和日本国日中经济协会的邀请由中共河北省委常委常务副
出口贸易应重视环保包装尹晓波一、淡化包装顺历史潮流而生随着全球工业化进程的加快,世界各国的包装废弃物迅速增加,对环境造成的威胁与日俱增,处理包装废物已成为一大难题。据
基于问题的学习教学法是先提出问题,根据实际情况,提供一切应对的资源和指导的教学法。PBL教学模式在世界医学教育发展中正形成就种趋势,本文对计算机技术在实施PBL教学法过程中
弘扬公而忘私、患难与共、百折不挠、勇往直前的抗震精神,把新唐山建设得更繁荣、更美好。今年7月28日,唐山大地展已经过去整整20年了.在纪念唐山抗震救灾20周年的前夕
积极探索搞活国有小企业之路□李随生近年来,河北省涉县采取多种形式,积极探索放开搞活国有小企业之路,收到显著效果。1995年,全县国有小型企业实现利税4560万元,比上年增长21%,亏损额179万元,比上
存量分解:推动国有现代企业快捷入轨442000湖北省十堰市市委党校张锐建立现代企业制度意味着国有企业的微观经济活动将完全脱离传统轨道的规制,但凭藉何种方式才能将国有企业迅速推入现代企业改造的轨道,却是一个值得审慎思考的问题。笔者认为,对国有企业进行资...
本文介绍了数据挖掘技术在入侵检测领域的应用,介绍了数据挖掘的常用算法,并在此基础上给出了一个基于数据挖掘的入侵检测模型。
谈社会主义市场经济的八大特色杨圣明一、公有制基础上的市场经济市场经济与公有制是否兼容?有两种截然相反的回答。传统的社会义理论是不兼容论,认为二者互相排斥。当代,不论在