令和6年度 科目A 問2
アルゴリズム
衝突が起こるキーの組合せ
キーが小文字のアルファベット 1 文字(a,b,…,z のいずれか)であるデータを,大きさが 10 のハッシュ表に格納する。ハッシュ関数として,アルファベットの ASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCII コードでは,昇順に連続した 2 進数が,アルファベット順にコードとして割り当てられている。
- アaとi
- イbとr
- ウcとl
- エdとx
答えと解説を見る
✓ これが正解エdとx
解説
dとxは並び順が20離れ、コードの1の位が同じになります。
コードがアルファベット順に連続して割り当てられているので、並び順で10文字離れた2文字はコードの差が10になり、1の位が一致します。差が20でも同じです。並び順で数えると、dは4番目、xは24番目で、差は20です。よってこの2文字はハッシュ関数の値が同じになり、ハッシュ表の同じ場所を取り合う衝突が起こります。実際の値でも確かめると、ASCII でaは97なので、dは100、xは120で、1の位はどちらも0です。1の位を取り出すハッシュ関数では、コードそのものを知らなくても、並び順の差が10の倍数かどうかで衝突を見分けられます。
ほかの選択肢はなぜ違うのか
- アaとi:aは1番目、iは9番目で、並び順の差は8です。10の倍数ではないので1の位はずれ、aは97で7、iは105で5になります。ハッシュ値が異なるので衝突は起きません。
- イbとr:bは2番目、rは18番目で、差は16です。1の位が6つずれるので、bは98で8、rは114で4になります。格納される場所が別になるため衝突しません。
- ウcとl:cは3番目、lは12番目で、差は9です。cは99で9、lは108で8となり、1の位が一つ違います。差が10に一つ足りない組なので、同じ場所には入りません。
この問題の用語
- ハッシュ関数どんな長さのものからも決まった長さの値を作り出す計算。少しでも中身が変われば、できあがる値は大きく変わります。
出典:令和6年度 基本情報技術者試験 科目A 問2
同じ用語が出る問題
- 令和7年度 科目A 問9:暗号の危殆化に該当するもの(ハッシュ関数)
- 令和元年度 秋期 午前 問10:ハッシュ法に関する問題(ハッシュ関数)
- 平成27年度 秋期 午前 問36:デジタル署名に関する問題(ハッシュ関数)
- 平成27年度 秋期 午前 問5:ポインタを用いた線形リストの特徴(ハッシュ関数)
- 平成26年度 春期 午前 問42:パスワードに関する問題(ハッシュ関数)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)