System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种区间数据集合中查找与给定区间数据相交的区间的方法及装置制造方法及图纸_技高网

一种区间数据集合中查找与给定区间数据相交的区间的方法及装置制造方法及图纸

技术编号:41820767 阅读:2 留言:0更新日期:2024-06-24 20:35
本申请提供了一种区间数据集合中查找与给定区间数据相交的区间的方法及装置,所述方法包括:利用所述区间链表的数据节点存储区间数据;当在区间数据集合中插入区间数据时,执行所述区间数据集合插入数据的方法;当在区间数据集合中删除区间数据时,执行所述区间数据集合删除数据的方法;当在区间数据集合中查找与给定区间数据相交的区间数据时,执行所述区间数据集合中查找区间数据的方法。本申请的优势在于:本申请采用的区间链表基于跳跃表实现,并对跳跃表进行了增强,通过维护额外信息,在运行时间复杂度不变的前提下,维护了区间数据,具有实现简单,查找速度快的优点。

【技术实现步骤摘要】

本申请属于计算机数据结构与算法领域,具体涉及一种区间数据集合中查找与给定区间数据相交的区间的方法及装置


技术介绍

1、区间数据可以很方便地表示占用一段连续时间片段的事件。我们通常将相关的多个区间数据放在一起进行管理,成为区间数据集合。在很多场景中,我们需要查询在给定时间段内发生了哪些事件,或者判断是否存在区间相交的事件的情况,下面是一些与区间数据集合相关的常见的应用场景:

2、日程安排管理:在日程管理系统中,可以使用区间来表示用户的日程安排。每个日程可以表示为一个时间区间,如何快速查询某个时间点是否与已有的日程发生重叠,以避免时间冲突。

3、碰撞检测:在计算机图形学和游戏开发中,碰撞检测是一个重要的问题。将物体的边界框(boundingbox)表示为区间,如何高效地找出与某个物体相交的所有其他物体,从而进行碰撞检测。

4、时间冲突检测:在会议管理系统或者航班调度系统中,每个会议或航班可以表示为一个时间区间,如何检测是否存在时间上的重叠,以避免会议或航班的冲突。当货船在海上行驶时,需要提前向目的港口申请进港卸货时间,港口同时会有多艘货船进行卸货,为货船安排未来某段时间在某个卸货口进行卸货需要梳理未来一段时间的港口卸货时间安排,如何能快捷准确的判断货船申请的时间段是否能够安排合适的卸货口是港口进行工作调度的关键难点,也是一个复杂的技术问题。

5、路径规划(机器人技术):在机器人技术中,路径规划是一个关键的问题。在路径规划中,将障碍物的边界表示为区间,如何确定机器人的路径与障碍物之间的相交情况,从而避免碰撞。

6、动画碰撞检测(计算机图形学):在计算机图形学中,动画碰撞检测是用于模拟和控制动画对象之间的碰撞情况。在动画碰撞检测中,将动画对象的边界表示为区间,如何确定哪些动画对象之间存在碰撞,从而实现更加逼真的动画效果。

7、任务调度:在任务调度系统中,可以使用区间来表示任务的执行时间段,如何判断任务之间是否会发生重叠或者冲突。

8、以上应用场景均是与区间相交查询有关的问题。在现有技术中,通常利用一定的数据结构来存储区间数据集合,使用计算机程序对数据结构进行处理,以实现快速的查询事件、判断重叠事件等。

9、现有的区间数据集合的维护方法主要有:

10、使用线段树:线段树是一种二叉树数据结构,可以有效地支持区间数据查询操作,比如查询某个区间的最大值、最小值等。但是线段树通常用于静态区间数据的维护,对于经常需要变化的数据的维护时操作复杂、效率较低。

11、使用平衡树:平衡树(如红黑树、avl树等)也可以用于区间数据集合的维护。通过在树节点中存储区间数据,可以实现区间数据的插入、删除和查询等操作。但是平衡树通常实现复杂,维护成本高。


技术实现思路

1、本申请的目的在于克服现有区间数据集合维护方法实现复杂、效率低、维护成本高的缺陷。

2、为了实现上述目的,本申请提出了一种区间数据集合的维护方法,基于区间链表实现;

3、所述区间链表为基于跳跃表的数据结构;

4、所述方法包括:

5、利用所述区间链表的数据节点存储区间数据;

6、所述区间数据包括低端点、高端点;所述低端点为该区间数据的左端点;所述高端点为该区间数据的右端点;数据节点按区间的低端点排序,如果低端点相同,则按高端点排序。

7、所述区间链表的索引节点中包含:指向数据节点的指针、指向下一层索引节点的指针、指向同一层右侧索引节点的指针,以及max属性;

8、所述max属性,为该索引节点与左侧索引节点之间的所有区间数据中高端点的最大值;所述所有区间数据不包含左侧索引节点的数据节点,包含当前索引节点的数据节点。

9、本申请还提供一种区间数据集合插入数据的方法,基于上述的区间数据集合的维护方法实现,包括:

10、步骤a1:从头索引节点开始沿着索引链表遍历,找到底层数据链表中新节点的插入位置并插入数据节点,维护相关索引节点的max属性;

11、步骤a2:根据随机概率条件为新插入的数据节点创建索引节点,设置新索引节点的max属性。

12、作为上述方法的一种改进,所述维护相关索引节点的max属性,包括:

13、在每一层索引链表中,对于首个不小于新插入区间数据的索引节点a,如果新插入区间数据的高端点大于索引节点a的max属性,则更新a的max属性为新插入区间数据的高端点,否则不进行更新。

14、作为上述方法的一种改进,所述设置新索引节点的max属性包括:

15、第一种情况:当新插入的索引节点没有导致索引层级增加时,新索引节点的max属性为从左索引节点到新索引节点之间的区间数据中高端点的最大值;其中,所述从左索引节点到新索引节点之间的区间数据,不包括左索引节点的区间数据,包括新索引节点的区间数据;

16、如果新索引节点的max属性不小于右索引节点的max属性,右索引节点的max属性更新为从新索引节点到右索引节点之间的区间数据中高端点的最大值;其中,所述从新索引节点到右索引节点之间的区间数据,不包括新索引节点的区间数据,包括右索引节点的区间数据;

17、第二种情况:当新插入的索引节点导致索引层级增加时,新的索引层级中,新索引节点的max属性为在底层数据链表中的从第一个区间数据到新插入区间数据的所有区间数据中高端点的最大值。其他层级的max属性更新策略与第一种情况相同。

18、本申请还提供一种区间数据集合删除数据的方法,基于上述的区间数据集合插入数据的方法实现,包括:

19、步骤b1:从区间链表中删除节点;从头索引节点开始沿着索引链表进行遍历,在底层数据链表中找到要删除的区间数据并进行删除,更新遍历过程中遇到的每个不小于被删除区间数据的索引节点的max属性;

20、步骤b2:更新索引列表;如果被删除节点有索引节点,在每一层级中,如果被删除的索引节点的max属性不小于其右索引节点的max属性,则重新计算右索引节点的max属性。

21、作为上述方法的一种改进,所述更新遇到的每个不小于被删除区间数据的索引节点的max属性,包括:

22、如果被删除的区间数据的高端点的值等于该索引节点的max属性值,则重新计算该索引节点的max属性值。

23、本申请还提供一种区间数据集合中查找与给定区间数据相交的区间的方法,基于上述区间数据集合删除数据的方法实现,包括:

24、通过获取可能包含给定区间数据的数据链表的范围方法,得到区间数据链表中可能包含给定区间数据x的范围,该范围的左侧数据节点为b,右侧数据节点为e;

25、取左侧数据节点b的右数据节点b.next为当前数据节点n,如果n为空则返回空,否则判断x与n的区间数据是否相交,如果相交,则返回n的区间数据n.value,否则将n的右侧数据节点n.next作为新的本文档来自技高网...

【技术保护点】

1.一种区间数据集合的维护方法,基于区间链表实现;

2.一种区间数据集合插入数据的方法,基于权利要求1所述的区间数据集合的维护方法实现,包括:

3.根据权利要求2所述的区间数据集合插入数据的方法,其特征在于,所述维护相关索引节点的max属性,包括:

4.根据权利要求2所述的区间数据集合插入数据的方法,其特征在于,所述设置新索引节点的max属性包括:

5.一种区间数据集合删除数据的方法,基于权利要求2所述的区间数据集合插入数据的方法实现,包括:

6.根据权利要求5所述的区间数据集合删除数据的方法,其特征在于,所述更新遇到的每个不小于被删除区间数据的索引节点的max属性,包括:

7.一种区间数据集合中查找与给定区间数据相交的区间的方法,基于权利要求5所述的区间数据集合删除数据的方法实现,其特征在于,包括:

8.根据权利要求7所述的区间数据集合中查找与给定区间数据相交的区间的方法,其特征在于,所述判断x与n的区间数据是否相交,包括:

9.根据权利要求7所述的区间数据集合中查找与给定区间数据相交的区间的方法,其特征在于,所述获取可能包含给定区间数据的数据链表的范围方法,包括:

10.一种区间数据集合中查找与给定区间数据相交的区间的装置,基于权利要求7-9任一所述区间数据集合中查找与给定区间数据相交的区间的方法实现,其特征在于,所述装置包括:

...

【技术特征摘要】

1.一种区间数据集合的维护方法,基于区间链表实现;

2.一种区间数据集合插入数据的方法,基于权利要求1所述的区间数据集合的维护方法实现,包括:

3.根据权利要求2所述的区间数据集合插入数据的方法,其特征在于,所述维护相关索引节点的max属性,包括:

4.根据权利要求2所述的区间数据集合插入数据的方法,其特征在于,所述设置新索引节点的max属性包括:

5.一种区间数据集合删除数据的方法,基于权利要求2所述的区间数据集合插入数据的方法实现,包括:

6.根据权利要求5所述的区间数据集合删除数据的方法,其特征在于,所述更新遇到的每个不小于被删除区间数据的索引节点的max属...

【专利技术属性】
技术研发人员:杨艳林栗垚何彦君刘鲁京陈浩然王佳张妍李汶晓张秀婷
申请(专利权)人:国家电投集团数字科技有限公司
类型:发明
国别省市:

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

1