過去問解きまくり研究所 ホーム

平成23年度 特別 午前 問8

基礎理論

衝突が起こるキーの組合せ

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

答えと解説を見る

✓ これが正解エd と x

解説

dとxは並び順が20離れていて、1の位がそろいます。

この設問は、英小文字に割り当てられた具体的な値を覚えていなくても解けるように作られています。鍵になるのは最後の一文で、アルファベット順に連続した値が割り当てられていると断ってあります。すると、二つの文字に割り当てられた値の差は、二つの文字がアルファベットの並びの中でどれだけ離れているかと同じになります。ここで、使うハッシュ関数は10進表記の1の位を取るものですから、これは10で割った余りを取ることと同じです。余りが等しくなるのは差が10の倍数になるときですから、確かめるべきものは並び順の差だけに絞れます。先頭の文字の値がいくつであっても、引き算のときに打ち消し合うからです。正解となる組合せでは、aから数えて4番目の文字と24番目の文字が対になっていますので、差は20です。20は10の倍数ですから、二つは同じ位置に入ろうとし、衝突が起こります。英小文字のaに割り当てられた値を97として確かめても、同じ結論になります。4番目の文字は100で1の位が0、24番目の文字は120で1の位も0となり、ハッシュ表の同じ位置を指します。並び順の差だけを見る解き方なら暗算で済みますし、設問が置いた最後の一文は飾りではなく、その解き方を許している条件だと分かります。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成23年度 特別 応用情報技術者試験 午前 問8

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)