[发明专利]一种快速统计频数的方法及系统有效
申请号: | 201510940356.8 | 申请日: | 2015-12-16 |
公开(公告)号: | CN105574152B | 公开(公告)日: | 2019-03-01 |
发明(设计)人: | 刘军;杨迅;周文莉;刘芳;何大中 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455 |
代理公司: | 北京柏杉松知识产权代理事务所(普通合伙) 11413 | 代理人: | 马敬;项京 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 统计 频数 方法 系统 | ||
1.一种快速统计频数的方法,其特征在于:包括数据处理子单元进行频数统计的步骤和数据汇总单元统计增量的步骤;
所述数据处理子单元进行频数统计按以下步骤进行:
A1、所述数据处理子单元收到一个元素e;
A2、所述数据处理子单元检查是否有计数器对e进行计数;
如果e有对应的计数器对其进行计数,那么就增加对应计数器的delta变量和计数值,然后执行步骤A3;
如果e没有对应的计数器对其进行计数,判断系统中所有的计数器个数是否达到上限;
如果系统中所有的计数器个数没有达到上限,则初始化一个新的计数器来对这个元素计数,然后执行步骤A3;
如果系统中所有的计数器个数达到上限,则找到系统中计数值最小的计数器,然后用元素e把系统中计数值最小的计数器中的元素替换掉,接着把计数误差的值设置为当前的计数值;设置该计数器中的delta_error变量等于该计数器中的delta,最后增加对应计数器的delta变量和计数值;然后执行步骤A3;
A3、更新计数器链表结构,判断delta是否达到发送阈值threshold,如果达到则向数据汇总单元发送该计数器的元素e、delta和delta_error的值,然后把delta和delta_error变量清零;否则在接收到新的元素后返回执行步骤A2;
所述数据汇总单元统计增量按以下步骤执行:
B1、所述数据汇总单元收到元素e、delta和delta_error的值;
B2、所述数据汇总单元判断元素e是否有计数器对其进行计数;
如果元素e有计数器对其进行计数,就增加对应元素e的计数器的计数值和误差值,然后执行步骤B3;
如果元素e没有计数器对其进行计数,判断系统中所有的计数器个数是否达到上限;
如果系统中所有的计数器个数没有达到上限,初始化一个新的计数器来对元素e进行计数,然后执行步骤B3;
如果系统中所有的计数器个数达到上限,就找到系统中计数值最小的计数器,然后用元素e把这个计数器中的元素替换掉,接着把计数误差的值设置为当前的计数值,最后根据delta值增加计数值;然后执行步骤B3;
B3、更新计数器链表结构,并判断是否达到输出结果条件,如果达到条件则输出所有计数器的结果,否则在接收到新的元素后返回执行步骤B1。
2.如权利要求1所述的一种快速统计频数的方法,其特征是:所述更新计数器链表结构按以下步骤进行:
C1、当计数器的计数值增加时,首先把该计数器从桶指向的计数器链表中分离出来;
C2、判断该桶下是否还有计数器;如果没有计数器了,把该桶从桶列表中分离出来,然后删除,然后执行步骤C3;如果还有计数器,则直接执行步骤C3;
C3、查找有没有桶号等于该计数器增加后的计数值的桶:如果有,则把这个计数器插入到这个桶指向的计数器链表中,操作结束;如果没有,则为该计数器新建一个桶号等于其计数值的桶,然后把这个计数器加入到这个桶指向的计数器链表中,然后执行步骤C4;
C4、按照桶号确定该桶要插入的位置,插入到桶链表中;
所述桶为计数值,所述桶号为计数值的大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510940356.8/1.html,转载请声明来源钻瓜专利网。