一种面向社交活动组织的时间聚合查询方法_3

文档序号:9631598阅读:来源:国知局
的结果示意图。
[0077] 图5表示根据SB* -Tree获得的所有时间区间的参与人数和参与人员信息。
[0078]图6为满足活动最小持续时间的临时时间区间信息。
[0079]图7为满足活动最小持续时间的最终时间区间信息。
[0080] 具体实施方法
[0081] 下面结合附图,进一步说明本发明。
[0082]接下来我们结合附图1-7,,以一个例子来说明方法的具体实施方法。
[0083] 假设有一群人将要进行一次毕业旅行,旅行计划持续9天。图2表示所有参加人员 的空闲时间,时间粒度为1天,每个人员的freetime为一个区间,表示距离当前时间的天 数,其中ID是每个参与人员的唯一标识。例如如图可知Amy将在10天后的30天内有空, 能够参加旅行。为了更加直观地表示,图3将他们的空闲时间表示在时间坐标轴上。
[0084] 图4表示了根据所有参与人员的空闲时间信息建立SB* -Tree的过程。假设树的 b= 4, 1 = 4,然后从第一条记录开始,逐条进行插入。首先插入〈Amy, [10, 40) >,由于原来 树是空的,所以直接插入即可。此时树只有一个根节点N,共有3个时间区间,分别为N.I1 = (-% 10),N. 12= [10, 40),N. 13= [40, +①),它们对应的参与人数和参与人员分别为: 11¥1=0,¥.81=而11,11¥2=1,1182={1},11¥ 3=0,¥.83=111111,如图4.2所不。接着 插入〈Ben, [10, 30)>,结果如图4. 3。接着插入〈Cal, [20, 40)>后,会导致根节点N的溢出, 此时需要进行节点的分裂,将N分裂成&和N2。其中&包括前2个时间点10, 20,所以包括 了区间(-°°,10),[10, 20),[20, 30)的信息;N2包括时间点 40,即包括了了 [30, 40),[40, + °°)的信息。由于N为根节点,所以要创建一个新的根节点f中包含时间点30,然 后指向&和1^,结果如图4.4所示。接着插入〈0&11,[5,15)>,从根节点进入,与(-00,30) 相交,所以进入K节点。因为Ni为叶子节点,所以将信息添加到Ni,这样会导致&节点溢 出,然后将&分裂成化和化,并将时间点15添加到Ν'中,Ν'重新指向焉,和%,结果如 图4. 5所示。接着插入〈Eve, [35, 45)>,根据插入的规则添加到队节点中去,结果如图4. 6 所示。最后插入〈Fay,[10, 50) >,首先[10, 50)与根节点第一个区间Ν' .11= (-00, 15) 相交,所以进入节点乂,。而I是叶子节点,所以直接将信息添加到%。然后根节点第二个 区间^.12=[15,30)完全包含于[10,50),所以直接将信息更新在^^2和".8 2即 可,无需进入到%。根节点第二个区间Ν' . 13= [30, +。)又与[10, 50)相交,所以进入 N2。因为N2是叶子节点,所以将信息添加到1中。添加后会导致、溢出,所以要执行分裂 操作,将N2分裂成瑪:1和W22*并将时间点45添加到Ν'中,Ν'重新指向兄,和仏2中去,结果 如图4. 7所示。至此,整棵SB* -Tree构造完成。
[0085] 图5表示根据SB* -Tree获得所有时间区间的参与人数和参与人员信息。首先从 根节点Ν'出发,进入iN/^中。因为为叶子节点,进行时间区间信息读取。时间区间 按3. 2. 1提到的定义方法得到,麗=?.? +瑪:1.巧:,#似负U1^.%。将 和_1:节点中的区间全部读取完后返回Ν',进入以崎2中……以此类推,直到根节点Ν'的所 有子树遍历完成。图中的interval表示时间区间,count为能够在该时间区间参加活动的 人数,ID_Set为能够在该时间区间参加活动的人员的标识ID的集合。
[0086]图6表示根据图5计算满足活动最小持续时间的临时时间区间信息。因为最 初计划活动的持续时间duration为9天,所以为了找出能够满足活动持续时间的最优 时间区间,我们需要利用图5的结果,计算新的时间区间信息。首先根据图5可知,共 有8个时间区间,我们分别记为Ip12,……,18。从最小区间L开始从小到大遍历,判 断当前区间1的大小是否满足活动持续时间duration,如果满足,则将Ii的信息保存 下来作为新的时间区间信息;如果区间L的大小不满足活动持续时间duration,那么将 工占接下来k个区间合并,令=Gυ/?+1U…υ//+λ.直到Ii满足活动持续时间,同时 'inewJI>_Set=心JD_Sein0+lJi3_Sein…n 将心"ew 的信息保存下来。令i=i+Ι,判断 下一个区间,直到所有区间判断完成。
[0087] 由图6可以看到,[10, 20)和[15, 30)区间的信息完全相同,可以将它们合并。所 以根据图6得到的结果,进行最终调整,将相邻的、区间信息相同的时间区间进行合并。最 终的结果如图7所示。最后对图7的结果进行快速排序,即可求得活动组织的最优时间,同 时也能根据用户需要够返回topK的最优方案。
【主权项】
1. 一种面向社交活动组织的时间聚合查询方法,包括下列步骤: 步骤1.建立索引结构SB*-Tree 针对SB-Tree进行拓展,建立SB*_Tree树形数据结构;SB*_Tree与SB-Tree不同的是:SB*-Tree中每个时间区间N.L增加了其对应的参与人员ID的集合N.s1;SB*-Tree树包含 一个最大分支因子b和最大叶子容量1 ;SB*-Tree的中间节点最大能够包括b个时间区间, 叶子节点最多能够包括1个时间区间,它们共同决定了SB*_Tree的布局;关于SB*_Tree的 结构的详细描述如下: 首先,表1列举了结构中使用的符号,如下所示:表1符号歹瞭 1. 1中间节点: 每个中间节点有三层结构,分别为N.N.Vl、N.Sl,另外还有一个指向子树的指针N.c1;每个中间节点最多能够表示b个连续的时间区间,并且要保证该节点至少是半满的,个时间区间;假设一个中间节点N表示了j个时间区间,分别为N.LN.I2, N. 13,……,N.Ij;节点中存储了j-1个不同的时间点,分别为N.t^N.t2,N.t3,……,N. \ 1; 其中N.h表示第i个区间的结束时间,也是i+1个区间的开始时间;同时每个时间区间N. 1 都有对应的参与人数N.Vl,参与人员的ID的集合N.Sl和指向下一个子节点的指针N.c1; 1. 2叶子节点 叶子节点最多能够表示1个连续的时间区间,并且必须至少表示.个时间区间;其结 构与中间节点类似,也有三层结构,分别为N.h、N.Vl、N. Sl,只是没有指向下一个子节点的 指针; 1. 3根节点 根节点的结构与中间节点相同,同时最多能够表示b个连续的时间区间,但是最少只 要表示2个时间区间即可; 1. 4节点性质 对于每个非叶子节点N,所有在以N.Cl为根的节点中的瞬时时间点都要严格小于N. 1 同时以N.c1+1为根的节点中的所有瞬时时间点都要严格大于N.t1; 步骤2、SB*-Tree的具体操作 2. 1区间定义: 考虑第i个时间区间N.LN. 1满开始时间记为start(N.IJ,结束时间记为end(N.I,); 2. 1. 1start(Ν·U的取值如下: 如果i>l,start(Ν·I;) =Ν·h 如果i= 1且N为根节点,start(Ν· 1;) = - 00 ; 如果i= 1且Ν有父节点f,而且f的第k个指针指向Ν,即f.ck=Ν,贝lj start(N.I;) =start(Ν' .Ik) 2. 1. 2end(N.IJ的取值如下: 如果i〈j,end(N. 1;) =N.ti; 如果i=j且N为根节点,end(N. 1;) = + ; 如果i
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1