過去問解きまくり研究所 ホーム

平成27年度 秋期 午前 問5

アルゴリズム

衝突が起こるキーの組合せ

キーが小文字のアルファベット 1 文字(a,b,…,z のいずれか)であるデータを,大きさが 10 のハッシュ表に格納する。ハッシュ関数として,アルファベットの ASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCII コードでは,昇順に連続した 2 進数が,アルファベット順にコードとして割り当てられている。

答えと解説を見る

✓ これが正解エd と x

解説

ハッシュ値が並ぶ場所が同じになる二文字を探します。

ハッシュ表の大きさが 10 なので、このハッシュ関数は 10 で割った余り、つまり 1 の位だけを使います。設問は、昇順に連続した値がアルファベット順に割り当てられていると断っているので、小文字の a を 97 と置けば、b は 98、c は 99 と一つずつ増えていきます。あとは、その文字がアルファベットの何番目かに 96 を足せば値が出ます。二つの文字の 1 の位が一致すれば、同じ場所へ入ろうとして衝突します。d は 4 番目なので 100、x は 24 番目なので 120 となり、どちらも 1 の位が 0 でそろいます。別の見方でも同じ判断ができます。1 の位が等しいということは、二つの値の差が 10 の倍数だということなので、アルファベット順の番号の差を見るだけで足ります。起点を取り違えると 1 の位がまとめてずれてしまうため、先に a を 97 と固定しておくことが分かれ目になります。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成27年度 秋期 応用情報技術者試験 午前 問5

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)