前提---所用到的重要数据结构:最优查找树。
问题描述: 已知区间集合的区间查询,设已知区间的集合D和—个查询区间 I , 要求列举出D中所有与 I 相交叠的区间。
算法思想:
利用优先查找树作已知区间集合D的区间查询,是令D中每个区间[a,b]对应于平面上的一个点(b,a),因为 a < b, 故所有的点都在下半个第一象限(45度斜线以下)。
若给定的查询区间为:I=[x,y]。则凡与I交叠的区间I应满足: a <= y, b>=x ,故平面上相应的点应在域[x,∞]×[0,y]之内.如下图所示(a)的例子中,对应平面上点集的查询问题如图(b)所示。
因查询区间 I=[4,6],借助于优先查找树可确定在平面上域[x,∞]×[0,y]中的点为I2,I4和I5。 这说明D中的I2,I4,I5这3个区间与I相交叠。次查询过程时间复杂性为O(log(n) + k),其中k为列举出的区间数。
来源:《现代工程学与应用》