アルゴリズムと計算量の問題
バケット数 のチェイン法ハッシュ表が最初は空である。この表に、互いに異なる 個のキーを挿入する。各キーのハッシュ値は 個のバケットのどれかに等確率 で定まり、キーどうしのハッシュ値は互いに独立であるとする。 個のキーをすべて挿入し終えたとき、キーを 個以上含むバケットの個数の期待値を求めよ。
この問題で使うもの
- ハッシュの衝突の期待値(説明と入口の問題)
この問題を解けるようになるまで(71 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 樹形図で数え上げる
- 積の法則と和の法則
- 和の法則・積の法則と樹形図
- 順列・円順列・重複順列
- 組合せ
- 確率の定義と和事象・余事象
- 期待値
- 確率変数と確率分布
- 平均と合計
- 平均値・中央値・最頻値
- 代表値(平均値・中央値・最頻値)
- 分散と標準偏差
- 変量の変換と平均・分散
- 確率変数の期待値・分散と
- 確率変数の和と積(独立な場合)
- 指示変数と期待値の線形性
- 条件付き確率と乗法定理
- 独立な試行と反復試行
- 分数のたし算・ひき算
- 小数の四則計算
- 正負の数の加法・減法
- 分数のかけ算・わり算
- 四則の混じった計算の順序
- 正負の数の乗除・累乗と四則混合
- 分配法則を使った計算のくふう
- 文字式の計算(同類項・分配法則)
- 乗法公式による展開
- 因数分解
- 3 次式までの展開と因数分解
- 微分係数と導関数の定義
- 多項式の微分
- 小数と分数のまじった計算
- 逆算(□ を求める)
- 1 次方程式の解き方
- 比例・反比例の式とグラフ
- 約数の見つけ方
- 素因数分解と約数の個数
- 平方根の意味と根号の簡単化
- 関数 の式と変域
- 平方完成と 2 次関数のグラフ
- 2 次不等式
- 剰余の定理・因数定理と高次方程式
- 増減表と極値
- 等間隔にならんだ数の和
- 等差・等比数列の和と Σ
- 数列の極限
- 関数の極限
- 関数の連続性と中間値の定理
- 平均値の定理
- 積と商の微分
- 第 2 次導関数とグラフの凹凸
- 合成関数の微分
- 円の周の長さと面積
- おうぎ形の弧の長さと面積
- 弧の長さからおうぎ形の中心角と面積を求める
- 三角形・四角形の面積
- 三平方の定理
- 特別な直角三角形の辺の比
- 弧度法と単位円による三角関数
- の極限
- 加法定理と 2 倍角・半角・積和の公式
- 三角関数の導関数
- 根号の乗除と加減
- 指数の拡張と指数関数
- 対数の定義と性質
- 自然対数の底
- 指数関数・対数関数の導関数
- 増減・凹凸・漸近線とグラフ
- テイラー展開
- ハッシュの衝突確率(誕生日問題)
- ハッシュの衝突の期待値
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
「ハッシュの衝突の期待値」の技能を使う。数えたい量をバケットごとの指示変数の和 に分け、期待値の線形性で とする。
ヒント 2
1 つのバケットに入るキーの個数は、確率 の反復試行 回で決まる。「 個以上」は余事象「 個または 個」を使うと計算しやすい。
ヒント 3
バケット のキーが 個または 個である確率は 。あとは から引いて 倍する。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
方針:数えたい量「キーを 個以上含むバケットの個数」を、バケットごとの指示変数の和に分けて、期待値の線形性を使う。
手順 1(指示変数に分ける) バケットに と番号をつけ、 に対して
とおく。求める個数は であり、期待値の線形性(独立でなくても成り立つ)から
である。ただし は「バケット にキーが 個以上入る」という事象。
手順 2(1 つのバケットについて確率を求める) バケット に注目する。各キーがバケット に入るかどうかは、確率 で「入る」独立な試行の 回の繰り返し(反復試行)である。余事象「キーが 個または 個」の確率は
よって
対称性から である。
手順 3(足し合わせる)
(確認) 通りの入り方を、各バケットのキー数の型で分けると、 が 通り、 型が 通り、 型が 通り、 型が 通り。 個以上を含むバケット数はそれぞれ なので、合計は 、期待値は となり一致する。
答え:
別解
バケット () に入るキーの個数を とすると、 である。
よって 。
求める個数は なので、期待値の線形性より 。
検算として、 通りのハッシュ値の割り当てを分類する。
- 個数が 型: 通りで、 個以上のバケットは 個。
- 型: 通りで、 個以上のバケットは 個。
- 型: 通りで、 個以上のバケットは 個。
- 型: 通りで、 個以上のバケットは 個。
合計は なので、期待値は となり一致する。