疎行列への格納処理【基本情報技術者試験 科目B サンプル問題】

(令和4年度4月公開) 基本情報技術者試験 サンプル問題 科目B 問4のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bのサンプル問題を題材に,疎行列への格納処理について学習します。この問題では,行列の0でない要素を取り出し,行番号,列番号,値を配列に格納する処理を確認します。

広告

(令和4年度4月公開) 基本情報技術者試験 サンプル問題 科目B 問4

 次の記述中の   a    c   に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 要素の多くが0の行列を疎行列という。次のプログラムは,二次元配列に格納された行列のデータ量を削減するために,疎行列の格納に適したデータ構造に変換する。

 関数 transformSparseMatrix は,引数 matrix で二次元配列として与えられた行列を,整数型配列の配列に変換して返す。関数 transformSparseMatrix を transformSparseMatrix({{3,0,0,0,0},{0,2,2,0,0},{0,0,0,1,3},{0,0,0,2,0},{0,0,0,0,1}}) として呼び出したときの戻り値は,{{   a   },{   b   },{   c   }} である。

〔プログラム〕

○整数型配列の配列: transformSparseMatrix(整数型の二次元配列: matrix)

 整数型: i,j

 整数型配列の配列: sparseMatrix

 sparseMatrix ← {{},{},{}}  /* 要素数0の配列を三つ要素にもつ配列 */

 for (i を 1 から matrixの行数 まで 1 ずつ増やす)

  for (j を 1 から matrixの列数 まで 1 ずつ増やす)

   if (matrix[i,j] が 0 でない)

    sparseMatrix[1]の末尾 に iの値 を追加する

    sparseMatrix[2]の末尾 に jの値 を追加する

    sparseMatrix[3]の末尾 に matrix[i,j]の値 を追加する

   endif

  endfor

 endfor

 return sparseMatrix

解答群

a

b

c

1,2,2,3,3,4,51,2,3,4,5,4,53,2,2,1,2,3,1
1,2,2,3,3,4,51,2,3,4,5,4,53,2,2,1,3,2,1
1,2,3,4,5,4,51,2,2,3,3,4,53,2,2,1,2,3,1
1,2,3,4,5,4,51,2,2,3,3,4,53,2,2,1,3,2,1

【解答】

【解説】

transformSparseMatrix は,行列の0でない要素だけを取り出し,行番号,列番号,値をそれぞれ別の配列に格納する。与えられた行列の0でない要素は,(1,1)=3,(2,2)=2,(2,3)=2,(3,4)=1,(3,5)=3,(4,4)=2,(5,5)=1 である。プログラムでは,sparseMatrix[1] に行番号,sparseMatrix[2] に列番号,sparseMatrix[3] に値を順番に格納している。したがって,戻り値は {{1,2,2,3,3,4,5},{1,2,3,4,5,4,5},{3,2,2,1,3,2,1}} となる。

「(令和4年度4月) 基本情報技術者試験 サンプル問題 科目B 問4」の解答画像

この問題のポイント

 この問題から学べることは,

  • 疎行列とは何か
  • 行列の0でない要素を取り出す処理
  • 行番号,列番号,値を別々の配列に格納する方法
  • 二重ループと条件分岐による行列の走査

です。特に,行列の0でない要素を見つけたときに,行番号,列番号,値をそれぞれ対応する配列に格納する処理を理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告