[发明专利]高效分布式局部敏感哈希方法有效
申请号: | 201710422330.3 | 申请日: | 2017-06-07 |
公开(公告)号: | CN107391554B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 张万新;李东升;徐颖 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458;G06F16/2453;G06F16/2455 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 高效 分布式 局部 敏感 方法 | ||
1.一种分布式局部敏感哈希方法,包含以下步骤:
步骤1,从分布式文件系统加载原始数据,读取原始数据向量集合,为每条数据增加数据标识,生成第一弹性分布式数据集;其中第一弹性分布式数据集中每条数据记录的格式为由数据标识与数据向量组成的键值对;
步骤2,根据用户指定的哈希表数量L和哈希函数数量k,构造L个复合哈希函数;
步骤2使用哈希函数复用的方式优化处理,对于一个维度为d的数据点q,计算h(q)的时间复杂度是O(d),计算g1(q),…,gL(q)的时间复杂度是O(dkL);
用户指定的哈希表数量L和哈希函数数量k,其中k是偶数,根据计算得到一参数m的值,定义函数ui=(h1(i),...,hk(i)),其中1≤i≤L;定义复合 哈希函数gi=(ua1,ub1),1≤a1b1≤m;此时我们可以构建个复合 哈希函数及对应的哈希表;
步骤3,根据步骤2中生成的L个复合哈希函数gi,其中1≤i≤L,计算第一弹性分布式数据集中每项数据的L个哈希值,将每项数据分别映射到每个哈希表的各一个哈希桶中,所述哈希桶表示为i,gi(x),idx,其中i为哈希表标识,表示该项数据的哈希桶所在的哈希表,每项数据会被映射到L个哈希桶当中;将每项数据中的哈希表标识与复合哈希函数的值组成的键值对i,gi(x)合并为字符串,根据字符哈希方法将所述字符串映射为数字键值key,所述数字键值与数据标识形成keyx,idx键值对,将映射后得到的全体数据的集合保存为第二弹性分布式数据集;
步骤4,根据第二弹性分布式数据集中每项数据的数字键值key对第二弹性分布式数据集进行重分区,使得有具有相同数字键值key的数据被保存在相同的分区中,将同一分区中的数据进行合并,得到形式如key,(id1,id2,…,idn)的哈希桶,n则为具有相同key的数据的数目,将这些哈希桶数据保存在哈希表弹性分布式数据集中,完成哈希表的构建。
2.如权利要求1所述的方法,步骤2中复合哈希函数的构造方法为:设p-稳态局部敏感哈希函数族H,h∈H是该函数族中的一个局部敏感哈希函数,根据用户指定的哈希表个数L和哈希函数个数k,构造L个复合哈希函数g,对于某项维度为d的数据x,有gi(x)=(h1(x),h2(x),…,hk(x)),其中1≤i≤L,gi(x)为针对数据x构造的用于构建一个哈希表的第i个复合哈希函数,其中p-稳态局部敏感哈希函数族的定义为:
其中,a是一个d维的向量,向量的每一维是一个从标准高斯分布中随机选取的浮点数;b是一个从[0,w]中均匀选取的浮点数,w表示哈希桶的桶宽。
3.如权利要求1所述的方法,步骤4中所述对第二弹性分布式数据集进行重分区的方法是,计算数字键值key的哈希码值,与分区个数进行非负取模计算,得到新的分区号,然后将数据根据新的分区号保存到相应的分区中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710422330.3/1.html,转载请声明来源钻瓜专利网。