基本情報技術者
テクノロジ系
ハッシュテーブルの特徴として適切なものはどれか。
1.
要素を常に整列された状態で保持する
2.
ハッシュ関数で計算した位置にデータを格納し高速に検索できる
✓ 正解
3.
要素を追加・削除する際に全要素を移動する必要がある
4.
要素へのアクセスに常にO(n)の時間がかかる
📝 解説
ハッシュテーブル(Hash Table)は「ハッシュ関数でキーから格納位置を計算し、その位置に直接データを格納する」データ構造です。電話帳に例えると、「田中さんの番号を調べたい」とき、あいうえお順にページをめくる(線形探索)より、氏名の頭文字から引き出しの番号を一瞬で計算して直接その引き出しを開く(ハッシュ)方が圧倒的に速いですよね。これがハッシュテーブルの発想です。この仕組みにより平均的な検索・挿入・削除の計算量がO(1)という驚異的な高速性を実現します。Pythonのdict・JavaのHashMapがこの仕組みを使っています。ただし、異なるキーが同じ格納位置を指す「衝突(コリジョン)」が多発すると性能が低下します。誤答の「常に整列された状態で保持する」は二分探索木などの特性で、「全要素を移動する必要がある」は配列の挿入の話、「常にO(n)の時間がかかる」は線形探索の特性です。「ハッシュテーブル=ハッシュ関数で一瞬で位置を計算・平均O(1)で検索できる高速データ構造」と覚えましょう!