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

令和6年度 基本情報技術者試験 科目A 公開問題 問2

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

出典:令和6年度 基本情報技術者試験 科目A 公開問題 問2

答えと解説を見る

正解:エ

覚える知識

ハッシュ関数の衝突判定(ASCIIコード利用)

ハッシュ関数が異なるキーに同じ値を返すと衝突(シノニム)が起こる。

この問題で必要なこと

a=97 から連番なので、各文字の ASCII コード(10 進)の 1 の位を求めて同じ値になる組を探す。d=100 と x=120 はどちらも 0 で衝突する。

ひっかけ

文字の順序の差が 10 の倍数かどうかを見落とすと、差が 8 や 9 などの組を衝突と誤認する。

この知識の出題:本試験系 1 回・免除試験 2 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「ハッシュ法と衝突の扱い」で学ぶ

同じ知識の過去問