※本情報は解説作成時点のもので、閲覧時点では法改正等により情報が変更になっている場合がございます。あらかじめご理解いただければ幸いです。
正解は「D. cとl」です。
ASCIIコードの1の位が同じになる文字同士は、同じハッシュ値となり衝突が発生します。
この記事では、基本情報技術者試験(FE)試験(令和6年度)で出題された第2問「ハッシュ関数と衝突」について、試験対策の観点からわかりやすく解説します。
Contents
問題のポイント
ハッシュ値=ASCIIコードの1の位
キーは小文字アルファベット1文字です。ASCIIコードはアルファベット順に連続して割り当てられています。
小文字aのASCIIコードは97であり、以降1ずつ増加します。
ASCIIコードの確認
a=97
b=98
c=99
d=100
…
l=108
r=114
x=120
ハッシュ値は「1の位」なので、各文字のASCIIコードの1の位を確認します。
- a(97)→7
- i(105)→5
- b(98)→8
- r(114)→4
- c(99)→9
- l(108)→8
- d(100)→0
- x(120)→0
衝突の判定
同じ1の位を持つ文字同士が衝突します。
- aとi → 7と5(衝突しない)
- bとr → 8と4(衝突しない)
- cとl → 9と8(衝突しない)
- dとx → 0と0(衝突する)
したがって、衝突が起こるのは d と x の組合せです。
問われているポイント
この問題では、ASCIIコードの連続性と、ハッシュ関数の計算方法を正しく理解しているかが問われています。
ハッシュ表の基本動作と衝突の概念を押さえておきましょう。
気を付けてほしい点(勘違いしやすいポイント)
- ASCIIコードはa=97から始まる
- 「1の位」を見ることを忘れない
補足
ハッシュ値の計算方法を読み違えると簡単に誤答になります。設問条件を丁寧に確認しましょう。
基本情報技術者試験(FE)試験での出題パターン
基本情報技術者試験(FE)試験では、ハッシュ法や探索アルゴリズムに関する問題が頻出です。
衝突の発生条件や処理方法も合わせて理解しておきましょう。
この知識が使われている問題
まとめ
- ハッシュ値はASCIIコードの1の位
- d(100)とx(120)が衝突する