アルゴリズムとプログラミング

基本情報技術者試験ハッシュ表の負荷率」の問題

テクノロジ系アルゴリズムとプログラミング計算問題難易度:easy
スロット数が500のハッシュ表に、現在350個のデータが格納されている。このハッシュ表の負荷率(占有率)はいくらか。
負荷率は約1.43
およそ0.35
0.7
おおよそ0.5付近
正解
0.7

ハッシュ表の負荷率はα=格納データ数÷スロット数で定義される。350÷500=0.7となり、表の7割が埋まっている状態を表すため正しい。

?選択肢ごとの解説

ア ×約1.43は500÷350であり、分子と分母を逆に取ったため負荷率が1を超えてしまった誤りである。チェイン法でない限り占有率は1以下になる。
イ ×およそ0.35は350を1000で割るなど分母を取り違えた誤りで、分母は実際のスロット数500とすべきである。
ウ ○ハッシュ表の負荷率はα=格納データ数÷スロット数で定義される。350÷500=0.7となり、表の7割が埋まっている状態を表すため正しい。
エ ×おおよそ0.5付近はスロット数を増減して見積もるなどの概算ミスであり、正確には350÷500=0.7である。

くわしく

負荷率はハッシュ表の混み具合を示し、値が大きいほど衝突が増えて探索効率が落ちる。オープンアドレス法では負荷率が1に近づくと急激に性能が悪化するため、一定値(例:0.7前後)を超えるとリハッシュで拡張する設計が一般的である。定義の分子分母を間違えないことが核心である。

本番での押さえどころ

試験のコツ

負荷率=『中身÷器』=格納数÷スロット数、と分子分母を固定する。1を超える答え(オープンアドレス法)は逆算ミスを疑う。

覚え方

負荷率は『容器の埋まり具合』。350個を500席に入れたら7割埋まる=0.7、と席の埋まりでイメージする。

よくある誤り

分子と分母を逆にして1を超える値を出す、または分母に総スロットでなく別の数を使う誤りが多い。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0131

【基本情報技術者試験】ハッシュ表の負荷率の問題 — 解答・解説|ukamiru 過去問