欢迎来到 常识词典网 , 一个专业的常识知识学习网站!
[ Ctrl + D 键 ]收藏本站
答案 1:
假设我们要表示的静态集合X有n个元素,我们针对它可以找到一个perfect -as- function,记作-(x) : [1…u] → [1…n]。所谓perfect -as- function,即它针对不同的key能产生不同的-as- value,也就是说没有collision。如果针对不同的key产生不同的-as- value,且-as- value分布在连续的整数区间内,则称之为mini-l perfect -as- function,或者mini-l perfect -as-ing。所以上面提到的函数-x严格来说是一个mini-l perfect -as- function。
有了-(x),我们就可以将X映射到n个连续的格子(bucket)中,每个元素对应其中一个格子。下面我们还需要另一个-as- function,它针对每个元素完全随机地生成j位长的-as- value,然后将-as- value作为这个元素的fingerprint存储在对应的格子里。记这个函数为φ: [1…u] → [0…2j-1]。有了-(x)和φ,我们就可以分两步将X映射到一个m = n .j位的内存中,且查找的错误率为1/2j,因为只有在j位fingerprint完全吻合的情况下才会出现false positive。
但Bloom Filter的错误率为(1/2)k ≥ (1/2)mln2/n。因此当m = n .j时,Bloom Filter的错误率为(0.6185)j,高于这种基于perfect -as-ing的方法。如果Bloom Filter要保持1/2j的错误率,必须有m = n .j / ln2,因此所占空间是基于perfect -as-ing方法的1 / ln2倍。
所以得出的结论,你能明白了吧!
下一篇:谁能简单地解释一下VIE?这次的马云支付宝事件和VIE之间是啥关系?背后有啥内幕? 下一篇 【方向键 ( → )下一篇】
上一篇:-泄露了用户的信息,大家还会继续使用-产品吗? 上一篇 【方向键 ( ← )上一篇】
快搜