【技术实现步骤摘要】
本专利技术旨在设计静态哈希表压缩算法,用于内容过滤、信息安全等领域。由于静态哈希表的存储占用空间较大,现今的算法对于静态哈希表的压缩还有很大优化空间。本专利技术旨在对静态哈希表进行压缩,可支持对静态哈希表的访问。
技术介绍
数据结构中的查找表分为静态查找表和动态查找表。查找表主要针对表中的数据不断地查找,直到找出其所需要的值为止。静态查找表的类型主要包括顺序查找、二分查找、分块查找及静态树表的查找等,而动态查找表的类型主要包括二叉排序树、平衡二叉树、B树和B+树等。上述介绍的查找算法查找的效率取决于比较次数,查找平均次数越多,其效率越低,平均而言查找表的查找效率并不高。为了快速定位数据,可以使用哈希表来提升访问效率。哈希表又叫做散列表,它利用键值对(key-value)来存储数据,是一种特殊的数据结构。哈希表通过把键值对映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。哈希表中的映射不一定是单射,故可能会产生哈希冲突的现象,数据结构中有很多算法可以解决哈希冲突。哈希表的应用场景十分广泛,应用哈希表存储数据来实现快速查找是很常见的操作。在实际的计算科学中,哈希表可以在对等网络(P2P)中的路由选择、数据库查找、压缩序数索引和信息安全等方面发挥着巨大的应用。在实际生活中,哈希表也有着重要的作用。比如,银行要进行前台数据和后台数据进行对账处理时,可以根据键查找到相应的值,从而完成前后台数据的对账工作;生活中利用的IC卡乘坐公交时,将IC卡的编号作为键,上车刷卡记录为哈希表的插入过程,值中存储上车时间和站名,下车 ...
【技术保护点】
一种高效的静态哈希表实现方法,其特征在于,包括以下步骤:1)设定哈希桶大小hash_bit,生成多个数据对,将key[i]和value[i]对应于关键字和值;2)根据key[i]值,利用rank操作构建哈希表,并计算C表和D表,其中C表表示存储固定长度r的rank操作,D表表示存储固定长度s的rank操作;3)根据C表和D表计算rank(h),其中h=key mod(hash_bits),并根据rank(h)的值存储相应的key[i]和value[i];4)根据所要查询的值key判断哈希表中是否存在该元素,若存在则在对应存储位置查询并返回value值,否则访问失败;5)根据步骤4)所得的结果,返回结果信息。
【技术特征摘要】
1.一种高效的静态哈希表实现方法,其特征在于,包括以下步骤:1)设定哈希桶大小hash_bit,生成多个数据对,将key[i]和value[i]对应于关键字和值;2)根据key[i]值,利用rank操作构建哈希表,并计算C表和D表,其中C表表示存储固定长度r的rank操作,D表表示存储固定长度s的rank操作;3)根据C表和D表计算rank(h),其中h=keymod(hash_bits),并根据rank(h)的值存储相应的key[i]和value[i];4)根据所要查询的值key判断哈希表中是否存在该元素,若存在则在对应存储位置查询并返回value值,否则访问失败;5)根据步骤4)所得的结果,返回结果信息。2.如权利要求1所述的方法,其特征在于,步骤3)采用以下步骤实现基于rank操作的哈希表存储过程:3-1)将预处理的数据分为key和value数组,key[i]、value[i]与关键字、键值相对应;3-2)预先一次性导入key值至bitmap中,定义哈希桶的数量为hash_bit,按照时间度O(1)的rank操作记录key数组的数据内容;对key与hash_bit取模得到h,确保落在哈希桶内,然后将h存储在哈希桶对应位置上,按照h值的大小,记录所有key值的相应位置信息;3-3)存储计算C数组和D数组,利用rank操作从哈希表CB[0]开始记录C数组和D数组的相应信息;3-4)利用C表和D表信息,计算每个key值对应的rank值;3-5)利用rank值记录每个哈希桶内元素个数,按照哈希表C的顺序叠加记录,利用rank值作为顺序存储key、value值;3-6)存储key、value值到数组中。3.如权利要求2所述的方法,其特征在于,步骤3-2)中,hash_bit的值为CB表的大小clength和28的乘积,对每个哈希桶内分配4个大小的bitmap,每个bitmap存储64位的数据,初始化设置为各位均为0。4.如权利要求3所述的方法,其特征在于,步骤3-2)按照如下公式记录h的位置,直到所有的key值均依次记录位置:q=h&255,CB[h>>8].bitmap[q>>6]|=(1<<(q&63))。5.如权利要求2所述的方法,其特征在于,步骤3-5)中,在存储key-value对时,若不同的key有同一rank值,则首要顺序按照rank值大小顺序存储,次要顺序按照rank值相同依次存储。6.如权利要求1所述的方法,其特征在于,步骤4)采用以下步骤实现基于rank操作的哈希表访问过程:4-1)对要查询的数据key与hash_bit取模得到h;4-2)计算q=h&255,判断CB[h>>8].bitmap[q>>6]和(1<<(q&63))做与运算是否为1,即在原来哈希桶内是否有key值;若此步判断为0...
【专利技术属性】
技术研发人员:刘燕兵,张春燕,卢毓海,谭建龙,郭莉,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。