一种构造完美哈希的方法技术

技术编号:18445133 阅读:4 留言:0更新日期:2018-07-14 10:28
本申请公开了一种构造完美哈希的方法及装置,方法包括:构建并训练神经网络模型,训练好的神经网络模型的输出结果满足预设条件,将包括多个数据样本的待处理数据集代入所述神经网络模型,得到与所述多个数据样本数量相同的多个输出值,确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表。所述构造完美哈希的方法及装置,采用神经网络模型进行数据样本的一次映射,并保证每个数据样本的映射结果不同,即不同的映射结果只有唯一的数据样本与其对应,因此在查找确定哈希值的数据时,只需要进行一次数据比较,从而查找速度快,查找效率更高。

A method of constructing perfect hash

The present application discloses a method and device for constructing a perfect hash. The method includes: constructing and training the neural network model. The output results of the trained neural network model satisfy the presupposition condition, and the data set, which includes multiple data samples, is replaced by the model of the neural network, and the number of data samples is obtained. The same multiple output values are measured to determine the mapping of all data samples to the output values in the data set, and record the data samples corresponding to the output values to generate a perfect hash table. The method and device for constructing the perfect hash is used to map a data sample by a neural network model, and to ensure that the mapping results of each data sample are different. That is, the result of the different mapping is only the only data sample and its corresponding, so only one data ratio is needed when the data of the hash value is found. Therefore, the speed of searching is faster and the search efficiency is higher.

【技术实现步骤摘要】
一种构造完美哈希的方法
本专利技术涉及数据处理
,更具体的说,是涉及一种构造完美哈希的方法。
技术介绍
Hash,即哈希,又称散列,可以看作是一个函数。函数的输入为原始数据,输出一般为整数。哈希的用途,主要是为了快速查找。例如:假设原始数据为一个字符串的集合Set={si},i取值为1~N,即该集合中共有N个元素。现有一个待查字符串s,需要确定s是否存在于集合Set中。最原始的办法是将s与Set中所有元素逐一比较,则平均情况下,需要N/2次比较,最坏情况下需要N次比较。完成查找的时间复杂度为O(N),即时间与集合的长度成正比。对字符串数据,一个简单的Hash函数是将字符串中所有字符的ASCII码累加求和,再对一个常数取模。常数一般是字符串集合的长度,即N。设有hash函数,完成如图1所示的哈希映射,则可以事先对集合中所有数据进行Hash映射,并记录结果为如图2所示的哈希映射表。查找时,先计算Hash(s),得到哈希值,再与该哈希值对应的数据进行比较。例如,Hash(s)计算得到4,则进一步比较s与s10,如果相等,则表明s位于集合中;如果不等,则表明s不在集合中。上述的示例中,实际是一个完美哈希。完美哈希是指无冲突的哈希,即哈希映射表中所有的哈希值,最多只有一个字符串与之对应。如图3所示,简单的哈希函数一般有冲突。这种情况下,构造的哈希映射表如图4所示。在有冲突的情况下,查找流程为:首先计算待查字符串s的哈希值Hash(s),如果哈希表中,没有任何字符串与该值对应,则表明s不在集合中;如果哈希表中,有字符串与该值对应,需要进一步将s与该值对应的所有字符串逐一比较。如果有相同的字符串,则表明s在集中。如果该值对应的所有字符串,都不同,则表明s不在集合中。例如,Hash(s)为2,查哈希表、,2没有任何字符串映射,则s不在集合中。再如,Hash(s)为5,查哈希表,5对应的字符串有三个,分别是s2,s7,s10,则需要进一步将s与s2,s7,s10比较。如果有一个相同,则表明s在集合中。如果s与s2,s7,s10都不同,则表明s不在集合中。可见,冲突会导致查找过程中需要进行更多次数的比较。因此,如何构造完美哈希,使得查找过程更加迅速,查找效率更高,成为行业领域内技术人员研究的热题。
技术实现思路
有鉴于此,本专利技术提供了一种构造完美哈希的方法,以提升数据查找速度,提高数据查找效率。一种构造完美哈希的方法,包括:构建并训练神经网络模型;训练好的神经网络模型的输出结果满足预设条件;所述神经网络模型包括多个输入节点,一个输出节点;每一个输入值为一个属性,每一个属性具有一个权重值;将包括多个数据样本的待处理数据集代入所述神经网络模型,得到多个输出值,所述多个数据样本的数量和所述多个输出值的数量相同;确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表。可选的,所述构建并训练神经网络模型,包括:根据训练数据集中的数据样本构建神经网络模型;将所述训练数据集代入所述神经网络模型,不断调整各个属性的权重值,直至所述训练数据集中的所有数据样本的输出值满足预设条件,所述权重值的个数与所述神经网络模型的输入节点个数相同。可选的,所述数据样本为字符串,则所述根据数据集中的数据样本构建神经网络模型,包括:将所述训练数据集中长度最大的字符串的长度确定为输入节点的个数,并构建神经网络模型。可选的,所述预设条件为所有数据样本的输出值的差值大于或等于1,所述训练数据集中包括N个数据样本,则所述将所述训练数据集代入所述神经网络模型,不断调整各个属性的权重值直至所述训练数据集中的所有的数据样本的输出值满足预设条件,包括:分别将N个字符串输入所述神经网络模型,得到N个输出值;若所述N个输出值中存在差值小于1的两个输出值,则调整权重值,进入所述分别将N个字符串输入所述神经网络模型,得到N个输出值的步骤,直至所述N个输出值中的任意两个输出值的差值大于或等于1。可选的,所述分别将N个字符串输入所述神经网络模型,得到N个输出值,包括:针对每一个字符串:将字符串中的每一个字符作为一个属性值,依次输入神经网络模型的输入节点;若存在字符串长度小于所述神经网络模型输入节点个数的情况,将不存在字符位置对应的输入节点的属性值设为0;得到N个输出值。可选的,所述待处理数据集中包括H个数据样本,所述H为正整数;则所述确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表,包括:将所述待处理数据集中的H个数据样本映射到1~k中的H个整数,所述H个整数即为H个输出值,其中,k是所述H个输出值的跨度,为正整数且大于H;将1-k中的所有整数标记为有效值和无效值,其中有效值为映射结果对应的整数,且个数为H,依次标记为1-H;无效值为非映射结果整数,标记为-1;确定每一个有效值对应的样本数据,生成完美哈希表。可选的,所述将所述待处理数据集中的H个数据样本映射到1-k中的H个整数,包括:将H个数据样本的H个输出值进行取整处理;将经过取整处理后的H个输出值按照大小进行排序;将H个输出值分别减去最小的输出值;确定H个数据样本到减去最小的输出值后的数值的映射关系。一种构造完美哈希的装置,包括:模型处理模块,用于构建并训练神经网络模型;训练好的神经网络模型的输出结果满足预设条件;所述神经网络模型包括多个输入节点,一个输出节点;每一个输入值为一个属性,每一个属性具有一个权重值;样本映射模块,用于将包括多个数据样本的待处理数据集代入所述神经网络模型,得到多个输出值,所述多个数据样本的数量和所述多个输出值的数量相同;哈希表生成模块,用于确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表。可选的,所述模型处理模块包括:模型构建模块,用于根据训练数据集中的数据样本构建神经网络模型;模型训练模块,用于将所述训练数据集代入所述神经网络模型,不断调整各个属性的权重值,直至所述训练数据集中的所有数据样本的输出值满足预设条件,所述权重值的个数与所述神经网络模型的输入节点个数相同。可选的,所述数据样本为字符串,则所述模型构建模块具体用于:将所述训练数据集中长度最大的字符串的长度确定为输入节点的个数,并构建神经网络模型。可选的,所述预设条件为所有数据样本的输出值的差值大于或等于1,则所述模型训练模块包括:样本代入模块,用于分别将N个字符串输入所述神经网络模型,得到N个输出值;权重调整模块,用于在所述N个输出值中存在差值小于1的两个输出值的情况下,调整权重值。可选的,所述样本代入模块包括:属性值输入模块,用于针对每一个字符串:将字符串中的每一个字符作为一个属性值,依次输入神经网络模型的输入节点;字符串处理模块,用于在存在字符串长度小于所述神经网络模型输入节点个数的情况时,将不存在字符位置对应的输入节点的属性值设为0;输出值确定模块,用于得到N个输出值。可选的,所述待处理数据集中包括H个数据样本,所述H为正整数;则所述哈希表生成模块包括:第一处理模块,用于将所述待处理数据集中的H个数据样本映射到1~k中的H个整数,所述H个整数即为H个输出值,其中,k是所述H个输出值的跨度,为正本文档来自技高网
...

【技术保护点】
1.一种构造完美哈希的方法,其特征在于,包括:构建并训练神经网络模型;训练好的神经网络模型的输出结果满足预设条件;所述神经网络模型包括多个输入节点,一个输出节点;每一个输入值为一个属性,每一个属性具有一个权重值;将包括多个数据样本的待处理数据集代入所述神经网络模型,得到多个输出值,所述多个数据样本的数量和所述多个输出值的数量相同;确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表。

【技术特征摘要】
1.一种构造完美哈希的方法,其特征在于,包括:构建并训练神经网络模型;训练好的神经网络模型的输出结果满足预设条件;所述神经网络模型包括多个输入节点,一个输出节点;每一个输入值为一个属性,每一个属性具有一个权重值;将包括多个数据样本的待处理数据集代入所述神经网络模型,得到多个输出值,所述多个数据样本的数量和所述多个输出值的数量相同;确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表。2.根据权利要求1所述的构造完美哈希的方法,其特征在于,所述构建并训练神经网络模型,包括:根据训练数据集中的数据样本构建神经网络模型;将所述训练数据集代入所述神经网络模型,不断调整各个属性的权重值,直至所述训练数据集中的所有数据样本的输出值满足预设条件,所述权重值的个数与所述神经网络模型的输入节点个数相同。3.根据权利要求2所述的构造完美哈希的方法,其特征在于,所述数据样本为字符串,则所述根据数据集中的数据样本构建神经网络模型,包括:将所述训练数据集中长度最大的字符串的长度确定为输入节点的个数,并构建神经网络模型。4.根据权利要求3所述的构造完美哈希的方法,其特征在于,所述预设条件为所有数据样本的输出值的差值大于或等于1,所述训练数据集中包括N个数据样本,则所述将所述训练数据集代入所述神经网络模型,不断调整各个属性的权重值直至所述训练数据集中的所有的数据样本的输出值满足预设条件,包括:分别将N个字符串输入所述神经网络模型,得到N个输出值;若所述N个输出值中存在差值小于1的两个输出值,则调整权重值,进入所述分别将N个字符串输入所述神经网络模型,得到N个输出值的步骤,直至所述N个输出值中的任意两个输出值的差值大于或等于1。5.根据权利要求4所述的构造完美哈希的方法,其特征在于,所述分别将N个字符串输入所述神经网络模型,得到N个输出值,包括:针对每一个字符串:将字符串中的每一个字符作为一个属性值,依次输入神经网络模型的输入节点;若存在字符串长度小于所述神经网络模型输入节点个数的情况,将不存在字符位置对应的输入节点的属性值设为0;得到N个输出值。6.根据权利要求1所述的构造完美哈希的方法,其特征在于,所述待处理数据集中包括H个数据样本,所述H为正整数;则所述确定所述待处理数据集中所有数据样本到输出值的映射关系,并记录输出值对应的数据样本,生成完美哈希表,包括:将所述待处理数据集中的H个数据样本映射到1~k中的H个整数,所述H个整数即为H个输出值,其中,k是所述H个输出值的跨度,为正整数且大于H;将1-k中的所有整数标记为有效值和无效值,其中有效值为映射结果对应的整数,且个数为H,依次标记为1-H;无效值为非映射结果整数,标记为-1;确定每一个有效值对应的样本数据,生成完美哈希表。7.根据权利要求6所述的构造完美哈希的方法,其特征在于,所述将所述待处理数据集中的H个数据样本映射到1-k中的H个整数,包括:将H个数据样本的H个输出值进行取整处理;将经过取整处理后的H个输出值按照大小进行排序;将H个输出值分别减去...

【专利技术属性】
技术研发人员:徐佳宏朱吕亮
申请(专利权)人:深圳市茁壮网络股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1