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

令和元年度 秋期 午前 問7

アルゴリズム

任意のキーaとbが衝突する条件

自然数をキーとするデータを,ハッシュ表を用いて管理する。キー x のハッシュ関数 h(x) を

h(x) = x mod n

とすると,任意のキー a と b が衝突する条件はどれか。ここで,n はハッシュ表の大きさであり,x mod n は x を n で割った余りを表す。

答えと解説を見る

✓ これが正解イa−b が n の倍数

解説

余りが等しいことは、差がnで割り切れることと同じです。

衝突とは、異なるキーが同じハッシュ値になることです。h(x)=x mod n ですから、a と b が衝突する条件は a mod n = b mod n と書けます。ここで両者を n で割った商と余りに分けて差を作ると、余りが等しい場合は余り同士が打ち消し合い、商の差に n を掛けた値だけが残ります。つまり a−b は n の倍数です。逆に a−b が n の倍数であれば、割ったときの余りは必ず一致します。どちらの向きからも言えるので、これが過不足のないちょうどの条件になります。小さな数で試すと確かめやすく、n が5のとき3と8は差が5で衝突します。表の大きさを素数に選ぶと、キーの並びに潜む周期と重なりにくくなり、偏りを抑えられることも知られています。衝突自体は避けきれません。

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

この問題の用語

出典:令和元年度 秋期 応用情報技術者試験 午前 問7

同じ用語が出る問題

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