アルゴリズムと計算量の問題
番号 の 個のビットからなるブルームフィルタを考える。最初はすべてのビットが である。このフィルタは 個のハッシュ関数 を使い、次のように動作する。
- 要素 を挿入するときは、ビット とビット を にする( のときは、そのビット 個だけが になる)。
- 要素 を問い合わせるときは、ビット とビット がともに であれば「含まれる」と答え、そうでなければ「含まれない」と答える。
互いに異なる 個の要素 をこの順に挿入したあと、 のどちらとも異なる要素 を問い合わせる。ここで、 個の値 は互いに独立で、それぞれ のどれかに等確率 で定まるとする。
について誤って「含まれる」と答える確率(偽陽性の確率)を求めよ。
この問題で使うもの
- 確率の定義と和事象・余事象(説明と入口の問題)
- 独立な試行と反復試行(説明と入口の問題)
- 条件付き確率と乗法定理(説明と入口の問題)
この問題を解けるようになるまで(8 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
のハッシュ値 が一致する場合と一致しない場合に分け、それぞれで「調べるビットがすべて である確率」を求めましょう。
ヒント 2
挿入で にされる位置は独立な 個の値です。特定のビットが のままである確率は 、特定の異なる ビットがともに である確率は です。 ビットがともに である確率は包除原理で求められます。
ヒント 3
とおくと、求める確率は と表せます。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
挿入によって にされうる位置は の 個で、これらは互いに独立に 〜 を等確率でとる。
まず、次の つの確率を求めておく。
- 特定のビット が挿入後も である確率は、 個の位置がすべて 以外になる確率なので
- 異なる 個のビット がともに である確率は、 個の位置がすべて 以外になる確率なので
のハッシュ値は のハッシュ値と独立なので、 と が一致するかどうかで場合を分ける。
(1) のとき(確率 ): そのビット 個が であれば「含まれる」と答えるので、条件付き確率は 。
(2) のとき(確率 ): 異なる 個のビット がともに である確率を求める。事象 :「ビット が 」、:「ビット が 」とすると、包除原理より
よって、求める確率は
ここに値を代入すると
なお、ビットが である確率 を 乗した は答えにならない。 個のビットの状態は独立ではなく、また となる場合もあるからである。
別解
を挿入したあとに になっているビットの集合を とする。 は の 個の値に現れる相異なる値の集合で、 とおく。 の 個のハッシュ値は と独立で、それぞれ確率 で各ビットに定まるので、 が与えられたとき偽陽性となる条件付き確率は である。\n\n 個の値(各 通り、全 通り)のうち、相異なる値がちょうど 種類となる場合の数は\n- : \n- : \n- : \n- : \n\n合計 で一致する。\n\n偽陽性の確率は\n\n\n検算: 。 の確率 で 、 の確率 で 、 の確率 で 、 の確率 で を寄与し、 となり一致する。