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