令和6年度 秋期 午前 問6
アルゴリズム
ハッシュ関数に関する問題
自然数をキーとするデータを,ハッシュ表を用いて管理する。キー x のハッシュ関数 h(x) を h(x) = x mod n とすると,任意のキー a と b が衝突する条件はどれか。ここで,n はハッシュ表の大きさであり,x mod n は x を n で割った余りを表す。
- アa+b が n の倍数
- イa−b が n の倍数
- ウn が a+b の倍数
- エn が a−b の倍数
答えと解説を見る
✓ これが正解イa−b が n の倍数
解説
余りが等しいことは差が割り切れることです。
設問は、キーを表の大きさで割った余りを置き場所とするハッシュ関数のもとで、二つのキーが衝突する条件を選ばせています。衝突するとは、二つのキーが同じ置き場所に落ちること、すなわち表の大きさで割った余りが等しいことです。ある数を割った余りが等しい二つの数は、その差がちょうど割り切れます。逆に差が割り切れるなら余りは等しくなります。したがって条件は、二つのキーの差が表の大きさの倍数であることです。表の大きさを 7 として確かめます。10 と 3 は余りがどちらも 3 で同じ場所に落ち、差の 7 は 7 で割り切れます。10 と 5 は余りが 3 と 5 で別の場所に落ち、差の 5 は 7 で割り切れません。ここで気をつけたいのは、二つのキーを足すのか引くのか、そしてどちらがどちらで割り切れるのかという向きです。倍数という言い方は、前に置いた数が後ろの数で割り切れることを表すので、前後を取り違えると条件が反対になります。
ほかの選択肢はなぜ違うのか
- アa+b が n の倍数:二つのキーの和が表の大きさの倍数という条件です。表の大きさを 7、キーを 10 と 4 とすると和の 14 は 7 で割り切れますが、余りは 3 と 4 で異なり同じ場所には落ちません。反例が作れるので条件になりません。
- ウn が a+b の倍数:表の大きさのほうが二つのキーの和で割り切れるという条件です。足している点と、割り切れる向きが逆になっている点の二つが誤っており、表の大きさが和より小さければそもそも成り立ちません。
- エn が a−b の倍数:表の大きさのほうが二つのキーの差で割り切れるという条件です。差に着目するところまでは合っていますが向きが逆で、表の大きさを 7、差を 14 とすると 7 は 14 で割り切れないのに余りは等しくなります。
この問題の用語
- ハッシュ関数どんな長さのものからも決まった長さの値を作り出す計算。少しでも中身が変われば、できあがる値は大きく変わります。
出典:令和6年度 秋期 応用情報技術者試験 午前 問6
同じ用語が出る問題
- 令和7年度 秋期 午前 問5:ベストフィット方式の特徴(ハッシュ関数)
- 令和3年度 春期 午前 問40:つまり一方向性の性質(ハッシュ関数)
- 令和2年度 10月 午前 問5:ポインタを用いた線形リストの特徴(ハッシュ関数)
- 平成30年度 秋期 午前 問27:ハッシュ関数に関する問題(ハッシュ関数)
- 平成27年度 秋期 午前 問5:衝突が起こるキーの組合せ(ハッシュ関数)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)