基于区间树的高效计数方法技术

技术编号:15447615 阅读:43 留言:0更新日期:2017-05-29 21:41
本发明专利技术针对区间树提出了一种新的方法——插槽表示法,来高效的管理区间数据,并且提供了针对插槽表示法的区间树高效的计数算法,该表示方法使得点计数查询和区间计数查询时间复杂度分别为O(log n)和O(logn+logn·(q

Efficient counting method based on interval tree

According to the invention the interval tree presents a new method of slot representation management to interval data efficiently, and provide for the said slot counting algorithm of interval tree method is efficient, the method makes the point counting and counting interval query query time complexity are O (log n and O) (logn+logn - (Q

【技术实现步骤摘要】
基于区间树的高效计数方法一、
本专利技术是时空数据库领域,用于基于区间树的高效计数方法。二、
技术介绍
平行线段表示的区间数据已经广泛的应用在时空数据库中。在空间应用中,区间数据可以作为空间曲线的填充线段;在数据库系统中,区间数据可以作为事务有效时间的范围;在公司中,区间数据还可以保存工程时间记录。对于区间数据,经常需要进行计数查询。也就是说,对于一组区间数据和一个计数查询点或者一个计数查询区间,计数查询返回与该查询点或者该查询区间相交的区间个数。最基本的方法就是依次比较这个查询条件与区间数据集中的每一个元素,这种计数查询方法的时间复杂度为O(n);为了提高计数查询效率,提出了标准区间树索引,见图1。引入标准区间树索引后,区间数据的计数查询时间复杂度变为O(logn+k),其中k为符合条件的区间个数。这种方法的效率与返回的区间个数成正比,最坏的情况下,时间复杂度达到了O(logn+n)。本专利技术提出了一种新的方法来管理区间树并且提高区间树的计数查询效率。该专利技术使用插槽表示方法来管理区间树。该表示方法使得点计数查询和区间计数查询时间复杂度分别为O(logn)和O(logn+logn·(q2-q1)),空间复杂度都为O(m·n),其中m为区间的平均长度。三、
技术实现思路
【专利技术目的】由于目前区间数据使用越来越广泛,针对区间数据经常使用的计数查询,基本查询方法和基于标准区间树的计数查询的时间复杂度分别为O(n)和O(logn+k),时间效率都不能满足现在的严格的计数查询时间要求。所以本专利技术为了提高区间数据的计数查询时间效率,为区间树提供了一种新的存储表示方法——插槽表示法。基于区间树的插槽表示法使得区间数据的计数查询效率得到了显著的提高。【技术方案】本专利技术所述的基于区间树的高效计数方法通过提供一种新的存储方式——插槽表示法来管理区间数据,并且提供了基于该表示方法的点和区间计数查询的方法,提高了查询效率,使得查询时间复杂度分别达到了O(logn)和O(logn+logn·(q2-q1))。具体实施步骤如下:(1)插槽表示法给定一个区间[min,max】,其中min和max分别表示区间数据集中所有的区间最小值和最大值。然后将数据空间[min,max】划分为长度相等的小段,每一段的长度都为d,这些小段就是插槽。每一个插槽有一个单独的标识id,id的范围是从1到(max-min)/d。每一个插槽表示的范围可以通过本身的id和插槽长度d计算得到,即[min+(i-1)·d,min+i·d],i∈[1,(max-min)/d]。如图2所示,根据每一个区间在长度和范围的不同,每个区间选择相对应的插槽来表示。如图3所示,每个区间树节点都包含以下4个部分:1)中间点p,2)左,右孩子节点指针,3)区间的最大值max,最小值min和插槽长度d,4)用来表示区间和插槽之间关系的完整表full和部分表partial。(2)点计数该算法适用于返回区间树中与查询点相交的区间个数,即返回包含查询点的区间个数。根据结论:区间[x1,x2]包含查询点q当且仅当区间[x1,x2]中的插槽包含查询点q。点查询算法是从根节点开始自顶向下遍历区间树。对于每个节点,获取符合条件的区间分为两步:1)计算查询点所在的插槽标识id,2)使用第一步计算得到插槽标识id定位候选对象分别在full表和partial表中的位置。来自full表的区间元素显然不需要计算数据直接返回。对于partial表中的元素,需要一个线性的扫描精确地计算每一个区间元素。如果满足条件,计数增加1。接下来,比较该查询点和中心点来决定左孩子节点还是右孩子节点需要处理。(3)区间计数该算法适用于返回区间树中与查询区间相交的区间个数。查询区间表示为[q1,q2]。根据结论区间[x1,x2]与查询区间相交[q1,q2]当且仅当区间[x1,x2]中存在一个插槽与查询区间[q1,q2]相交。区间查询算法同样是从根节点开始自顶向下遍历区间树。区间查询获取符合条件的区间过程有3步:1)比较区间树节点的代表的区间和查询区间,如果存在相交,则获得一组插槽表示id,2)处理每一个插槽,根据full表和partial表返回结果,见算法4,3)然后判断节点中心点和查询区间的端点之间的关系,判断该访问孩子节点获取找到更多符合条件的区间。【有益效果】本专利技术所述基于区间树的高效计数方法通过对区间树采用插槽表示,使得计数查询的时间复杂度得到了很大的改善。根据结论:1)对于给定的n个区间,插槽表示法存储的空间复杂度为O(m·n),其中m为区间的平均长度;2)对于端点为整数的一组区间,点计数查询和区间计数查询的时间复杂度分别为O(logn)和O(logn+logn·(q2-q1))。本专利技术的插槽表示法计数查询主要困难在于能否找到合适的插槽长度d,使得部分表中没有元素,这样就可以使得查询效率最高。理论上来说,可以是每个端点乘以10i变为整数,则插槽长度d=1/10i。这样就部分表partial就不存在元素了。但是,如果d太小,那么根据结论区间树的存储空间就会非常大。所以插槽表示法需要找到一个合适的插槽长度d,使得空间复杂度和时间复杂度都能满足要求。下面通过实验来说明本专利技术的有效性。实验环境:CPU:Intel3.3GHz,内存:4GB,磁盘:500GB,操作系统:SuseLinux(Kernelversion2.6.34)。实验的算法分别为:基本方法(baselinemethod),标准区间树(IT-tree)和插槽表示(slotrepresentation)。编程语言为C/C++。实验的区间数据集在[1,1000]之间生成。每个区间的长度在[1,100]随机生成。数据集如表1所示,包含了数据集和磁盘尺寸。表1:数据集在实验中,使用CPU时间作为性能度量和超过100轮的平均实验结果。实验结果如图4所示,使用最大的数据集,本专利技术的方法用作点计数速度是其他方法的7倍。对于区间计数,如图7(b)和7(c)所示,实验结果表明本专利技术查询性能显著提高。四、附图说明图1标准区间树示意图图2区间树插槽表示示意图图3区间树节点组成示意图图4实验结果对比图图5点计数示意图图6区间计数示意图五、具体实施方式(1)插槽表示法;用一组连续的插槽来表示每一个区间,区间被表示为(i,[l,u]),其中i∈[1,(max-min)/d],表示插槽的标识id,[l,u](l,u∈[0,1]^l<u)表示区间与插槽相交的部分所占插槽的比例。图2展示了区间{j,a}的插槽表示法。其中图2(b)用插槽表来存储区间。每一行有一个插槽的标识id,元素位表示区间与该区间和插槽相交的大小。每一条记录保存插槽的id和区间占插槽的比例。另外还有一个标记位flag∈{full,partital},来表示一个插槽与区间完全还是部分相交。如果是flag的值是full,我们省去[l,u](即[0,1]),仅存储区间的id。如果flag的值为partial,[l,u]被用来表示相交部分的比例。对于给定的标识i,函数f(t)=d·(i-1)+t·d(t∈[0,1],i∈[1,(max-min)/d])将区间数据由插槽表示转换成原始的数据空间。如果标记为full,那么t∈[0,1],本文档来自技高网...
基于区间树的高效计数方法

【技术保护点】
基于区间树的高效计数方法的总体特征是通过提供一种新的区间表示方法——插槽表示法来管理区间,提供点查询和区间查询的计数算法,提高区间树的计数效率。本专利技术提供的计数算法,点计数查询和区间计数查询的时间复杂度分别为为O(log n)和O(logn+logn·(q

【技术特征摘要】
1.基于区间树的高效计数方法的总体特征是通过提供一种新的区间表示方法——插槽表示法来管理区间,提供点查询和区间查询的计数算法,提高区间树的计数效率。本发明提供的计数算法,点计数查询和区间计数查询的时间复杂度分别为为O(logn)和O(logn+logn·(q2-q1)),空间复杂度都为O(m·n),其中m为区间的平均长度。该方法提高了区间树的计数效率,其过程有以下三步构成:(1)插槽表示法:将所有的区间数据空间划分为长度相等的插槽,每个插槽都有唯一的标识,用插槽表示每个区间,构造一个新的区间树,(2)点计数:由(1)中得到的插槽表示的区间树作为被查询区间,返回与查询点相交的区间个数,时间复杂度为O(logn),(3)区间计数:由(1)中得到的插槽表示的区间树作为被查询区间,返回与查询区间相交的区间个数,时间复杂度为O(logn+logn·(q2-q1)),2.根据权利要求1所述的基于区间树的高效计数方法,其特征在于将整个数据空间划分为等长的小数据空间,即插槽。每一个插槽都有自己唯一的标识号,根据插槽的标识号和插槽长度可以确定该插槽所表示的数据空间范围。所以根据区间数据的长度和范围的不同,可以选择不同数量的插槽来表示区间数据。由插槽表示的区间构成一个新的区间树,区间树的每个节点有以下成分组成:1)节点所表示的区间范围中点;2)左右孩子节点指针;3)节点所表示的区间范围最大值和最小值;4)插槽长度5)完整表和部分表。其中完整表表示的是与插槽完全相交的区间,部分表表示的是与插槽部分相交的区间,除了区间,还需要存储区间于插槽相交的比例。3.根据权利要求2所述的基于区间树的高效计数方法,其特征在于...

【专利技术属性】
技术研发人员:王伟伟许建秋章益烔
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1