Computational Geometry.docx
- 文档编号:11389636
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:15
- 大小:154.23KB
Computational Geometry.docx
《Computational Geometry.docx》由会员分享,可在线阅读,更多相关《Computational Geometry.docx(15页珍藏版)》请在冰豆网上搜索。
ComputationalGeometry
计算几何论文
正交区域查询数据结构研究
李彤
指导教师:
刘宇
院系:
机电系
专业名称:
精密仪器及机械
学号:
199********902
答辩时间:
12月30日
2013年12月29日
目录
正交区域查询数据结构研究2
1正交区域查询背景介绍2
2区域查询的常用数据结构2
2.1Quader-tree2
2.2B-tree结构4
3跳跃表结构5
4K维确定性跳跃表区域查询结构6
5K-dRDSL的构造算法9
参考文献11
正交区域查询数据结构研究
1正交区域查询背景介绍
1975年,Shamos用计算机有效地计算平面的Voronoi图,并发表了一篇著名论文,从此计算几何诞生了。
自那时以来该研究领域取得了辉煌的成果,使得计算几何成为理论计算机科学领域中一个新的极有生命力的子领域,计算几何中的研究成果已在计算机图形学、化学、统计分析、模式识别、地理数据库以及其他许多领域中得到了广泛的应用。
区域查询问题是计算几何的核心问题之一。
正交区域查询又是区域查询问题中最重要的问题之一,有许多学者致力于研究它,并取得了丰富的研究成果。
在解决正交区域查询问题方面,人们采用的第一种数据结构是由Finkel和Bentley[1]于1974年提出的四叉树(quadtree)。
不幸的是,四叉树在最坏情况下的性能相当差。
Bentley[2]于1975年提出的kd-树(kdimensionaltree),是对四叉树的改进。
Samet[3,4]在其专著中,对四叉树、kd-树及其应用做过详细的论述。
数年后Bentley[5]于1979年,Lee和Wong[6]于1980年,Lueker[7]于1978年,Willard[8]于1979年分别独立的提出了区域树,而借助于分散层叠技术将查询时间改进至O(logn+k)的方法,这是由Lueker[7]和Willard[9]提出的。
分散层叠不仅可以用于区域树,实际上在很多需要根据同一关键码进行多次查找的场合,都同样适用。
Chazelle和Guibas[10,11]对这一技术做了透彻的介绍。
分散层叠还可以应用于动态设置[12]。
Chazelle[13]提出了一种修改后的层次化区域树,这是解决二维区域查询问题很有效的数据结构。
他成功地将存储空间降至Ο(nlogn/loglogn),同时保持了Ο(logn+k)的查询时间。
Chazelle还指出如果待查询区域在某一侧是无界的(例如形为[x,x′]×[y,+∞]),那么借助于一棵优先查找树(priorityearchtree),只需线性空间,就能够实现Ο(logn)的查询时间。
对于更高维的情况,Chazelle[14]同样提出了一种结构,使用Ο(n(logn/loglogn)d−1)的存储空间,就可以在对数多项式的查询时间(polylogarithmicquerytime)内回答一次d维查询。
Overmars[15]提出了一种解决区域查找问题的更加有效的数据结构:
如果所有点的位置都限制在U×U的网格上,那么查询时间将是O(loglogU+k)或者O(
+k),具体是哪一结果,取决于允许的预处理时间。
2区域查询的常用数据结构
正交区域查询问题——这种最为重要、使用最为广泛、研究最为深刻、最为基础的查询类型的经典数据索引结构有k-d树、区域树、高维区域树、分散层叠等,它们的构建思想和实现算法在《ComputationalGeometryAlgorithmsandApplications(ThirdEdition)》一书中已经作了描述说明,在此对四叉树及B-树作补充说明。
2.1Quader-tree
图2-1四叉树中某个节点及其四个孩子
Fig.2.1Nodeandthefourchildrenofquadtree
如图2-1所示,所谓四叉树是一棵有根的树,其中每个内部节点都有四个孩子。
在四叉树中,每个节点对应于一个正方形。
如果节点v有孩子,那么这些孩子就分别对应于v所对应正方形的四个象限。
这种结构正是因此而得名。
也就是说所有叶子对应的正方形合在一起,就形成了对根节点所对应正方形的一个子区域划分,称作四叉树划分(quadtreesubdivision)。
图2-2给出了一棵四叉树及与之对应的子区域划分。
根节点的四个孩子,分别标记为NE、NW、SW和SE,借此表示他们各自对应的象限,NE表示东北象限,NW表示西北象限等。
图2-2四叉树及其对应的子区域划分
Fig.2-2Quadtreeandquadtreesubdivision
借助于四叉树,可以存储不同类型的数据。
下面介绍其中的一种——平面上的一组点。
对于这种数据,只要某个正方形中包含的点多于一个,就要递归地对其进行分割,因此对于一个正方形σ中给定的一组点P,可以定义一棵四叉树如下:
设σ=[xσ,xσ’]×[yσ,yσ’],若card(P)≤1,则四叉树由唯一的一片叶子组成,其中存放了点集P以及正方形σ。
否则,分别设σNE、σNW、σSW、σSE为σ的四个象限。
令xmid=(xσ+xσ’)/2,ymid=(yσ+yσ’)/2,并定义
PNE={p∈P|px>xmid且py>ymid},
PNW={p∈P|px≤xmid且py>ymid},
PSW={p∈P|px≤xmid且py≤ymid},
PSE={p∈P|px>xmid且py≤ymid}。
如图2-1所示,这样一棵四叉树的根节点v中存放了σ。
那么,我们将存放于v处的正方形记为σ(v)。
此外,v有四个孩子:
NE——集合PNE(即落在正方形σNE中各点)对应的四叉树,以它为根节点;
NW——集合PNW(即落在正方形σNW中各点)对应的四叉树,以它为根节点;
SW——集合PSW(即落在正方形σSW中各点)对应的四叉树,以它为根节点;
SE——集合PSE(即落在正方形σSE中各点)对应的四叉树,以它为根节点;
定义中有对“小于或等于”以及“大于”的选择,根据这种选择,每条垂直分割线都属于左侧的两个象限,而每条水平分割线都属于下方的两个象限。
2.2B-tree结构
当查找的文件较大,且存放在磁盘等直接存取设备中时,为了减少查找过程中对磁盘的读写次数,提高查找效率,基于直接存取设备的读写操作以“页”为单位的特征,1972年R.Bayer和E.M.McCreight提出了一种称之为B-树的多路平衡查找树。
它适合在磁盘等直接存取设备上组织动态的查找表。
图2-3B树的父母节点
Fig.2-3ParentnodeofB-tree
一棵m(m≥3)阶的B-树是满足如下性质的m叉树:
1.每个结点至少包含下列数据域:
(j,po,k1,p1,k2,…,ki,pi),其中:
j为关键字总数,ki(1≤i≤j)是关键字,关键字序列递增有序:
k1 pi(1≤i≤j)是孩子指针,如图2-3所示。 对于叶结点,每个pi为空指针。 实用中为节省空间,叶结点中可省去指针域Pi,但必须在每个结点中增加一个标志域leaf,其值为真时表示叶结点,否则为内部结点。 在每个内部结点中,假设用keys(pi)表示子树pi中的所有关键字,则有: keys(p0) 2.所有叶子是在同一层上,叶子的层数为树的高度h。 3.每个非根结点中所包含的关键字个数j满足: (m/2)−1≤j≤m−1,即每个非根结点至少应有(m/2)−1个关键字,至多有m−1个关键字。 因为每个内部结点的度数正好是关键字总数加1,故每个非根的内部结点至少有(m/2)子树,至多有m棵子树。 4.若树非空,则根至少有1个关键字。 故若根不是叶子,则它至少有2棵子树。 根至多有m−1个关键字,故至多有m棵子树。 图2-4四阶B-树 Fig.2-4FourorderB-tree 在大多数系统中,B-树上的算法执行时间主要由读、写磁盘的次数来决定,每次读写尽可能多的信息可提高算法的执行速度。 B-树中的结点的规模一般是一个磁盘页,而结点中所包含的关键字及其孩子的数目取决于磁盘页的大小。 如图2-4为一棵四阶B-树。 3跳跃表结构 跳跃表(skiplist)是WilliamPugh在1989年提出的代替平衡树的一种数据结构。 当随机输入数据点时,二叉查询树是高效的——查找、插入、删除节点的复杂度为Ο(logn);当顺序输入数据点时,这些操作的复杂度达到了Ο(n)。 跳跃表则对于任意的数据集都达到了二叉查询树在随机情况下的复杂度——即Ο(logn)。 在一般的有序链表中,链表必须从头节点开始到要查找的某一点逐个的进行判断,这样使得查询效率非常的低。 其查找、插入、删除节点的复杂度达到了Ο(n)。 如果可以在扫描过程中跳过一些节点的话,将降低查询耗费。 这正是跳跃表的基本思想。 简单地说,它与一般的有序链表有以下两点不同: (1)在一般有序链表中每个节点只有一个向前指针,而跳跃表中的节点可以有多个向前指针,如图3-1所示; (2)某个给定节点的向前指针数是随机确定的。 跳跃表的节点是分层的,每一层有一个向前指针。 某个节点的层数就定义为这个节点的高度。 图3-1随机跳跃表 Fig.3-1Probabilisticskiplist 跳跃表不确定性是指应在跳跃表的哪些结点增加附加指针(即向前指针)以及在该结点处应增加多少指针完全采用随机化方法来确定。 这使得跳跃表可在O(logn)平均时间内支持关于有序集的搜索、插入和删除等运算。 因此跳跃表中的节点随机的指定了高度。 高度为h的节点包含了h个向前指针(向前的链)p1,p2,…,ph。 pi链接到高度为i的或更大的下一个节点。 一个节点具有高度h的概率为0.5h。 因此我们期望值处理一些向前链直到下降一层;由于大约logn,因此每次操作花费logn的运行时间。 为了这个界成为最坏情况的界,需要保证只有常数个向前链需要考察直到下降到更低的一层。 为此需要添加一个平衡条件。 首先给出两个定义: 定义1如果至少存在一个链从一个元素指向另一个元素,称两个元素为链接。 定义2两个在高度为h链接的元素间的间隙容量(gapsize)等于它们之间高度为h-1的元素的个数。 1-3确定性跳跃表满足性质: 每一间隙的容量不超过3,如图3-2所示。 图3-21-3确定性跳跃表 Fig.3-21-3deterministicskiplist 4K维确定性跳跃表区域查询结构 K维确定性跳跃表(k-drangedeterministicskiplist),记为k-dRDSL。 该结构是利用确定性跳跃表(deterministicskiplist)嵌入到高维空间得到的。 它继承了B-树和跳跃表的特性,是一种高效的动态查询结构。 图4-1一个k-dRDSL节点 Fig.4-1Anodeinthek-drangeDSL 定义3k-dRDSL如图4-1所示,是具有以下特点的结构: (1)每个节点N包含一个数据点P: 若P是叶节点(p1,p2…,pn),则P为数据点。 若P不是叶节点,则P是一个事先定义的值作为监视哨(s.v.)。 (2)每个节点包含两个值: m=当前节点的下子树中pi的最小值;M=当前节点的下子树中pi的最大值。 (3)每个节点包含三个指针: 下指针downptr,右指针rightptr,指向下一个RDSL的指针nextdimptr。 其中前两种指针的意义同1-3DSL结构中的一样,nextdimptr则指向当前节点的下子树中以pi+1的值排列的一个RDSL结构。 (4)头节点head,尾节点tail,底端节点bottom和最后维节点lastdim被用来指示结构开始后或结束的状态。 前面三个节点的定义同1-3DSL结构中的一样,lastdim节点用来报告查询有没有到达最后一层或叶节点。 (5)所有的数据点只能出现在叶子层。 (6)跳跃表是按照第i维关键字的值排序的,i是当前所要构建或查找的关键字所在空间位置。 (7)每个间隙容量不超过3。 若满足以上条件则定义了一个k-dRDSL。 表4-1二维点集的例子 Table4-1Example2-dpointset 数据点 p1 p2 哈尔滨 -73 42 长春 0 52 沈阳 14 41 天津 -123 48 北京 140 37 上海 150 -34 石家庄 31 -30 郑州 -9 -39 许昌 104 2 如图4-2,4-3,4-4,4-5,4-6为表4-1所对应的RDSL结构。 图4-2表4-1中数据的二维确定性跳跃表的第一维结构 Fig.4-2TheDSLstructureindimension1(orderedonp1)forthe2-dRangeDSLofthedatainTable4-1 图4-3表4-1中数据的二维确定性跳跃表的第一维结构中“A”的二维子索引 Fig.4-3TheDSLstructure"A"indimension2(orderedonp2)forthe2-drangeDSLofthedatainTable4-1 图4-4表4-1中数据的二维确定性跳跃表结构中“B”的二维子索引 Fig.4-4TheDSLstructures"B"(ordere2)forthe2-drangeDSLofthedatainTable4-1 图4-5表4-1中数据的二维确定性跳跃表的第一维结构中“C”的二维子索引 Fig.4-5TheDSLstructures"C"(ordere2)forthe2-drangeDSLofthedatainTable4-1 图4-6表4-1中数据的二维确定性跳跃表的第一维结构中“D”的二维子索引 Fig.4-6TheDSLstructure"D"indimension2(orderedonp2)forthe2-drangeDSLofthedatainTable4-1 5K-dRDSL的构造算法 构造一个k-dRDSL结构即从空表开始,顺序地插入节点,每次只插入一个节点。 下面我们给出了一种构造算法: 算法1初始化k-dRDSL InitializeEmpty(kdRDSLT) Step1M[head[T]]←maxkey;m[head[T]]←minkey; Step2datapoint[head[T]]←s.v; Step3nextdim[head[T]]←lastdim; Step4down[head[T]]←bottom; Step5right[head[T]]←tail; Step6m[tail[T]]←maxkey;M[tail[T]]←maxkey; Step7datapoint[tail[T]]←(maxkey...maxkey); Step8nextdim[tail[T]]←lastdim; Step9down[tail[T]]←tail; Step10right[tail[T]]←tail; Step11m[bottom[T]]←minkey;M[bottom[T]]←minkey; Step12datapoint[bottom[T]]←(minkey...minkey); Step13nextdim[bottom[T]]←lastdim; Step14down[bottom[T]]←bottom; Step15right[bottom[T]]←bottom; Step16m[lastdim[T]]←minkey;M[lastdim[T]]←maxkey; Step17datapoint[lastdim[T]]←s.v.; Step18nextdim[lastdim[T]]←lastdim; Step19down[lastdim[T]]←lastdim; Step20right[lastdim[T]]←lastdim; 算法2构建k-dRDSL BuildingRDSL(kdRDSLT) Step1InitializeEmptyRDSL(T); Step2GetDataPoints() Step3foreachdatapointdo Step4ifnotMember(datapoint,T)then Step5Insert(datapoint,T); 参考文献 [1]FINKELRA,BENTLEYL.Quadtree: ADataStructureforRetrievalonCompositeKeys[J].ActaInform.,1974,4 (1): 1-9. [2]BENTLEYJL.MultidimensionalBinarySearchTreesUsedforAssociativeSearching[J].ACM,1975,18(9): 509-517. [3]SAMETH.ApplicationofSpatialDataStructures: ComputerGraphics,ImageProcessingandGIS[M].Addison-Wesley,MA,1990: 21-41. [4]SAMETH.TheDesignandAnalysisofSpatialDataStructures[M].Addison-Wesley,MA,1990: 146-162. [5]BENTLEYJL.DecomposableSearchingProblems[J].Inform.Process.Lett.1979,8: 244-251. [6]LEEDT,WONGCK.QuintaryTrees: AFileStructureforMultidimensionalDatabaseSystems[J].ACM.Trans.DatabaseSyst.,1980,5: 339-353. [7]LUECKERGS.ADataStructureforOrthogonalRangeQueries[C].InProc.19thAnnu.IEEESympos.Found.Comput.Sci.,1978: 28-34. [8]WILLARDDE.TheSuper-b-treeAlgorithm[R].Combridge: AikenComput.Lab.,HarvardUniv.,1979. [9]WILLARDDE.Predicate-orientedDatabaseSearchAlgorithms[R].Combridge: AikenComput.Lab.,HarvardUniv.,1978. [10]CHAZELLEB,GUIBASLJ.FractionalDascading: ADataStructuringTechnique[J].Algorithmica,1986,1: 133-162. [11]CHAZELLEB,GUIBASLJ.FractionalCascading: II.Applications[J].Algorithmica,1986,1: 163-191. [12]LEVEND,SHARIRM.PlanningaPurelyTranslationalMotionforaConvexObjectinTwo-dimensionalSpaceUsingGeneralizedVoronoiDiagrams[J].DiscreteComput.Geom.,1987,2: 9-31. [13]CHAZLLEB.FilteringSearch: ANewApproachtoQuery-answering[J].SIAMComput.,1986,15: 703-724. [14]CHAZLLEB.LowerBoundsforOrthogonalRangeSearching,I: TheReportingCase[J].ACM,1990,37: 200-212. [15]OVERMARSMH.EfficientDataStructuresforRangeSearchingonGrid[J].Algorithms,1988,9: 254-275.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Computational Geometry