前回は📄
(講義ノート)乱択アルゴリズム第7回
ボールとビン
n個のビン、m個のボールがある。各ボールを一様ランダムに選んだビンにいれる。
これはハッシュという有名な応用例がある。そこで、上手いこと衝突は避けたいよね。
誕生日のパラドックスで、Θ(m)の時に衝突する。これは、予想よりも小さい数で衝突するぞ!ということがいえる。
2つ以上のボールがはいるビンの確率
つまり、ハッシュで言うと衝突する確率。
Eiを「i番目のボールがこれまですべて入れてきたビンと違うビンに入っている」という事象だとする。
以下のように、事象としては積集合である。積集合のprodは独立非独立問わず、以下のように条件付き確率で計算できる。
Pr[⋂i=1nEi]=∏i=1nPr[Ei∣⋂j=1i−1Ej]=nn⋅nn−1⋯nm+1=∏i=1m(1−ni−1) ここで、1−x≤e−xを利用して挟めば以下のようにできる。指数関数はまとめて計算できるという利点がある。
∏i=1m(1−ni−1)≤∏i=1mexp(−(i−1)/n)=exp(−(m−1)m/n) これについて、m≥2nlog2+1で1/2を切ることになる。さらに、kn+1と入れ替えれば、上界はexp(−kn(kn+1)/n)≤exp(−k2/n)で抑えられる。
よって、Θ(m)というわけである。
コンプガチャ問題
n個の景品が等確率で現れるガチャで、景品コンプするために引くべき回数の期待値を計算してみる。期待値の線形性や調和級数の評価をすることで、Θ(nlogn)回引く必要があるとわかる。
証明として、丁寧に確率変数を設定して解くのもできる。
最大負荷
ハッシュを考えると、すべての項にΘ(1)個の値が割り当てられるのが望ましい。
Xiをi番目のビンのサイズ=入っている要素数だとする。
m=cnとする。c>1で、チェルノフ上界により、(R=(1+δ)として)
Pr[Xi≥(1+δ)c]≤((1+δ)1+δeδ)c≤((1+δ)1+δe1+δ)c≤(e1+δ)−(1+δ)c≤(ceR)−R この確率は中心からばらける確率。これが、1/n2になるように選ぶとき、こんなふうにUnion Boundを使えるらしい。
Pr[maxXi≥R]≤Pr[⋃i=1nXi≥R]≤∑i=1nPr[Xi≥R]≤n1 もし、(R/(ce))−R<1/n2ならば、以下のようになる。
(ceR)R>n2⇒RlogR±θ(R)≥2logn⇒R=Ω(loglognlogn) 最大負荷はそれになる確率はたかだか1/nで抑えている。
ポアソン分布
Pr[X=k]=k!μke−μE[X]=μ 二項分布について、limn→∞Bi(μn,1/n)でポアソン分布に収束する。
ポアソン分布の和は同様にポアソン分布であり、パラメタはすべてそのまま足し合わせればよい。