アルファベット3文字で構成されるキーがある。
次の式によってハッシュ値hを決めるとき,キー“SEP”と衝突するのはどれか。
ここで,a mod bは,aをbで割った余りを表す。
h=(キーの各アルファベットの順位の総和)mod 27
(アルファベットと順位の対応表:A|1/B|2/C|3/D|4/E|5/F|6/G|7/H|8/I|9/J|10/K|11/L|12/M|13/N|14/O|15/P|16/Q|17/R|18/S|19/T|20/U|21/V|22/W|23/X|24/Y|25/Z|26)
正答2
解説
正解は2です。
ハッシュ関数で同じハッシュ値になる(衝突する)キーを探す問題です。
各アルファベットの順位を足し、27で割った余りを求めて比べます。
【計算】
SEP:S(19)+E(5)+P(16)=40です。
40 mod 27=13なので、SEPのハッシュ値は13です。
APR:1+16+18=35、35 mod 27=8です。
FEB:6+5+2=13、13 mod 27=13です。
JAN:10+1+14=25、25 mod 27=25です。
NOV:14+15+22=51、51 mod 27=24です。
【選択肢別解説】
1:× APRのハッシュ値は8で、SEPの13とは異なります。
2:○ FEBのハッシュ値は13で、SEPと一致するので衝突します。
3:× JANのハッシュ値は25で、SEPの13とは異なります。
4:× NOVのハッシュ値は24で、SEPの13とは異なります。
【ポイント】
衝突(シノニム)とは、異なるキーから同じハッシュ値が得られることです。
文字の順位を足すだけのハッシュ関数は、文字の並びが違っても合計が同じなら衝突しやすいという弱点があります。