[发明专利]一种面向社交活动组织的时间聚合查询方法有效
| 申请号: | 201510779130.4 | 申请日: | 2015-11-13 |
| 公开(公告)号: | CN105389370B | 公开(公告)日: | 2018-05-22 |
| 发明(设计)人: | 曹斌;侯晨煜;范菁 | 申请(专利权)人: | 浙江工业大学 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;黄美娟 |
| 地址: | 310014 浙*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 面向 社交 活动 组织 时间 聚合 查询 方法 | ||
1.一种面向社交活动组织的时间聚合查询方法,包括下列步骤:
步骤1.建立索引结构SB*-Tree;
针对SB-Tree进行拓展,建立SB*-Tree树形数据结构;SB*-Tree与SB-Tree不同的是:SB*-Tree中每个时间区间N.I
结构中使用的符号的含义如下:
N.I
N.t
N.v
N.s
N.c
1.1中间节点:
每个中间节点有三层结构,分别为N.t
1.2叶子节点;
叶子节点最多能够表示l个连续的时间区间,并且必须至少表示
1.3根节点;
根节点的结构与中间节点相同,同时最多能够表示b个连续的时间区间,但是最少只要表示2个时间区间即可;
1.4节点性质;
对于每个非叶子节点N,所有在以N.c
步骤2、SB*-Tree的具体操作;
2.1区间定义:
考虑第i个时间区间N.I
2.1.1 start(N.I
如果i>1,start(N.I
如果i=1且N为根节点,start(N.I
如果i=1且N有父节点N′,而且N′的第k个指针指向N,即N′.c
2.1.2 end(N.I
如果i<j,end(N.I
如果i=j且N为根节点,end(N.I
如果i=j且N有父节点N′,而且N′的第k个指针指向N,即N′.c
2.1.3区间的定义如下:
如果start(N.I
如果start(N.I
2.2插入:
假设插入一条记录<I,name>,name表示用户的唯一标识,I表示用户的空闲时间;我们调用过程Insert(N,<I,name>)来完成插入操作,Insert(N,<I,name>)表示向以N为根的子树中插入<I,name>;Insert(N,<I,name>)的具体操作为:对于所有满足
2.3删除:
假设删除一条记录<I,name>,name表示用户的唯一标识,I表示用户的空闲时间;删除操作与插入操作类似,我们记为delete(N,<I,name>)具体操作如下:对于所有满足
2.4节点分裂:
之前提到每个节点都有最大的容量,所以当该节点表示的时间区间过多时,就会导致溢出,此时需要进行节点分裂操作;因为插入的时间区间都是添加到叶子节点的,所以首先是叶子节点会发生溢出;当叶子节点执行完分裂操作后,会导致其父节点溢出,则进行父节点的分裂操作;
假设当节点N发生溢出时包含了n个时间区间,则当N为叶子节点时,n=l+1或n=l+2;当N为非叶子节点时,n=b+1;将节点N的分裂过程记为split(N),具体操作如下:
241)将节点N分裂成N
242)N
243)N
244)如果N是根节点,那么创建一个新的根节点N
245)如果N不是根节点,假设N有父节点N',并且N′.c
2.5区间合并和节点合并;
当发生插入或者删除操作后,会出现两个相邻区间的参与人数是相同的并且参与人员都相同的情况,这时就需要将两个相邻区间进行合并;区间合并分为两种情况:
(251)两个相邻的区间在同一个叶子节点中,假设它们分别为N.I
2511)删除N.t
2512)从第j+2个区间到最后的区间往前移一位;
2513)如果节点N经过合并后包含的区间少于
(252)两个相邻的区间在两个相邻的叶子节点中,因为这种情况比较复杂,且不容易出现,暂不作考虑;区间合并后,会使叶子节点达不到半满状态,此时需要进行节点合并来防止这种情况发生;节点合并的策略是:如果非根节点没有达到半满状态,首先从包含时间数量超过容量一半的相邻节点中移动一个时间区间到该节点;如果不存在这样的有“多余”时间区间的节点,那么就将该节点与其相邻的节点进行合并;记节点合并的过程为nmerge(N),具体操作如下:
2521)如果N是根节点并且N有且仅有1个子节点,那么将N.c
2522)如果N不是根节点,假设N最多能够包含n个时间区间,如果N是叶子节点,n=l;如果N是非叶子节点,n=b;现在N包含了
2523)如果N的右边兄弟节点N
2524)如果N的左边兄弟节点N
2525)进行两个节点的合并;假设这两个节点分别为N
N
步骤3.查询;
为了获得活动组织的最优时间结果,需要进行三个步骤的操作:
3.1获取参与时间区间;
这一步中,通过遍历SB*-Tree,可以得到所有时间区间以及对应的参与人数和参与人员,统称为区间信息;遍历的方法为:从树的根节点出发,沿路径遍历到每一个叶子节点;当沿一条路径遍历到一个叶子节点N
3.2获得候选方案;
根据第一步得到的时间区间不满足最小持续时间duration;所以为了得到满足活动最小持续时间duration的候选方案,需要对遍历SB*-Tree树得到的时间区间信息进行判断和调整,将区间大小小于duration的区间与相邻区间进行合并,使新的区间能够满足duration;具体操作如下:
假设遍历SB*-Tree后得到了m个时间区间,分别为I
3.3最优方案选择;
通过第二步得到所有候选方案后,根据快速排序将所有方案按照人数从多到小进行排序,返回最优的时间方案;同时根据用户需要,也可以返回TopK的方案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510779130.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:弹簧夹装配工装
- 下一篇:铁路车辆轮对压装方法





