ソフトウェア開発向け
【問題】
自然数をキーとするデータを,ハッシュ表を用いて管理する。キー x のハッ
シュ値 h(x) を
h(x) = x mod n
とする。ここで,n はハッシュ表の大きさであり,x mod n は x を n で割った
余りを表す。
キーが a であるデータと,キーが b であるデータの間で,衝突が起きる条件
はどれか。
ア a + b が n の倍数
イ a - b が n の倍数
ウ n が a + b の倍数
エ n が a - b の倍数
【私の回答】
衝突の意味がわかりません。
【調べたこと】
ハッシュ法入門
http://tortoise1.math.ryukoku.ac.jp/~takataka/cpro/doc/hash.html
要するに、ハッシュ値が同じ値になる場合が衝突という意味のようです。
って、ことは、・・・?
■解答■
ソフトウェア開発技術者午前平成16年問13
同等:一種午前平成12問11イ a - b が n の倍数
> 衝突が起きる→キーを n で割ったときの余りが等しい
> →キーは n の倍数に共通の数をたしたもの
> →キーの差をとると n の倍数どうもありがとうございました。
> n=33として、当てはめてみる。
>
> ア:a + b が n の倍数
> a=60、b=6
> このときのハッシュ値 h(x)は
> h(60)= 60 mod 33 = 27
> h( 6)= 6 mod 33 = 6
> →衝突は起きない。
>
> イ:a - b が n の倍数
> a=42、b=9
> このときのハッシュ値 h(x)は
> h(42)= 42 mod 33 = 9
> h( 9)= 9 mod 33 = 9
> →衝突が起きる。
>
> ウ:n が a + b の倍数
> a=30、b=3
> このときのハッシュ値 h(x)は
> h(30)= 30 mod 33 = 30
> h( 3)= 3 mod 33 = 3
> →衝突は起きない。
>
> エ:n が a - b の倍数
> a=19、b=8
> このときのハッシュ値 h(x)は
> h(19)= 19 mod 33 = 19
> h( 8)= 8 mod 33 = 8
> →衝突は起きない。