科目B:アルゴリズムとは
基本情報技術者試験の科目Bは、アルゴリズムと情報セキュリティの2分野から出題されます。アルゴリズム分野は、擬似言語によるプログラム読解が中心となります。
擬似言語(IPAが定める擬似言語)
IPAが定義する擬似言語は、特定のプログラミング言語に依存せず、アルゴリズムの読み解く能力を評価するための共通の記述形式です。
| 汎用命令 | 意味 | 例 |
|---|---|---|
| もしここに存在するならば | 条件分岐(if) | もし x > 0 ならば |
| そうでなければ | 条件分岐(else) | そうでなければ |
| を繰り返す | ループ(while/for) | i が 1 から n まで 1 ずつ増やしながらを繰り返す |
| 手続き | 関数呼び出し | sum(配列, n) |
| 戻り値 | return | 戻り値: result |
擬似言語の基本構文
擬似言語では以下の構文を正確に読めることが重要です。
- 変数宣言と代入: 型名: 変数名 ← 値
- 配列: 型名: 配列名[1..n](インデックスは1始まり)
- 条件分岐: もし (条件) ならば 〜 でなければ 〜 を終わる
- 前判定ループ: を (条件) の間,繰り返す
- 後判定ループ: を (条件) になるまで繰り返す
- 手続き呼び出し: 戻り値 ← 手続き名(引数)
アルゴリズムの基礎
基本的なアルゴリズム
| アルゴリズム | 概要 | 計算量 |
|---|---|---|
| 線形探索 | 先頭から順に比較する | O(n) |
| 二分探索 | ソート済み配列を半分ずつ絞り込む | O(log n) |
| バブルソート | 隣接要素を比較して交換 | O(n²) |
| 選択ソート | 最小値を選んで先頭と交換 | O(n²) |
| 挿入ソート | 適切な位置に挿入していく | O(n²) |
| クイックソート | 分割統治による高速ソート | O(n log n) |
データ構造
| データ構造 | 特徴 | 試験での使われ方 |
|---|---|---|
| 配列 | 同じ型のデータを連続的に格納 | 最も頻繁に登場する |
| スタック | LIFO(後入先出)構造 | push/pop操作 |
| キュー | FIFO(先入先出)構造 | enqueue/dequeue操作 |
| 木(ツリー) | 階層的なデータ構造 | 再帰的処理で表現 |
再帰アルゴリズム
再帰とは、手続きが自分自身を呼び出すアルゴリズムです。代表的な例にフィボナッチ数列や階乗計算があります。終了条件(基底ケース)の設定が不可欠です。
再帰の例:階乗計算
手続き fact(整数型: n)
もし n が 1 以下 ならば
戻り値: 1
そうでなければ
戻り値: n × fact(n – 1)
を終わる
出題傾向と対策
科目Bのアルゴリズム問題は、擬似言語で書かれたプログラムを読んで動作を追う問題が中心です。
- トレース問題:プログラムを手動で実行して変数の値を追う
- 穴埋め問題:コードの不足部分を補充する
- 配列操作:アクセスパターンやインデックス計算
- 再帰プログラム:呼び出しの流れと戻り値を追う
効果的な学習方法
- 擬似言語仕様を熟読する:IPA公式サイトの擬似言語定義を確認
- トレース練習を繰り返す:過去問題のトレースを毎日実践する
- ソート・探索アルゴリズムを手で実行:小さな配列で実際に動かす
- パターン認識:ソート・待ち行列・差分計算など典型パターンを覚える
