技能一覧 › 大学数学 アルゴリズムと計算量

ハッシュの衝突の期待値

一様ハッシュのチェイン法で、衝突する組の個数・キーを 2 個以上含むバケットの個数・最初の衝突までの挿入回数 などの期待値を求められる

前提

この技能までの道筋(70 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 樹形図で数え上げる (算数 場合の数)
  2. 積の法則と和の法則 (算数 場合の数)
  3. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  4. 順列・円順列・重複順列 (数学A 場合の数と確率)
  5. 組合せ (数学A 場合の数と確率)
  6. 確率の定義と和事象・余事象 (数学A 場合の数と確率)
  7. 期待値 (数学A 場合の数と確率)
  8. 確率変数と確率分布 (数学B 統計的な推測)
  9. 平均と合計 (算数 いろいろな文章題)
  10. 平均値・中央値・最頻値 (中学数学 データの活用)
  11. 代表値(平均値・中央値・最頻値) (数学I データの分析)
  12. 分散と標準偏差 (数学I データの分析)
  13. 変量の変換と平均・分散 (数学I データの分析)
  14. 確率変数の期待値・分散と (数学B 統計的な推測)
  15. 確率変数の和と積(独立な場合) (数学B 統計的な推測)
  16. 指示変数と期待値の線形性 (大学数学 アルゴリズムと計算量)
  17. 条件付き確率と乗法定理 (数学A 場合の数と確率)
  18. 独立な試行と反復試行 (数学A 場合の数と確率)
  19. 分数のたし算・ひき算 (算数 計算と数のきまり)
  20. 小数の四則計算 (算数 計算と数のきまり)
  21. 正負の数の加法・減法 (中学数学 数と式)
  22. 分数のかけ算・わり算 (算数 計算と数のきまり)
  23. 四則の混じった計算の順序 (算数 計算と数のきまり)
  24. 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
  25. 分配法則を使った計算のくふう (算数 計算と数のきまり)
  26. 文字式の計算(同類項・分配法則) (中学数学 数と式)
  27. 乗法公式による展開 (中学数学 数と式)
  28. 因数分解 (中学数学 数と式)
  29. 3 次式までの展開と因数分解 (数学I 数と式)
  30. 微分係数と導関数の定義 (数学II 微分法と積分法)
  31. 多項式の微分 (数学II 微分法と積分法)
  32. 小数と分数のまじった計算 (算数 計算と数のきまり)
  33. 逆算(□ を求める) (算数 計算と数のきまり)
  34. 1 次方程式の解き方 (中学数学 方程式)
  35. 比例・反比例の式とグラフ (中学数学 関数)
  36. 約数の見つけ方 (算数 整数の性質)
  37. 素因数分解と約数の個数 (算数 整数の性質)
  38. 平方根の意味と根号の簡単化 (中学数学 数と式)
  39. 関数 の式と変域 (中学数学 関数)
  40. 平方完成と 2 次関数のグラフ (数学I 2次関数)
  41. 2 次不等式 (数学I 2次関数)
  42. 剰余の定理・因数定理と高次方程式 (数学II 複素数と方程式)
  43. 増減表と極値 (数学II 微分法と積分法)
  44. 等間隔にならんだ数の和 (算数 計算と数のきまり)
  45. 等差・等比数列の和と Σ (数学B 数列)
  46. 数列の極限 (数学III 極限)
  47. 関数の極限 (数学III 極限)
  48. 関数の連続性と中間値の定理 (数学III 極限)
  49. 平均値の定理 (数学III 微分法)
  50. 積と商の微分 (数学III 微分法)
  51. 第 2 次導関数とグラフの凹凸 (数学III 微分法)
  52. 合成関数の微分 (数学III 微分法)
  53. 円の周の長さと面積 (算数 平面図形)
  54. おうぎ形の弧の長さと面積 (算数 平面図形)
  55. 弧の長さからおうぎ形の中心角と面積を求める (中学数学 平面図形)
  56. 三角形・四角形の面積 (算数 平面図形)
  57. 三平方の定理 (中学数学 相似と三平方の定理)
  58. 特別な直角三角形の辺の比 (中学数学 相似と三平方の定理)
  59. 弧度法と単位円による三角関数 (数学II 三角関数)
  60. の極限 (数学III 極限)
  61. 加法定理と 2 倍角・半角・積和の公式 (数学II 三角関数)
  62. 三角関数の導関数 (数学III 微分法)
  63. 根号の乗除と加減 (中学数学 数と式)
  64. 指数の拡張と指数関数 (数学II 指数関数と対数関数)
  65. 対数の定義と性質 (数学II 指数関数と対数関数)
  66. 自然対数の底 (数学III 極限)
  67. 指数関数・対数関数の導関数 (数学III 微分法)
  68. 増減・凹凸・漸近線とグラフ (数学III 微分法)
  69. テイラー展開 (大学数学 微分積分)
  70. ハッシュの衝突確率(誕生日問題) (大学数学 暗号理論)

説明

チェイン法のハッシュ表では、各バケットがキーのリストを持ちます。同じバケットに入ったキーどうしは「衝突」したことになり、リストが長くなるほど探索に時間がかかります。この技能では、 個のキーを 個のバケットに一様に入れたときの「衝突する組の個数」「キーを 2 個以上含むバケットの個数」「最初の衝突が起こるまでの挿入回数」の期待値を、指示変数と期待値の線形性を使って求めます。表の大きさ をどう決めるかなど、ハッシュ表の性能を見積もる場面で使います。

なぜそうしてよいのか

一様ハッシュのモデルでは、各キーは 個のバケットのどれかに確率 ずつで入り、キーごとの行き先は互いに独立だとします。数えたい量を「小さな事象が起きたら 1、起きなければ 0」という指示変数の和に分けます。期待値の線形性は独立性を必要としないので、各事象の確率を足すだけで期待値が求まります。たとえば相異なるキー の組ごとに「同じバケットに入る」という事象を考えます。 の行き先が の行き先と一致する確率は です。組は 個あるので、衝突する組の個数の期待値は です。バケット ごとに「キーを 2 個以上含む」という事象を考えると、反復試行の確率から が得られます。これを 倍したものが、キーを 2 個以上含むバケットの個数の期待値です。

最初の衝突までの挿入回数 は、「何番目に入れたキーが、すでにキーのあるバケットに初めて入ったか」を表します。 は正の整数値をとり、鳩の巣原理から です。正の整数 は、 のうち をみたすもの( の 個)を数えた値に等しくなります。つまり と指示変数の和で書けます。線形性から です。

事象「」は「最初の 個のキーがすべて異なるバケットに入る」ことと同じです。乗法定理で順に掛ければ となり、これは誕生日問題の「すべて異なる確率」そのものです。 では 、 では になります。

手順

  1. モデルを確認する:キー 個、バケット 個で、各キーは独立に確率 ずつで各バケットに入る。

  2. 数えたい量を指示変数の和に分ける。衝突する組なら組 ごと、2 個以上含むバケットならバケットごとに指示変数を置く。最初の衝突時刻なら と書く。

  3. 各事象の確率を求める。組が衝突する確率は 、バケットが 2 個以上含む確率は 、 である()。

  4. 期待値の線形性で確率を足し合わせる。たとえば と計算する( の項は )。

例題

バケットが 個のチェイン法のハッシュ表に、キーを 1 個ずつ挿入する。各キーは独立に確率 ずつでどれかのバケットに入るとする。すでにキーのあるバケットに初めてキーが入ったときの挿入回数(何個目のキーか)を とする。 を求めよ。

例題の解答

手順 1:キーは独立に確率 ずつで各バケットに入る。バケットは 4 個なので、鳩の巣原理より である。

手順 2: は正の整数なので と書ける。よって である。

手順 3: は「最初の 個がすべて異なるバケットに入る」ことである。乗法定理より、各項は次のとおり。
-
-
-
-
-
- では

手順 4:足し合わせる。

(検算)分布を直接求めると次のとおり。
-
-
-
-

よって となり、一致する。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題