999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

針對動態集的矩陣型Bloom filter表示與查找

2008-12-31 00:00:00肖明忠王佳聰閔博楠
計算機應用研究 2008年7期

摘 要:提出一種針對動態集合的矩陣型Bloom filter表示與查找法(matrix Bloom filter,MBF),它使用一個s×m位矩陣對數據集合進行哈希表示與查找,較同類算法SBF和DBF,能繼承Bloom filter算法常數查找開銷的基本精髓。

關鍵詞:Bloom過濾器;動態集;拆分型Bloom filter;動態性Bloom filter;矩陣型Bloom filter

中圖分類號:TP391 文獻標志碼:A

文章編號:1001-3695(2008)07-2001-03

Matrix Bloom filter on dynamic set

XIAO Mingzhong,WANG Jiacong,MIN Bonan

(Networking Laboratory,School of Electronic Engineering Computer Science, Peking University, Beijing 100871, China)

Abstract:This paper presented matrix Bloom filter (MBF), which used as×m bit matrix for data represent and query.Compared to SBF and DBF, it more accurately represented the essential characteristics of Bloom filter for its constant query time.

Key words:Bloom filter;dynamic set;split Bloom filter(SBF);dynamic Bloom filter(DBF);MBF

0 引言

表示和查找信息是大多數計算機應用程序的核心,這兩個過程是密切相關的。例如,采用順序表表示信息則可以使用折半查找;采用哈希表組織信息則可以使用哈希查找。表示就是以計算機能處理的方式把信息組織成為可計算的實體;查找就是確定一個具有特定值的元素是不是一個特定集合的成員[1]。

Bloom filter使用一個位串對數據集合進行哈希表示與查找,其基本精髓體現在壓縮表示和常數查找開銷,近年來在大規模分布式系統中得到了廣泛應用[2]。如圖1所示的P2P文件共享系統結構模型中,Bloom filter扮演了一個很重要的角色。

每個對等用戶都有很多的文件要共享,在節點之間互相傳遞共享的文件元數據信息將會消耗掉大量的時間和帶寬。利用Bloom filter,每個節點都可以將它所擁有的資源表示成一個位串,然后再將這些位串發送給附近的超級節點。這樣,每個超級節點就收集有附近節點的共享信息。

假設節點P5想要查找在對等網絡中哪個節點上的文件f,它首先將這個請求發送給超級節點2。超級節點2在自己所收集的Bloom filter串集合中進行查找,如果在超級節點2沒有找到文件f,這個查詢請求就會被以flooding方式轉發給其他所有超級節點處理,直到查詢包TTL值為零或是在某個超級節點找到目標文件f的位置。

Bloom filter的主要改進型包括壓縮型Bloom filter[3]、計數型Bloom filter[4]、空間碼Bloom filter[5]以及光譜型Bloom filter[6],所有這些表示與查找算法都是針對靜態集合設計。然而在實際的應用系統中,只有很少的系統使用靜態集,絕大多數的應用處理的是動態數據集合。動態型Bloom filter(DBF)[7]和拆分型Bloom filter(SBF)[8]可以支持動態集合的表示和查找,但是它們均違背了Bloom filter查找常數開銷的基本精髓。

1)相關工作

(1)Bloom filter[9]

Bloom filter使用長為m的位串V表達數據集合A={a1,a2,…,an}。在初始的時候,位串的所有位都是0。設有k個具有均勻分布特性的哈希函數h1,h2,…,hk,且x∈A,hi(x)∈{1,2,…,m}。對每一個集合A中的元素x,利用k個哈希函數將位串的第hi(x)位置為1。最后,數據集合A被壓縮表示成一個Bloom filter位串。查找某個元素是否屬于該集合時,只需使用這些哈希函數作用該元素,查看位串相應的位是否為1即可。

上述表示法由于哈希函數的沖突性,會導致某個元數不屬于集合A,而被誤稱屬于的可能性,簡稱誤稱率。假設hash函數是均勻隨機分布的,一個元素被誤稱的概率可作如下定義: 令p表示位串中的某位在對n個集合元素表示結束時仍為0的概率,顯然p=(1-1/m)nk≈e-nk/m。式(1)中的PerrBF(m,k,n)就是表示算法的誤稱率。

PerrBF(m,k,n)=(1-p)k≈(1-e-kn/m)k(1)

(2)動態型Bloom filter

DBF的基本思想是把一個動態集合A表示成一個s×m的位矩陣,這個位矩陣是由s個標準的Bloom filter位串組成。s的初始值為1,但是它可以隨著集合元素的持續增長而不斷增大,如圖2所示。

在初始化時,s被設置成1,所以Bloom filter 1就是當前的活躍Bloom filter位串。在每次向Bloom filter位串中加入元素時,檢查當前的活躍Bloom filter位串中的元素是否達到了設定的上限值n0。如果沒有,就把元素表示到當前活躍的Bloom filter位串中。如果達到了上限值,則首先把當前的活躍Bloom filter位串設置成不活躍,然后創建一個新的Bloom filter位串來作為當前的活躍Bloom filter位串,把s的值加1。然后用同樣的方法把元素表示到當前的活躍Bloom filter位串中。易知,DBF中只有最后一個Bloom filter位串永遠是活躍的,這意味著它的元素個數沒有達到n0,且它之前的所有Bloom filter位串都被設置成不活躍。

(3)拆分型 Bloom filter

SBF使用不變的s×m的位矩陣來表示一個集合。這里s是一個常量,必須按照對集合尺寸的最大值的估計預先確定好。這種估計可能是基于集合尺寸增長的歷史記錄或者其他的一些因素,其工作原理如圖3所示。在每次添加表示元素前,隨機選擇一個Bloom filter位串,然后按照傳統Bloom filter算法進行表示。假設所選擇方法是完美隨機的,則所有的Bloom filter位串中表示的元素個數都應該是相同的,其值為n/s。

2)本文貢獻

盡管DBF和SBF都聲稱它們使用s×m的位矩陣來表示一個動態集合A,但是實際上它們不是真正的矩陣表示法。因為矩陣必須是二維的,有行向量和列向量。基于這種基本的定義,DBF和SBF所使用的不過是s個m位的Bloom filter位串,而不是一個s×m的位矩陣。此外,這兩種表示法在查找一個集合元素時,都需要遍歷s個Bloom filter位串,所以它們查找一個元素的平均時間復雜度為O(k(s+1)/2)。s是由集合中元素的個數n決定的,所以平均時間復雜度近似為O(n),而不是一個常數。這偏離了傳統Bloom filter表示法O(k)常數查找開銷的基本精神。

本文設計了一種新的Bloom filter——矩陣型Bloom filter,用來表示一個動態集合。它使用s×m的位矩陣,而不是s個m位的Bloom filter串。并且,MBF可以把平均時間復雜度限制在常數時間開銷。

1 矩陣型Bloom filter

MBF的基本思想是將動態集合A表示成一個s×m的位矩陣,這個位矩陣擁有s行和m列。這里s是一個常量,必須按照對集合尺寸的最大值的估計而預先確定好。

為了達到平均時間復雜度為O(k)這個目標,本文設計了一種方法來快速地定位元素所要加入的行。當執行查詢的時候,檢查一行中的k個位是否都被置成了1需要花費的時間為O(k),因此,定位該行所需要的時間必須為一個常數。使用哈希函數來完成這項任務,在每個元素添加之前,MBF會使用一個哈希函數來指定該元素所要加入的行。

為了構建一個MBF,必須首先按照應用的需要確定m和每一行的誤稱率,而且還要計算hash函數的個數k以及每一行所能容納的最大的元素個數n0。

1)算法設計

算法1 將一個元素添加到MBF中

addElement(object element)

bitMatrix MBF_addElement(bitMatrix MBF,object ele)

{

if(MBF == 1){

MBF=new bitMatrix();

}

int row=h1(ele);

for(int i=2; i<=k+1; i++){

MBF[row][hi(ele)]=1;

}

return MBF;

}

算法2 將集合A中的所有元素添加到MBF中

represent (set A, int s, int m)

bitMatrix MBF_represent(set A, int s, int m)

{ 

bitMatrix MBF=new bitMatrix(s,m);

for(int j=1;j<=n;j++){

MBF=MBF_addElement(MBF, A[j]);

}

return MBF;

}

在每個元素添加之前,需要確認這個元素應該被添加到哪一行中,所以使用第一個hash函數h1來做這項工作。h1是一個特殊的hash函數,不同于在MBF中用到的其他hash函數。因為MBF有s行,h1的hash范圍為{1,…,s};而其他hash函數的范圍為{1,…,m},因為MBF有m列。因此,在構建MBF前,hash函數的個數k不是真正用在MBF中的個數。實際上,將要使用k+1個hash函數,其中h1是被特別定義的。當要添加一個元素到MBF中時,首先使用hash函數h1來決定行,參見算法1中的語句:row=h1(ele);然后在這一矩陣行中,使用其余的hash函數h2到 hk+1,對于2≤i≤k+1,將hi(ele)位置為1。假設哈希函數h1是完美隨機的,這樣,每一行中的元素個數應該是相同的,均為n/s。其工作原理如圖4所示。

一旦一個動態集合A被表示成了MBF,可以通過算法3來檢查一個元素x是否是集合A的一個元素。

算法3 query(bitMatrix MBF,object ele)

boolean MBF_Query(bitMatrix MBF,object ele)

{ 

int i=2;

int row=h1(ele);

while(MBF[row][hi(ele)]==1 i<=k+1);

i++;

if(i≤k+1)

return 1;

else return true;

}

這個算法的主要過程如下:對于元素x,首先利用hash函數h1計算這個元素可能被添加到哪一行中;然后在這一行中,對于2≤i≤k+1,檢查是不是所有的hi(x)位都被置為1。如果不是,可以確定x不是集合A的一個元素;否則,可以以一定的誤稱率認為x是集合A的一個元素。

2)算法分析

從平均時間復雜度和誤稱率的角度來對算法進行理論分析。為了計算平均時間復雜度,本文把元素的添加過程分為兩步:a)使用特殊定義的哈希函數h1來決定元素應該被添加到哪一行,這會花費O(1)的時間;b)使用其余的k個哈希函數把元素對應的位置映射為1,這會花費O(k)的時間。因此,添加一個元素到MBF中的平均時間復雜度為O(k)。從MBF中查詢一個元素的平均時間復雜度,其計算過程和添加一個元素類似。因此,查詢過程的平均時間復雜度也是O(k),是一個常數時間。

通過以上的分析可以看到,MBF在查找的平均時間復雜度上比起DBF和SBF要好。下面討論MBF的誤稱率。

如果一個元素x不是動態集合A的一個成員,但在MBF中查詢時,MBF卻返回“yes”,則誤稱便發生了。這個概率可以用下面的方法來計算。首先假設hash函數是完全隨機的,那么在每一行中,所添加進的元素的個數均為n/s。對于1≤i≤s,MBF的第i行的行誤稱率為PBFerr(m,k,n/s),則MBF中所有的Bloom filter矩陣行都不誤稱的概率為

(1-PBFerr(m,k,n/s))s

因此,至少有一個Bloom filter矩陣行誤稱的概率(也就是整個MBF的誤稱率)為

PMBFerr(m,k,n)=1-(1-PBFerr(m,k,n/s))s=1-(1-e-kn/ms)k)s(2)

2 比較研究

下面將比較MBF和傳統的Bloom filter的性能,平均時間復雜度和誤稱率是性能的兩個重要量度。

對MBF來說,添加和查詢算法的平均時間復雜度均為O(k),對傳統的Bloom filter來說,平均時間復雜度也都為O(k)。因此,MBF在平均時間復雜度上并不比傳統的Bloom filter有優勢;但是在誤稱率上,它們的表現是不同的。

本文用傳統的Bloom filter和MBF來表示同一個動態集合A。對于傳統的Bloom filter,誤稱率可以被如下計算:

PerrBF(m,n,k)=(1-e-kn/ms)k

在MBF中,誤稱率為

PerrMBF(m,n,k)=1-(1-(e-kn/ms)k)s

在MBF和傳統的Bloom filter中用到的哈希函數的個數設定為5,MBF中的行誤稱率與傳統的Bloom filter相同。比較結果如圖5所示。

從圖5中可以看到,為了表示同一個動態集合A,MBF可以獲得更好的誤稱率;并且,MBF的行數越多,誤稱率越低。同時,相比于傳統的Bloom filter,MBF可以更好地支持集合大小n的增長。誠然,MBF使用s倍的空間開銷。

下面將把MBF應用在一個流行的P2P文件共享應用Maze系統[10]中。內容控制是Maze系統的一項重要功能,用于實現系統范圍內非法共享內容的過濾。中心服務器維持著一個被禁止共享文件的列表,每一個用戶在登入系統時會從中心服務器獲得這個禁止列表。禁止列表是一個動態集合,可能有成千上萬項,每一項包含有被禁止文件的屬性,如MD5值、文件大小等。從中心服務器發送這個禁止列表到各個用戶會花費掉很多時間和帶寬,并且,維護這個巨大的禁止列表也會占用很多空間。因此,使用Bloom filter會使情況好很多。

在接下來的實驗中把禁止列表表示成一個MBF,然后同未使用MBF時比較系統的性能。

首先需要確定MBF中每一行的長度m。在這個實驗中會使用到五個MBF:m=2n, m=3n, m=5n, m=10n以及 m=30n。在MBF中所使用到的哈希函數的個數為5,設定的最大誤稱率為10-4。帶寬的消耗如圖6所示。

用戶向中心服務器請求禁止列表時的延遲情況如圖7所示。這里的延遲是指,從用戶向服務器發出請求,直到該用戶得到禁止列表的總的時間。

比起直接交換原始禁止共享列表來說,MBF可以很好地節省帶寬消耗和縮小獲取列表的延遲。 

3 結束語

Bloom filter使用一個位串對靜態數據集合進行壓縮表示并支持哈希查找操作,近年來在大規模P2P系統中得到了廣泛應用。DBF和SBF使用多個Bloom filter位串來實現動態集合的表示與查找,但它們均違背了Bloom filter常數查找開銷的精髓。本文提出了MBF用來表示動態集合,其在哈希表示的同時也完全能做到哈希查找。通過對MBF算法進行的分析證明了其在平均時間復雜性和誤稱率方面的良好特點,并被實際用于指導Maze系統非法共享內容過濾功能的設計。

參考文獻:

[1]

SHAFFER C A.Data structures and algorithm analysis[M].[S.l.]:Prentice Hall,1997.

[2]肖明忠,代亞非.Bloom filter及其應用綜述[J].計算機科學,2004,31(4):180184.

[3]MITZENMACHER M.Compressed Bloom filters[C]//Proc of Annual ACM Symposium on Principles of Distributed Computing.New York:ACM Press,2001:144150.

[4]FAN Li,CAO Pei,ALMEIDA J,et al.Summary cache:a scalable widearea Web cache sharing protocol[J].IEEE/ACM Trans on Networking,2000,8(3):281-293.

[5]KUMAR A,XU Jun,WANG Jia,et al.Spacecode Bloom filter for efficient perflow traffic measurement[C]//Proc of the 23rd Annual Joint Conference on IEEE Computer and Communications Societies.Hong Kong:IEEE Press,2004:17621773.

[6]COHEN S,MATIAS Y.Spectral Bloom filters[C]//Proc of ACM SIGMOD International Conference on Management of Data.New York:ACM Press,2003:241-252.

[7]GUO D,WU Jie,CHEN Honghui,et al.Theory and network application of dynamic Bloom filters[C]//Proc of the 25th IEEE International Conference on Computer Communications Proceedings.2006:112.

 [8]肖明忠,代亞非,李曉明.拆分型Bloom filter[J].電子學報,2004,32(2):241-245.

[9]BLOOM B.Space/time tradeoffs in hash coding allowable errors[J].Communications of the ACM,1970,13(7):422-426. 

[10]Maze系統[EB/OL].http://maze.pku.edu.cn.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 四虎影视国产精品| 国产va在线| 国产美女精品人人做人人爽| 成人欧美日韩| 99久视频| 2021天堂在线亚洲精品专区| 久久久久亚洲精品成人网| 亚洲人成色77777在线观看| Jizz国产色系免费| 伊人成人在线| 欧美α片免费观看| 亚洲国产成人麻豆精品| 女人18毛片一级毛片在线| 亚洲国产精品无码AV| 伊人无码视屏| 91精品国产福利| 97se亚洲综合在线天天 | av一区二区人妻无码| 亚洲爱婷婷色69堂| 中文字幕无码电影| 2021国产精品自产拍在线观看| 99热国产这里只有精品无卡顿"| 69av免费视频| 国产在线精品香蕉麻豆| 伊人精品成人久久综合| 强奷白丝美女在线观看| 九九九国产| aa级毛片毛片免费观看久| 在线欧美一区| 直接黄91麻豆网站| 欧美日韩国产一级| 青青青国产精品国产精品美女| 国产日韩AV高潮在线| 国产免费看久久久| 欧美日韩成人在线观看| 91久久偷偷做嫩草影院免费看| 一本大道香蕉高清久久| 91免费观看视频| 久久综合AV免费观看| 日韩A∨精品日韩精品无码| 中文字幕在线视频免费| 色欲国产一区二区日韩欧美| 亚洲国产亚洲综合在线尤物| 欧美中文字幕在线二区| 国产午夜人做人免费视频中文| 一区二区三区四区在线| 国产特级毛片aaaaaaa高清| 伊人久久久久久久| 日本黄网在线观看| 她的性爱视频| 亚洲国产av无码综合原创国产| 成人小视频网| 免费日韩在线视频| 东京热av无码电影一区二区| 欧美在线黄| vvvv98国产成人综合青青| 毛片基地视频| 亚洲美女AV免费一区| 国产十八禁在线观看免费| 成年人午夜免费视频| 国产91在线|中文| 制服丝袜一区二区三区在线| 中文字幕有乳无码| 日韩在线1| 久久久国产精品无码专区| 日韩123欧美字幕| 亚洲女同欧美在线| 国产大片黄在线观看| 污网站在线观看视频| 欧美日韩精品一区二区视频| 亚洲中文字幕无码爆乳| 狼友视频国产精品首页| 人人爽人人爽人人片| 精品一区二区无码av| 国产在线精品99一区不卡| 日本午夜影院| 国产成人综合久久| 四虎永久在线精品影院| 色偷偷一区二区三区| A级毛片无码久久精品免费| 少妇露出福利视频| 亚洲视频一区|