ブルームフィルタ

背景ノート

特にデータの分野におけるコンピュータ分野でのハッシュ関数は、すぐに暗号化の非常に広い分野で、見つけます。

その役割は、(これらの小さなデータセットは、ハッシュ値やハッシュ値と呼ばれる)上記の小さなデータに大きなデータセットをマッピングすることです。

ハッシュテーブルに直接データ構造にアクセスするには、ハッシュ値(キー値)に基づいて、(ハッシュテーブルは、また、ハッシュテーブルと呼ばれます)。換言すれば、検索を高速化する位置にテーブルにマッピングされたハッシュ値がアクセスし記録します。以下は、典型的な概略図です。

しかし、いくつかの問題があるこの単純なハッシュテーブルは、質問ハッシュの競合があります。ハッシュ関数は、我々は、m個のアレイ・ポイントの長さをビットならば、我々は1%などの衝突速度を低減したい場合は、ハッシュテーブルのみ* 1%の元素Mを受信することができ、良好な仮定です。明らかに、これは効果的なスペース(スペース効率)と呼ばれることはありません。

   

ブルームフィルタの概要

ブルーム(バートン・ハワードブルーム)によって提案されたブルームフィルタ1970。実際にランダムバイナリーベクター及びマッピング関数(ハッシュ関数)の長いシリーズです。ブルームフィルタは、以下の場合にセット内の要素を取得するために使用することができます。利点は、スペース効率で、クエリ時間は、一般的なアルゴリズムよりもはるかに多くのです。ブルームが広くなどのクエリを、必要とする種々の用途に使用されるフィルタ。

   

Googleの有名なBigtableでは見つけるために、ディスクIOの数を減らすために何行または列が存在しない見つけるために、分散データベースブルームフィルタを使用しています。

   

多くのキーと値のシステムでも、このような一般的にはHBaseの、Accumulo、Leveldb、などの問い合わせのプロセスをスピードアップするためにブルームフィルタに使用され、値がディスク上に保存され、ディスクアクセスは、多くの時間がかかりますが、あなたは、ブルームフィルタを使用することができますすぐそこに対応する値は、このように多くの不要なディスクIO操作を避けて、ですが、Rubuロングフィルタは、いくつかのメモリ消費をもたらす引用かどうかを判断するためのキー。

   

ブルームフィルタの原理

要素がコレクション内にないかどうかを判断したい場合は、一般的な考えが一緒にすべての要素を保存することで、その後の比較により決定します。リストなどのデータ構造、木は、このアイデアである。しかし、要素のコレクションの増加に伴い、我々はより多くのストレージを必要とする、検索速度が遅く、遅くなっています。

   

ブルームフィルタは、mビットのビットベクトル(B1、... BM)、0ビットベクトルの初期値に基づいています。さらに、ハッシュ関数のシリーズ(H1、... HK)ハッシュ関数の範囲1〜Mに属します。以下、フィルタインサートX、Y、Z及びWは、概略図に設定されたデータの値か否かが判断されるブルームです。

ただし、ブルームフィルタの明らかな欠点と利点など。誤算率(偽陽性)はその一つです。堆積要素の数、誤算率が増加します。要素の数が少なすぎる。しかし、その後、ハッシュテーブルを使用することは十分です。

   

概要:ブルームフィルタは、通常はすぐに要素がセットに属しているかどうかを判断するために、いくつかの必要性に使用されるが、厳密に100%正しい機会を必要とされていません。また、リードRubuロングフィルタは、いくつかのメモリ消費をもたらすでしょう。

   

   

   

   

工場

おすすめ

転載: www.cnblogs.com/shuzhiwei/p/11316547.html