SAシステムアーキテクト試験 午前Ⅰ

平成27年度秋期 システムアーキテクト 午前Ⅰ 問3

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

キーが小文字のアルファベット 1 文字(a,b,…,z のいずれか)であるデータを,大きさが 10 のハッシュ表に格納する。ハッシュ関数として,アルファベットの ASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCII コードでは,昇順に連続した 2 進数が,アルファベット順にコードとして割り当てられている。

選択肢

  1. ア
    a と i
  2. イ
    b と r
  3. ウ
    c と l
  4. エ
    d と x
解き方のヒントを見る

用語と前提を対応付ける視点

ハッシュ表の設問では、用語の定義だけを暗記して判断せず、問題文が置く入力・規則・格納先の関係を丁寧に対応付け、問われている条件の範囲を一つずつ確認することが重要です。

この問題で問われていること

確認の中心を、入力と処理規則、結果として扱われる位置や状態の対応関係に絞りましょう。文中の条件がどの概念を説明しているかを、表現の似ている選択肢に流されず整理してください。

視点

用語の意味を単独で当てはめるのではなく、問題文に示された対象・規則・結果の関係を同じ基準で読み取ります。特定の式や数値に進む前に、何と何を比較し、どの条件を確認する問いなのかを明確にすると、判断の軸がぶれにくくなります。

確認ポイント

  • 問題文で与えられた対象と、変換や参照の対象を区別できているか
  • 規則の適用前後で、比較しているものが同じ種類か確認したか
  • 設問が求める条件と、単なる周辺情報を分けて読めているか
正解と解説を見る

正解

エ

解説

ハッシュ値はASCIIコードの10進表記の1の位なので、異なるキーでもコード末尾が一致すれば衝突する。小文字はaから連続したコードで割り当てられるため、候補ごとに末尾を比較する。

理由

ハッシュ値をh(k)=ASCII(k) mod 10と考える。小文字のコードはaが97で、アルファベット順に1ずつ増える。各候補を計算すると、dは100なのでハッシュ値0、xは120なのでハッシュ値0となり、同じ格納位置になる。

比較

aは97で7、iは105で5、bは98で8、rは114で4、cは99で9、lは108で8となるため、それぞれの組合せでは値が一致しない。一方、dとxはともに末尾が0であり、衝突条件を満たす。

選択肢ア

これは不正解だよ。aのASCIIコードは97でハッシュ値は7、iは105で5になる。1の位が一致せず、異なる表位置に格納されるため、この組合せでは衝突しない。したがって、ハッシュ関数の定義に基づく衝突条件を満たさない。

選択肢イ

これは不正解だよ。bのASCIIコードは98でハッシュ値は8、rは114で4になる。1の位が一致せず、異なる表位置に格納されるため、この組合せでは衝突しない。したがって、ハッシュ関数の定義に基づく衝突条件を満たさない。

選択肢ウ

これは不正解だよ。cのASCIIコードは99でハッシュ値は9、lは108で8になる。1の位が一致せず、異なる表位置に格納されるため、この組合せでは衝突しない。したがって、ハッシュ関数の定義に基づく衝突条件を満たさない。

選択肢エ(正解)

これは正解だよ。dのASCIIコードは100でハッシュ値は0、xは120で0になる。1の位が一致するため、異なるキーが同じ表位置を指し、ハッシュ値の衝突が起こる。この組合せは設問の条件に合致する。

学習のポイント

ASCIIコードの連続性と、10を法とする剰余の見方を身につける。

出典:独立行政法人 情報処理推進機構(IPA)平成27年度秋期 システムアーキテクト試験 午前Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針