アルゴリズムとプログラミング
令和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 回(公開問題での観測値)