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

アルゴリズムと計算量の問題

難易度 3期末試験の応用レベル大学数学 アルゴリズムと計算量

番号 の 個のセルからなる、線形探査法(オープンアドレス法)のハッシュ表がある。最初はすべてのセルが空である。この表に、互いに異なる 個のキーを 個ずつ順に挿入する(削除は行わない)。

キー を挿入するときは、ハッシュ値 から始めて、セル (番号は を法として考え、セル の次はセル とする)の順に調べ、最初に見つかった空のセルにキーを格納する。調べたセルの個数(キーを格納した空のセルも 個と数える)を、その挿入の探査回数とよぶ。

各キーのハッシュ値は のどれかに等確率 で定まり、キーどうしのハッシュ値は互いに独立であるとする。 個のキーの挿入における探査回数の合計の期待値を求めよ。

この問題で使うもの

この問題を解けるようになるまで(71 技能)
算数中学高校大学大学院

読み込み中…

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

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

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

期待値の線形性を使い、 番目の挿入の探査回数の期待値を ごとに求めて足す。各挿入の期待値は、その直前の表の「埋まったセルの連続部分(ブロック)」の長さの組だけで決まる。

ヒント 2

長さ のブロックの中にハッシュ値が落ちたときの探査回数の和は なので、探査回数の期待値は と書ける。

ヒント 3

個目をセル に固定すると、2 個挿入後は「隣接」が確率 、それ以外が で、。3 個挿入後のブロック構成 の確率を場合分けで求める。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

期待値の線形性より、 番目()の挿入の探査回数の期待値 を求めて足せばよい。

ブロックによる表し方. ある時点で、埋まっているセルが連続して並ぶ極大な部分(環状に考える)をブロックとよぶ。挿入するキーのハッシュ値が長さ のブロックの先頭から 番目()のセルなら、そのブロックの残り 個の埋まったセルと、その直後の空のセル 個を調べるので、探査回数は である。ハッシュ値が空のセルなら探査回数は である。ハッシュ値は 個のセルに等確率なので、埋まったセルが 個以下(つねに空のセルがある)のとき

となる。

. 表は空なので 。

. ブロックは長さ が 個なので 。

2 個挿入後の状態. 回転対称性より、 個目のキーはセル に入ったとしてよい。 個目のハッシュ値 によって
- のとき占有 、 のとき :隣接(確率 )
- :間が つ空いた セル(確率 )
- :向かい合う セル(確率 )

. 隣接ならブロック で 、それ以外はブロック で 。よって

3 個挿入後の状態. 占有セルを (隣接)とすると、 のときキーはセル に、 のときセル に入り、長さ のブロックになる( 通り)。 のときはブロック ( 通り)。
占有セルを とすると、 でブロック ( 通り)、 でブロック ( 通り)、 でブロック ( 通り)。
占有セルを とすると、どの でもブロック になる。
したがって

(和は になる。)

. はブロック で 、 で 、 で なので

合計.

別解

線形探査法では、 個のキーを挿入した直後の占有セルは、空きセルの直後から始まる連続した占有セルの塊(巡回的に数える)に分かれる。長さ の塊に対し、ハッシュ値がその塊の先頭から 番目()のセルなら、探査回数は である。ハッシュ値が空きセルなら探査回数は である。したがって次の挿入の探査回数の期待値は

となる。

個挿入後の塊の分布を求める。長さ の塊が複数あるとき、その占有パターンになるハッシュ列の数は である。各塊の中は駐車関数の個数 で数え、キーをどの塊に振り分けるかを多項係数で数える。

の期待値を とおく。
- : 。
- : なので 。
- : 隣接する 2 セルは 6 通りで、重みは各 、。隣接しない 2 セルは 9 通りで、重みは各 、。総重み 。よって 。
- : 長さ 3 の塊は 6 通りで、重みは各 、。長さ 2 と長さ 1 の塊は 12 通りで、重みは各 、。長さ 1 の塊が 3 つ並ぶ配置は 2 通りで、重みは各 、。総重み 。よって 。

。

期待値の合計は

検算として、各 の総重みが に一致することを確認した( で 、 で )。

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題