アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問9

16 進数で表される 9 個のデータ 1A,35,3B,54,8E,A1,AF,B2,B3 を順にハッシュ表に入れる。ハッシュ値をハッシュ関数 f(データ) = mod(データ,8) で求めたとき,最初に衝突が起こるのはどのデータか。ここで,mod(a,b) は a を b で割った余りを表す。
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問9(問題文は IPA の公開問題。解説は当サイト作成)

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:ウ

覚える知識

オープンアドレス法によるハッシュ衝突時の格納位置のトレース

ハッシュ衝突は異なるデータが同じハッシュ値になる現象である。

この問題で必要なこと

mod8で1A=26→2,35=53→5,3B=59→3,54=84→4,8E=142→6,A1=161→1,AF=175→7,B2=178→2で、1Aと衝突。

ひっかけ

16進を10進に直す際の計算ミスや、先に入ったデータとの比較漏れを誘う。

この知識の出題:本試験系 3 回・免除試験 7 回(公開問題での観測値)。頻出知識ランキング170位(全1,254件中)。

この知識をアプリで解いて覚える レッスン「ハッシュ法と衝突の扱い」で学ぶ

同じ知識の過去問