博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bloom filter
阅读量:2395 次
发布时间:2019-05-10

本文共 1300 字,大约阅读时间需要 4 分钟。

Bloom filter的优点:

 

  1. 大小固定,增加更多元素到一个Bloom filter不会增加它的大小,仅增加误报的概率
  2. 冲突概率低,为了降低冲突概率,Bloom filter引入多个Hash函数,其误报率可近似为:1-exp(-kn/m)
Java实现:
import java.util.BitSet;public class BloomFilter {	/* BitSet初始分配2^24个bit */	private static final int DEFAULT_SIZE = 1 << 25;	/* 不同哈希函数的种子,一般应取质数 */	private static final int[] seeds = new int[] { 5, 7, 11, 13, 31, 37, 61 };	private BitSet bits = new BitSet(DEFAULT_SIZE);	/* 哈希函数对象 */	private SimpleHash[] func = new SimpleHash[seeds.length];	public BloomFilter() {		for (int i = 0; i < seeds.length; i++) {			func[i] = new SimpleHash(DEFAULT_SIZE, seeds[i]);		}	}	// 将字符串标记到bits中	public void add(String value) {		for (SimpleHash f : func) {			bits.set(f.hash(value), true);		}	}	// 判断字符串是否已经被bits标记	public boolean contains(String value) {		if (value == null) {			return false;		}		boolean ret = true;		for (SimpleHash f : func) {			ret = ret && bits.get(f.hash(value));		}		return ret;	}	/* 哈希函数类 */	public static class SimpleHash {		private int cap;		private int seed;		public SimpleHash(int cap, int seed) {			this.cap = cap;			this.seed = seed;		}		// hash函数,采用简单的加权和hash		public int hash(String value) {			int result = 0;			int len = value.length();			for (int i = 0; i < len; i++) {				result = seed * result + value.charAt(i);			}			return (cap - 1) & result;		}	}}
 

 

 

转载地址:http://lvwob.baihongyu.com/

你可能感兴趣的文章
进程管理工具--supervisor
查看>>
使用virtualenv在ubuntu上搭建python-3开发环境
查看>>
详解-Python-的-“==”-和-“is”
查看>>
Tensorflow-Python-API-翻译(array_ops)
查看>>
Tensorflow-Python-API-翻译(constant_op)
查看>>
Tensorflow-Python-API-翻译(framework)
查看>>
Tensorflow-Python-API-翻译(math_ops)(第二部分)
查看>>
Tensorflow-Python-API-翻译(math_ops)(第一部分)
查看>>
论文阅读---An-Artificial-Neural-Network-based-Stock-Trading-System-Using-T
查看>>
A-Paper-A-Day--#1-Convolutional-Sequence-to-Sequence-Learning
查看>>
7个很棒的-chatbot-应用场景
查看>>
标记问题:词性标注(POS)和命名实体识别(NER)
查看>>
标记问题:介绍
查看>>
标记问题:生成模型和噪声通道模型
查看>>
机器学习算法在文本分类中的应用综述
查看>>
利用-TensorFlow-构建卷积神经网络
查看>>
利用-TensorFlow-实现排序和搜索算法
查看>>
利用TensorFlow实现卷积神经网络做文本分类
查看>>
如何构建高可读性和高可重用的-TensorFlow-模型
查看>>
使用TensorFlow识别交通标志
查看>>