アルゴリズムとプログラミング
キーが小文字のアルファベット 1 文字(a、b、…、z のいずれか)であるデータを、 大きさが 10 のハッシュ表に格納する。ハッシュ関数として、アルファベットの ASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が 起こるキーの組合せはどれか。ASCII コードでは、昇順に連続した 2 進数が、アルフ ァベット順にコードとして割り当てられている。
ア.aとi
イ.bとr
ウ.cとl
エ.dとx正解
解説
ハッシュ関数は「棚番号の計算機」。同じ棚番号を出したら、それが衝突(バッティング)です。今回の棚番号ルールは「ASCIIコード(10進)の1の位だけ使う」というシンプルなもの。
なぜ エ が正解か
d のASCIIコードは 100 → 1の位は「0」。x のASCIIコードは 120 → 1の位も「0」。つまり二人とも「棚番号0番」に突っ込もうとする。コインロッカーで同じ番号を引いたようなもので、これが衝突です。差は20(アルファベット20文字分)なので、10の倍数だけ離れた文字は必ず同じ棚に入ることになります。
出典: 基本情報技術者試験 令和6年 公開問題