平成23年度 春期6テクノロジ系

基本情報 平成23年度 春期 問6:テクノロジ系に関する問題

次の規則に従って配列の要素 4[0], 4[1], .… , 4[9] に正の整数 。 を格納する。 と して 16, 43, 73, 24, 85 を順に格納したとき, 85 が格納される場所はどこか。ここ で, * mod yは* をッで割った剰余を返す。また, 配列の要素は全て 0 に初期化されて いる。 [規則〕 (1) 4[z mod 10] 0 ならば, ょ一 4[z mod 10] とする。 (2②) ①)で格納できないとき, 4[@十1) mod 10] 0 ならば, ぇ一 4[%&二1) mod 10] と する。 (3③) ②で格納できないとき, 4[@十4) mod 10] 0 ならば, ヵ 一 4[@十4) mod 10] と する。

  • a4[3]
  • b4I[5]
  • c4I[6]
  • d4[9]正答
正答:D4[9]

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは d です。

ハッシュ法でデータを配列に入れる問題。85を10で割った余りは5なので、まずA[5]を見ます。すでに埋まっていれば次のルール(@+1、@+4の余り)で別の場所を探します。順に試すと、A[5]→A[6]→A[9]の順で空きを探し、最終的にA[9]に格納されます。

👉 覚え方:ハッシュ衝突=「ぶつかったら次の場所」を順に試す。

ほかの選択肢:a A[3]・b A[5]・c A[6] はそれぞれ16・43・73で先に埋まっているか、85には適用されない。

標準試験対策の基準レベル

なぜこれが正解か

正解は d。順に格納していく:

  • 16: 16 mod 10=6 → A[6]=16
  • 43: 43 mod 10=3 → A[3]=43
  • 73: 73 mod 10=3 → A[3]埋まり → (3+1) mod 10=4 → A[4]=73
  • 24: 24 mod 10=4 → A[4]埋まり → (4+1) mod 10=5 → A[5]=24
  • 85: 85 mod 10=5 → A[5]埋まり → (5+1) mod 10=6 → A[6]も埋まり → (5+4) mod 10=9 → A[9]=85

よってA[9]に格納される。

各選択肢の解説

  • a A[3]:43が格納済み。
  • b A[5]:24が格納済み。
  • c A[6]:16が格納済み。
  • d A[9]:規則(3)で衝突解決の結果格納される正解。

覚え方・ひっかけ注意

オープンアドレス法の典型問題。規則(1)→(2)→(3)を順に試し、最初に空きが見つかった位置に格納する。順を機械的に追うのがコツ。1つでも順序を間違えると後の結果が全部ズレるので、表を作りながら解く。

上級誤答論破・背景理論まで深掘り

理論的背景

ハッシュ法はキーを配列インデックスに変換するハッシュ関数 h(key) を使ってO(1)平均アクセスを実現するデータ構造。衝突(collision)が発生した際の解決法には①チェイン法(連結リストで連鎖)、②オープンアドレス法(別の場所を探す)があり、本問は後者。オープンアドレス法の探索方式には線形探査(linear probing、(h+i) mod m)、二次探査(quadratic probing、(h+i²) mod m)、二重ハッシュ(double hashing、(h1+i·h2) mod m)があり、本問は (h, h+1, h+4) と独自の探査列を使う変形。

実務での使われ方

ハッシュテーブルはPython dict、Java HashMap、C++ unordered_map、Goのmap、Rustのstd::collections::HashMapなど主要言語の連想配列の標準実装。データベースのインデックス(ハッシュインデックス)、キャッシュ(Redis、Memcached)、コンパイラのシンボルテーブル、ブロックチェーン(Merkle Tree)でも基本構造として使われる。

試験での位置づけ

基本情報のアルゴリズムとデータ構造分野で頻出。ハッシュ関数の設計(剰余法・乗算法・SHA等の暗号学的ハッシュ)、衝突解決法、ロードファクタ(充填率)と性能の関係、リハッシュ(rehashing)が出題される。応用情報・データベーススペシャリストではB-tree/B+treeとの使い分けが深掘りされる。

選択肢の発展補足

オープンアドレス法はクラスタリング(衝突要素が連鎖して塊になり性能劣化)が課題で、二次探査や二重ハッシュで緩和される。チェイン法はクラスタリングの影響が小さいが、メモリ局所性で劣る場合がある。負荷率(n/m、配列サイズに対する要素数の割合)が0.7を超えると性能が急激に劣化するため、リハッシュ(配列を2倍にして再配置)が必要。暗号学的ハッシュ関数(SHA-256等)は衝突困難性が要求され、本問のような剰余ベースの単純なハッシュとは設計目的が異なる。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成23年度 春期6/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。