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

平成27年度 春期 午前 問5

アルゴリズム

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

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

h(x) = x mod n

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

答えと解説を見る

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

解説

余りが等しいことは、差が n の倍数であることと同じです。

設問は、ハッシュ表の大きさ n で割った余りをハッシュ関数とするとき、二つのキーが衝突する条件を選ばせています。衝突するとは、二つのキーから同じ位置が求まること、つまり n で割った余りが等しいことです。ここを式に開きます。a を n で割った商と余り、b を n で割った商と余りをそれぞれ書き、余りが同じだとして引き算をすると、余りが打ち消し合って、n と商の差の積だけが残ります。よって、二つのキーの差が n の倍数であることが条件になります。数で当てます。n を十として、a が 23、b が 43 のときは余りがどちらも 3 で衝突し、差の 20 は十の倍数です。a が 23、b が 47 のときは余りが 3 と 7 で衝突せず、差の 24 は十の倍数ではありません。衝突する組でも衝突しない組でも、言っていることが合います。除算法のハッシュ表で n に素数を選ぶのは、この差が倍数になりにくくするためです。

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

この問題の用語

出典:平成27年度 春期 応用情報技術者試験 午前 問5

同じ用語が出る問題

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