科目A問2
キーが小文字のアルファベット 1 文字(a,b,…,z のいずれか)であるデータを,大きさが 10 のハッシュ表に格納する。ハッシュ関数として,アルファベットのASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCII コードでは,昇順に連続した 2 進数が,アルファベット順にコードとして割り当てられている。
| a と i | |
| b と r | |
| c と l | |
| d と x |
『情報処理過去問.com』からiPhoneアプリがリリースされました!!
正解
- エ
解説
ハッシュ表では、キーから算出したハッシュ値が同じ場合に衝突が発生します。
本問では、ASCIIコードがアルファベット順に連続して割り当てられているという性質を利用し、10で割った余り(1の位)をハッシュ値としています。
そのため、アルファベット上で文字間の差が10の倍数離れた文字は同じ1の位となり、同一ハッシュ値となって衝突が起こります。
本問では、ASCIIコードがアルファベット順に連続して割り当てられているという性質を利用し、10で割った余り(1の位)をハッシュ値としています。
そのため、アルファベット上で文字間の差が10の倍数離れた文字は同じ1の位となり、同一ハッシュ値となって衝突が起こります。
| ア. | a と i |
| 文字間の差は8なので衝突しない。 | |
| イ. | b と r |
| 文字間の差は16なので衝突しない。 | |
| ウ. | c と l |
| 文字間の差は9なので衝突しない。 | |
| エ. | d と x |
| 文字間の差は10なので衝突する。 |