快花滤池

LessHash-BloomFilter的Python项目详细描述


更少的哈希bloom筛选器

Build Status

少哈希bloom filter是一种适用于大数据量的快速bloomfilter。

计算散列函数和检查元素的存在是一个主要的计算开销。 此外,bloom filter需要多个独立的散列函数,而精心设计的散列函数是计算密集型的,如md5、sha-1[1]。

在这个实现中,我们使用一种不同的技术,只从两个函数生成k散列函数。因此,布卢姆过滤器是快速的。

安装

使用pip安装更少的hash bloom过滤器,如下所示:

$ pip install LessHash-BloomFilter

使用量

lhbf需要知道bloom过滤器的大小和散列函数的数目。

注意:应该使用highm来避免哈希函数的冲突。两个随机字符串碰撞的概率为~1/m

fromlhbfimportBloomFilter# Create a bloom filter bf=BloomFilter(m=200,k=2)# Add an elementbf.add("a")# Check if element existsbf.might_contain("a")# Estimate flase positive probability bf.estimate_fpp()# Combine two bloom filtersbf2=BloomFilter(m=200,k=2)bf.combine(bf2)

详细信息

  • 使用的哈希函数:

    • 对于整数,我们使用knuth乘法哈希[2]
    • 对于字符串,我们使用多项式滚动哈希函数[3]
  • k散列函数:

    使用两个散列函数,我们计算k个散列函数如下:

    gi(x)=h1(x)+i x h2(x)mod m,其中0≤i≤k-1

    已经证明,使用该方法不会增加渐近误报概率[4]。

贡献

欢迎随时提交对此存储库的任何更改的拉取请求。我很高兴看到有什么贡献。

参考文献

  • [1]罗,来龙,等.优化bloom过滤器:挑战、解决方案和比较。IEEE通信调查和教程(2018年)。
  • [2]克努特,唐纳德·欧文。计算机程序设计的艺术:排序和搜索。第三卷。皮尔逊教育,1997年。
  • [3]卡普,理查德M.和迈克尔O.拉宾。有效的随机模式匹配算法。IBM研究与发展杂志31.2(1987):249-260.
  • [4]基尔希,亚当,迈克尔·米岑马赫。更少的散列,同样的性能:构建更好的bloom过滤器。欧洲算法研讨会。斯普林格,柏林,海德堡,2006年。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从SOAP响应获取值   prolog中不允许使用java StAX解析器内容   JAVA项目中,创建一个由4行11列组成的显示表   java原子写入Spring可变bean   完整的worddatabase for JavaApp检查一个单词是否是一个合法的单词,在这种情况下SQL是否合适?   java如何将数组字节转换为组织。w3c。多姆。文件   运行Spring MVC应用程序时出现java JBoss错误   java为什么scanner类与BufferedReader相比需要较长的时间   java jaxb2mavenplugin仅执行第一次执行   java有什么方法可以使活动在单击每个按钮时做出不同的反应?   对java开发人员学习数据结构和算法有何建议   lambda我对java函数签名有疑问   java使用Maven创建三层应用程序   java Hadoop分布式文件系统是否像Google文件系统一样支持任何更新操作?   按下按钮后,swing Java Key事件不会执行   java JPA Hibernate删除实体关系中的孤立项   java将负数输入到数字反转程序中   java在OpenCV中无阻塞地从回调方法获取图像