Bloom Filter是一種空間效率很高的隨機數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組很簡潔地表示一個集合莺奔,并能判斷一個元素是否屬于這個集合。Bloom Filter的這種高效是有一定代價的:在判斷一個元素是否屬于某個集合時,有可能會把不屬于這個集合的元素誤認為屬于這個集合(false positive)抓歼。因此败富,Bloom Filter不適合那些“零錯誤”的應用場合悔醋。而在能容忍低錯誤率的應用場合下,Bloom Filter通過極少的錯誤換取了存儲空間的極大節(jié)省兽叮。
集合表示和元素查詢
原理:就是定義n個hash函數(shù) 所有hash函數(shù)的結(jié)果會被限定在m個結(jié)果集 當集合加入元素的時候 會進行n次hash hash的結(jié)果的散布在m個結(jié)果集當中 m個結(jié)果集里 將n次hash的結(jié)果置為1標識
當判斷一個元素是否在這個數(shù)據(jù)集合里的時候 只需要對這個元素做N次hash 然后查看n個結(jié)果 在結(jié)果集里是不是都被置為1 如果是的話 則判斷是這個集合里的(有可能不是) 但是如果不都是被置為1 那么久肯定不是這個集合里的