アルゴリズムとプログラミング

基本情報技術者試験探索アルゴリズム」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
衝突がほとんど起きないよう設計されたハッシュ表を用いた探索の、平均的な計算量はどれか。
O(1)であり要素数にほぼ依存しない
O(log n)で要素数の対数に比例する
O(n)で先頭から順に全件を調べる
O(n log n)で整列を伴う
正解
O(1)であり要素数にほぼ依存しない

ハッシュ探索はキーをハッシュ関数で計算した位置に直接アクセスする。衝突がほぼ無ければ位置計算と1回の照合で済み、要素数nに依存しない平均O(1)となるため正しい。

?選択肢ごとの解説

ア ○ハッシュ探索はキーをハッシュ関数で計算した位置に直接アクセスする。衝突がほぼ無ければ位置計算と1回の照合で済み、要素数nに依存しない平均O(1)となるため正しい。
イ ×O(log n)は二分探索やバランス木の量であり、範囲を半減する探索の特性で、位置を直接計算するハッシュとは原理が異なる。
ウ ×O(n)は線形探索の量で、先頭から全件を走査する手法の特性であり、直接アクセスするハッシュ探索とは異なる。
エ ×O(n log n)は整列の計算量であり、探索単体の量ではないうえハッシュ探索は整列を必要としない。

くわしく

ハッシュ探索は理想的には平均O(1)だが、衝突が多発すると最悪O(n)に劣化する。衝突対策(チェイン法・オープンアドレス法)と負荷率の管理が性能の鍵で、データは整列不要という点も二分探索との違いである。

本番での押さえどころ

試験のコツ

『位置を計算で直接=O(1)(ハッシュ)』『半分に絞る=O(log n)(二分)』『全件走査=O(n)(線形)』で覚える。

覚え方

ハッシュは『住所をその場で計算して直行』=探す手間ゼロ=O(1)、と直接アクセスを連想する。

よくある誤り

探索といえば二分探索のO(log n)と即答してしまう誤りが多い。ハッシュは位置を計算で求めるO(1)と区別する。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0137

【基本情報技術者試験】探索アルゴリズムの問題 — 解答・解説|ukamiru 過去問