一种用于海明空间下近似成员查询的布隆过滤电路的制作方法

文档序号:16508362发布日期:2019-01-05 09:10阅读:177来源:国知局
一种用于海明空间下近似成员查询的布隆过滤电路的制作方法

本发明涉及一种布隆过滤器,尤其是涉及一种用于海明空间下近似成员查询的布隆过滤电路。



背景技术:

现实生活中存在大量集合成员查询问题,即判断一个查询对象是否是一个数据集的成员。例如,安全官员想要检查某未知的物质(具有某些可检测的高维特征)是否属于清单所列的危险化学品;网络管理员想要知道某用户的行为特征是否有害;摄影比赛裁判想检查提交的照片是从与某一张大型数据库中的照片类似,以上的问题可以统称为近似成员查询。这些查询都需要判断查询数据与集合中数据的距离。查询数据与目标数据的距离越近,数据的价值就越高。如果是低维的小数据集,可通过线性查找解决,但是对一个海量的高维数据集采用线性查找匹配的话,会非常耗时,很多情况下无法满足实时的需要。为提高处理的速度,可以设置一个高维数据过滤器代表目标数据集合,根据距离过滤掉大部分查询数据,少量剩下的数据可以再通过常规方法进一步处理,可显著提高系统的整体性能。

对于近似成员查询问题的学术研究还刚刚起步,目前对于该问题的主要研究的方向是基于局部敏感哈希函数构建的布隆过滤器。布隆过滤器是一种支持快速查询,具有高空间效率的数据结构。一般处理近似成员查询问题(amq)使用布隆过滤器和局部敏感哈希结合的技术,包括dsbf(distance-sensitivebloomfilters)[1]、lsbf(locality-sensitivebloomfilter)[2]以及mlbf(multi-granularitylocality-sensitivebloomfilter)[3]等。它们分别从理论上、适用度量上以及实际需求的变化上补充和完善了局部敏感哈希函数构建的布隆过滤器这一崭新的近似数据过滤技术。

但是在我们生活工作中,海明距离是一个非常重要的距离度量,被广泛应用在深度学习、图像文档比较、基因分析等领域。而目前尚缺少能够用于海明空间下的近似成员查询的布隆过滤器,此外,目前的布隆过滤器主要由软件来实现,尚缺少硬件构成的电路。

上述提到的文献如下:

[1]a.kirschandm.mitzenmacher,“distance-sensitivebloomfilters,”inalenex,pp.41-50,2006.

[2]y.huaandb.xiao,“locality-sensitivebloomfilterforapproximatemembershipquery,”ieeetrans.oncomputers,vol.61,no.1,pp.817-830,june2012.

[3]j.qian,q.zhuandh.chen,“multi-granularitylocality-sensitivebloomfilter,”ieeetrans.oncomputers,vol.64,no.12,pp.3500-3514,2015.



技术实现要素:

本发明所要解决的技术问题是提供一种用于海明空间下近似成员查询的布隆过滤电路,通过硬件实现了海明空间下的近似成员查询问题,而且能够适用于不同粒度的近似成员查询。

本发明解决上述技术问题所采用的技术方案为:一种用于海明空间下近似成员查询的布隆过滤电路,包括多个并联的过滤单元和一个或门,所述的过滤单元的输入端与输入信号连接,所述的过滤单元的输出端与所述的或门的输入端连接,所述的或门的输出端输出过滤信号。

所述的过滤单元包括一个随机翻转模块、多个并联的位串模块、与所述的位串模块对应的随机哈希模块和与所述的位串模块对应的与门,在所述的随机哈希模块与所述的与门之间设置有多个并联的多路选择器,所述的随机翻转模块的输入端与输入信号连接,所述的随机翻转模块的输出端与所述的位串模块的输入端连接,所述的位串模块的输出端与所述的随机哈希模块的输入端连接,所述的随机哈希模块的输出端与所述的多路选择器的输入端连接,所述的多路选择器的输出端与所述的与门的输入端连接,所述的与门的输出端与所述的或门的输入端连接。

所述的随机翻转模块由多个异或门组成,所述的异或门的数量等于输出信号的倍数长度,所述的位串模块由多个选择器组成,所述的选择器的数量与位串数据的长度相等,各个所述的选择器的输入端分别与多个异或门的输出端对应并联连接。

与现有技术相比,本发明的优点在于多个并联的过滤单元和一个或门构成一个用于海明空间下近似成员查询的布隆过滤电路,实现了海明空间下的近似成员查询问题,而且能够适用于不同粒度的近似成员查询。

附图说明

图1为本发明的布隆过滤电路的结构示意图;

图2为本发明实施例的布隆过滤电路中的四位随机翻转模块的结构示意图;

图3为本发明实施例的布隆过滤电路中的2位位串模块的结构示意图。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。

实施例:如图1~3所示,一种用于海明空间下近似成员查询的布隆过滤电路,包括多个并联的过滤单元和一个或门1,或门的输出端输出过滤信号。

过滤单元包括一个随机翻转模块2、多个并联的位串模块3、与位串模块3对应的随机哈希模块4和与位串模块3对应的与门5,在随机哈希模块4与与门5之间设置有多个并联的多路选择器6,随机翻转模块2由四个异或门组成四位随机翻转模块,输出的数据为q0、q1、q2和q3,位串模块3由两个选择器组成了2位位串模块,两个选择器的输入端并联,输入信号均为q0、q1、q2和q3,一个选择器的选择信号输入端输入两个选择信号s00和s01,而在输出端输出位串信号b0,另一个选择器的选择信号输入端输入两个选择信号s10和s11,而在输出端输出位串信号b1,位串模块3的输出端与随机哈希模块4的输入端连接,随机哈希模块4的输出端与多路选择器6的输入端连接,多路选择器6的输出端与与门5的输入端连接,与门5的输出端与或门1的输入端连接。

本发明使用的随机哈希模块4为现有技术,在论文“m.v.ramakrishna,e.fu,e.bahcekapili.aperformancestudyofhashingfunctionsforhardwareapplications.1994int.conf.oncomputingandinformation.”中已经公开。

对上述实施例的电路进入验证实验,其实验结果如下:

使用了1000个数据对象的人造数据集和100000个查询对象的人造查询集,其中约1%是近邻数据。所有数据对象和查询对象都是w=4096维度,即包含4096个比特的二进制数据。

平台为cpu为intelcorei5-4590@3.30ghz,4.00gb内存,microsoftwindows7,java版本为jse1.8.0_31。软件实现时,每秒能过滤数据1.08×104个数据(参数k=30,l=10,c=20)。参数c是随机翻转模块的个数,l是从一个随机翻转模块输出的位串模块的个数,k是一个位串模块的(输出)宽度,参见图1。

作为对比,我们用altera公司的stratixfpgaiiep2s180f1508c3实现布隆过滤电路,实验结果如表所示(参数k=30,l=10)。我们可以看到,随着随机翻转模块数量(c)的增加,硬件消耗增加,处理速度也略有下降(从每秒处理4.14×107数据下降到每秒处理3.66×107数据),但还是高于软件实现速度3个数量级。硬件逻辑使用量低于5%,功耗稳定1462mw。

fpga实验结果

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1