中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

建設(shè)單位企業(yè)鎖登陸網(wǎng)站seo沈陽(yáng)

建設(shè)單位企業(yè)鎖登陸網(wǎng)站,seo沈陽(yáng),網(wǎng)站快速查找,python的網(wǎng)站開(kāi)發(fā)源碼文章目錄BloomFilter簡(jiǎn)單介紹BloomFilter中的數(shù)學(xué)知識(shí)fpp(誤判率/假陽(yáng)性)的計(jì)算k的最小值公式總結(jié)編程語(yǔ)言實(shí)現(xiàn)golang的實(shí)現(xiàn)[已知n, p求m和k](https://github.com/bits-and-blooms/bloom/blob/master/bloom.go#L133)參考BloomFilter簡(jiǎn)單介紹 BloomFilter我們可能經(jīng)常聽(tīng)到也在使…

文章目錄

  • BloomFilter簡(jiǎn)單介紹
  • BloomFilter中的數(shù)學(xué)知識(shí)
    • fpp(誤判率/假陽(yáng)性)的計(jì)算
    • k的最小值
    • 公式總結(jié)
  • 編程語(yǔ)言實(shí)現(xiàn)
    • golang的實(shí)現(xiàn)
      • [已知n, p求m和k](https://github.com/bits-and-blooms/bloom/blob/master/bloom.go#L133)
  • 參考

BloomFilter簡(jiǎn)單介紹

BloomFilter我們可能經(jīng)常聽(tīng)到也在使用, 它的特點(diǎn)是如果判斷結(jié)果為"不存在", 則一定不存在; 如果判斷為存在, 則可能存在. 如下圖示例說(shuō)明當(dāng)我們判斷z元素存在時(shí), 其實(shí)是不存在的, 即存在有概率性.
BloomFilter原理示意

如上圖, 長(zhǎng)為m=16的二進(jìn)制向量, 初始全為0; k=3(即添加一個(gè)元素需要將3個(gè)bit設(shè)置為1), 對(duì)n=3個(gè)元素進(jìn)行添加操作.

BloomFilter幾個(gè)關(guān)鍵量定義:
m: 二進(jìn)制向量大小(多少個(gè)二進(jìn)制位)
n: 要存放的元素個(gè)數(shù)
k: 哈希函數(shù)的個(gè)數(shù), 或者說(shuō)每添加一個(gè)元素都要進(jìn)行k次計(jì)算
fpp或者簡(jiǎn)寫(xiě)為p: 誤判率(false positive rate), 即 使用bloomfilter判斷為存在時(shí), 但實(shí)際不存在的概率

BloomFilter中的數(shù)學(xué)知識(shí)

fpp(誤判率/假陽(yáng)性)的計(jì)算

BloomFilter主要的數(shù)學(xué)原理是: 在某一范圍內(nèi)(1<=x<=m)1<=x<=m)1<=x<=m)(x為整數(shù), m通常是很大的, 如106級(jí)別10^6級(jí)別106級(jí)別), 任意選取兩個(gè)整數(shù)i,j,i和j可重復(fù)選取i, j, i和j可重復(fù)選取i,j,ij可重復(fù)選取, 則其相等的概率是非常小的: mm2=1m\dfrac{m}{m^2}=\dfrac{1}{m}m2m?=m1?

我們假定hash計(jì)算是均勻的, 即每次hash會(huì)隨機(jī)地將m位中的一位設(shè)置為1. 那么:

  • 一次hash計(jì)算(如h1(x)h1(x)h1(x))后, 任一位被 置為1 的概率為: 1m\dfrac{1}{m}m1?
  • 一次hash計(jì)算(如h1(x)h1(x)h1(x))后, 任一位 還是0(即未被置為1) 的概率為: 1?1m1 - \dfrac{1}{m}1?m1?
  • 添加一個(gè)元素(如bloomFilter.Add(x), 即執(zhí)行k次hash)后, 任一位還是0的概率為: (1?1m)k(1 - \dfrac{1}{m})^k(1?m1?)k
  • 添加n個(gè)元素后(如上圖中的n=3個(gè)元素:x,y,z), 任一位還是0的概率為: (1?1m)kn(1 - \dfrac{1}{m})^{kn}(1?m1?)kn , 任一位為1的概率為 1?(1?1m)kn1- (1 - \dfrac{1}{m})^{kn}1?(1?m1?)kn
  • 如果將1個(gè)新的元素,添加到已存在n個(gè)元素的BloomFilter中,則任一位已經(jīng)為1的概率與上面相同,為:1?(1?1m)kn1- (1 - \dfrac{1}{m})^{kn}1?(1?m1?)kn .
    那么添加這個(gè)新元素時(shí), k個(gè)比特都為1(相當(dāng)于新元素和已有元素已經(jīng)分不清了)的概率(此即為新插入元素的誤識(shí)別率)為:
    p=[1?(1?1m)kn]kp = [1- (1 - \dfrac{1}{m})^{kn}]^{k} p=[1?(1?m1?)kn]k

通常來(lái)說(shuō), m是一個(gè)非常大的數(shù)(1MiB內(nèi)存就有220×8≈800萬(wàn)2^{20}\times{8}\approx 800萬(wàn)220×8800萬(wàn)個(gè)bit), 并且我們有: lim?x→∞(1+x)1x=e{ \lim\limits_{x \to \infin} (1+x)^{\frac{1}{x}} = e}xlim?(1+x)x1?=e
那么在工程實(shí)踐中, 可以認(rèn)為p的近似值為:
p=[1?(1?1m)kn]k=[1?(1?1m)?m×?knm]k≈(1?e?knm)k(當(dāng)m很大時(shí),將?1m看作x)\begin{aligned} p &= [1- (1 - \dfrac{1}{m})^{kn}]^{k} \\ &= [1- (1 - \dfrac{1}{m})^{-m\times\frac{-kn}{m}}]^{k} \\ &\approx (1-e^{-\frac{kn}{m}})^{k} \enspace (當(dāng)m很大時(shí), 將 -\dfrac{1}{m}看 作x) \end{aligned} p?=[1?(1?m1?)kn]k=[1?(1?m1?)?m×m?kn?]k(1?e?mkn?)k(當(dāng)m很大時(shí),?m1?看作x)?

k的最小值

計(jì)算過(guò)程參考: https://cs.stackexchange.com/questions/132088/how-is-the-optimal-number-of-hashes-is-derived-in-bloom-filter

已經(jīng)遺忘的知識(shí):

  1. 求導(dǎo)公式: (ln?x)′=1x(\ln{x})^{'} = \dfrac{1}{x}(lnx)=x1?
  2. 求導(dǎo)公式: (enx)′=nenx(\bold{e}^{nx})^{'} = n\bold{e}^{nx}(enx)=nenx

在某些情況下, 我們對(duì)n, m, 的值可以給一個(gè)估算值, 以此來(lái)獲得最小的p(即盡可能準(zhǔn)確判斷), 那么k就是一個(gè)變量了, 問(wèn)題就變?yōu)榍?(1?e?knm)k(1-e^{-\frac{kn}{m}})^{k}(1?e?mkn?)k的最小值.
f(k)=(1?e?knm)kf(k)=(1-e^{-\frac{kn}{m}})^{k}f(k)=(1?e?mkn?)k, 那么
兩邊取對(duì)數(shù)有:ln?f(k)=ln?(1?e?knm)k=kln?(1?e?knm)設(shè)g(k)=kln?(1?e?knm),那么:g′(k)=ln?(1?e?knm)+knme?knm1?e?knm令x=e?knm,x∈(0,1),那么有h(x)=ln?(1?x)?x1?xln?x(注意k用?mnlnx替換)=(1?x)ln?(1?x)?xln?x1?x(x∈0,1)\begin{aligned} & 兩邊取對(duì)數(shù)有: \\ & \ln f(k)=\ln (1-e^{-\frac{kn}{m}})^{k} = k \ln(1-e^{-\frac{kn}{m}}) \\ & 設(shè) g(k) = k\ln{(1-e^{-\frac{kn}{m}})}, 那么:\\ & g{'}(k) = \ln{(1-e^{-\frac{kn}{m}})} + k\dfrac{\frac{n}{m}e^{-\frac{kn}{m}}}{1-e^{-\frac{kn}{m}}} \enspace \\ & 令 x = e^{-\frac{kn}{m}}, x \in(0, 1), 那么有 \\ & h(x) = \ln(1-x) - \dfrac{x}{1-x} \ln x \enspace (注意k用-\dfrac{m}{n}lnx替換) \\ & \enspace \enspace \enspace \enspace = \dfrac{(1-x) \ln(1-x)-x \ln x}{1-x} \enspace (x\in{0, 1}) \end{aligned} ?兩邊取對(duì)數(shù)有:lnf(k)=ln(1?e?mkn?)k=kln(1?e?mkn?)設(shè)g(k)=kln(1?e?mkn?),那么:g(k)=ln(1?e?mkn?)+k1?e?mkn?mn?e?mkn??x=e?mkn?,x(0,1),那么有h(x)=ln(1?x)?1?xx?lnx(注意k?nm?lnx替換)=1?x(1?x)ln(1?x)?xlnx?(x0,1)?

對(duì) h(x)=(1?x)ln?(1?x)?xln?x1?x(x∈0,1)h(x) = \dfrac{(1-x)\ln(1-x)-x \ln x}{1-x} \enspace (x\in{0, 1})h(x)=1?x(1?x)ln(1?x)?xlnx?(x0,1), 不難看出:

  1. 當(dāng)x=12時(shí),h(x)=0x=\dfrac{1}{2}時(shí), h(x)=0x=21?時(shí),h(x)=0
  2. 當(dāng)x>12時(shí),h(x)<0x>\dfrac{1}{2}時(shí),h(x)<0x>21?時(shí),h(x)<0
  3. 當(dāng)x<12時(shí),h(x)>0x<\dfrac{1}{2}時(shí),h(x)>0x<21?時(shí),h(x)>0

站在巨人的肩膀上, 我們可以直接在這里看:
顯然在x∈(0,1)范圍內(nèi),當(dāng)x=0.5時(shí),h(x)最小x\in(0, 1)范圍內(nèi), 當(dāng)x=0.5時(shí), h(x)最小x(0,1)范圍內(nèi),當(dāng)x=0.5時(shí),h(x)最小, 此時(shí)k=mnln2k=\dfrac{m}{n}ln2k=nm?ln2

在這里插入圖片描述
也就是說(shuō):
當(dāng)k<mnln2k <\dfrac{m}{n}ln2k<nm?ln2時(shí)(想象k非常接近0), x=e?knmx = e^{-\frac{kn}{m}}x=e?mkn?會(huì)非常接近1, 此時(shí)x>12x>\dfrac{1}{2}x>21?,
h(x)<0h(x)<0h(x)<0 ? f(k)在變小;
當(dāng)k>mnln2k >\dfrac{m}{n}ln2k>nm?ln2時(shí)(想象k非常接近0), x=e?knmx = e^{-\frac{kn}{m}}x=e?mkn?會(huì)非常接近0, 此時(shí)x<12x<\dfrac{1}{2}x<21?,
h(x)>0h(x)>0h(x)>0 ? f(k)在變大;
所以k=mnln2k=\dfrac{m}{n}ln2k=nm?ln2時(shí)會(huì)使得f(k)f(k)f(k)最小, 即此時(shí)p最小.

公式總結(jié)

  1. 誤判率公式: p=[1?(1?1m)kn]kp = [1- (1 - \dfrac{1}{m})^{kn}]^{k}p=[1?(1?m1?)kn]k
  2. 誤判率近似公式(當(dāng)m很大時(shí)): p≈(1?e?knm)kp \approx (1-e^{-\frac{kn}{m}})^{k}p(1?e?mkn?)k
  3. 已知m, n, k的最小值(近似)為: k=mnln?2≈0.7mnk=\dfrac{m}{n}\ln{2} \approx 0.7\dfrac{m}{n}k=nm?ln20.7nm?
  4. 已知n, p, 且k取最小時(shí), m=?nln?p(ln2)2m=-\dfrac{n\ln{p}}{(ln2)^{2}}m=?(ln2)2nlnp?

編程語(yǔ)言實(shí)現(xiàn)

golang的實(shí)現(xiàn)

https://github.com/bits-and-blooms/bloom

已知n, p求m和k

func EstimateParameters(n uint, p float64) (m uint, k uint) {m = uint(math.Ceil(-1 * float64(n) * math.Log(p) / math.Pow(math.Log(2), 2)))k = uint(math.Ceil(math.Log(2) * float64(m) / float64(n)))return
}

參考

  1. https://en.wikipedia.org/wiki/Bloom_filter
  2. https://cs.stackexchange.com/questions/132088/how-is-the-optimal-number-of-hashes-is-derived-in-bloom-filter

(完)

http://www.risenshineclean.com/news/34591.html

相關(guān)文章:

  • 做中英文游戲門(mén)戶網(wǎng)站關(guān)鍵詞怎么弄百度一下的網(wǎng)址
  • 500人在線網(wǎng)站建設(shè)配置國(guó)家市場(chǎng)監(jiān)管總局官網(wǎng)
  • 武漢武昌做網(wǎng)站推廣百度推廣需要什么條件
  • 長(zhǎng)沙做網(wǎng)站好的公司有哪些跨境電商平臺(tái)哪個(gè)最好最可靠
  • 做第三方的qq互聯(lián)接口時(shí)_回調(diào)到自己的網(wǎng)站時(shí)要延時(shí)很久是什么原因品牌推廣平臺(tái)
  • 網(wǎng)站域名301是什么意思什么是長(zhǎng)尾關(guān)鍵詞舉例
  • 老的網(wǎng)站為什么要改版新網(wǎng)站東莞seo優(yōu)化排名
  • 免費(fèi)做三級(jí)網(wǎng)站正規(guī)網(wǎng)站優(yōu)化哪個(gè)公司好
  • 免費(fèi)cms建站系統(tǒng)有哪些小說(shuō)關(guān)鍵詞自動(dòng)生成器
  • 網(wǎng)站更換服務(wù)器影響今日頭條官網(wǎng)登錄入口
  • 深圳交易服務(wù)中心官網(wǎng)學(xué)校seo推廣培訓(xùn)班
  • 如何查詢網(wǎng)站打開(kāi)速度變慢品牌如何推廣
  • 網(wǎng)站建設(shè)歺金手指排名15中關(guān)村標(biāo)準(zhǔn)化協(xié)會(huì)
  • 攝影師的網(wǎng)站有哪些淘寶數(shù)據(jù)查詢
  • 網(wǎng)站建設(shè)收費(fèi)價(jià)目表產(chǎn)品線上推廣渠道
  • 政府網(wǎng)站 模板線上營(yíng)銷(xiāo)平臺(tái)有哪些
  • 做哪些網(wǎng)站可以賺錢(qián)的蜘蛛seo超級(jí)外鏈工具
  • 秦皇島 網(wǎng)站建設(shè)海外網(wǎng)絡(luò)推廣方案
  • 企業(yè)網(wǎng)站源碼系統(tǒng)搜索引擎優(yōu)化理解
  • 石家莊網(wǎng)站建設(shè).神鹿網(wǎng)絡(luò)網(wǎng)站關(guān)鍵詞排名優(yōu)化工具
  • 在線看私人不收費(fèi)不登錄網(wǎng)絡(luò)優(yōu)化工程師簡(jiǎn)歷
  • 一個(gè)好的網(wǎng)站需要具備什么深圳網(wǎng)站維護(hù)
  • 有關(guān)中國(guó)文明網(wǎng)聯(lián)盟網(wǎng)站建設(shè)活動(dòng)方案seo排名優(yōu)化軟件有用嗎
  • wp rocket wordpress重慶seo是什么
  • 剛做的網(wǎng)站怎么知道有沒(méi)有潛在的今日國(guó)際軍事新聞?lì)^條
  • 大興快速網(wǎng)站建設(shè)公司百度在線入口
  • 怎么做網(wǎng)站平臺(tái)產(chǎn)品營(yíng)銷(xiāo)
  • 馬鞍山 做網(wǎng)站aso優(yōu)化的主要內(nèi)容
  • 在越南做網(wǎng)站需要什么企業(yè)推廣公司
  • 咸陽(yáng)網(wǎng)站建設(shè)學(xué)校代發(fā)軟文