- 基数変換・補数・浮動小数点の仕組みと、桁落ち・情報落ちなど誤差が生まれる瞬間
- 集合とド・モルガンの法則、真理値表、カルノー図の囲み方で論理式を最小化する手順
- 確率の基本定理・ベイズの定理・正規分布の標準得点と、統計・検定の用語
- M/M/1 待ち行列の平均待ち時間 ρ/(1−ρ)×Ts を 3 つの出題型で使い分ける
- ハフマン符号の構築と平均符号長、パリティ・CRC・ハミング符号による誤り検出・訂正
- 機械学習の分類・過学習・混同行列と ROC(Receiver Operating Characteristic)曲線、ディープラーニングと生成 AI の基本用語
科目 A では直近 10 年(19 回)で 73 問、1 回平均 3.8 問(最多 5 問・最少 2 問)が問 1〜6 に集中して出題されています。計算問題は型が固定されており、直近 3 年は 21 問中 7 問が過去問と要旨・正解が一致する再出題でした。3 問確保が目標です。
基数と数値の表現・演算精度
コンピュータは 2 進数で数を扱いますが、人間が読み書きするのは 10 進数、メモリダンプやアドレスは 16 進数です。基数(何種類の数字を使うか)を切り替える計算は、本章のほぼ全ての計算問題の土台になります。位ごとに「基数の何乗」という重みが付いている(位取り記数法)と捉えれば、どの基数でも同じ手順で変換できます。
計算の型: 基数変換
n 進 → 10 進: 各桁 × 基数位 の合計。10 進 → n 進: 整数部は「基数で割った余り」を下位桁から並べ、小数部は「基数を掛けた整数部」を上位桁から並べる。
例題: 10 進数 0.625 を 2 進数にせよ。
- 0.625 × 2 = 1.25 → 整数部 1(小数第 1 位)、残り 0.25
- 0.25 × 2 = 0.5 → 整数部 0、残り 0.5
- 0.5 × 2 = 1.0 → 整数部 1、残り 0 で終了
- 答え: 0.101(2)。0.1(10)のように 2 進で循環小数になる値は有限桁では正確に表せない(誤差の原因)
| 10 進 | 2 進 | 16 進 | 10 進 | 2 進 | 16 進 |
|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 |
| 1 | 0001 | 1 | 9 | 1001 | 9 |
| 2 | 0010 | 2 | 10 | 1010 | A |
| 3 | 0011 | 3 | 11 | 1011 | B |
| 4 | 0100 | 4 | 12 | 1100 | C |
| 5 | 0101 | 5 | 13 | 1101 | D |
| 6 | 0110 | 6 | 14 | 1110 | E |
| 7 | 0111 | 7 | 15 | 1111 | F |
桁数と対数 ― 「何ビット必要か」の型
n ビットで表せるパターンは 2n 通り、符号なし整数なら 0〜2n−1 です。逆に N 通りを区別するには log2N を切り上げたビット数が要ります。10 進 1 桁は約 3.32 ビット(log210 ≒ 3.32)に相当し、10 進 k 桁の整数は 2 進で約 3.32k 桁になります。また d 桁の 2 進数を 2 乗すると桁数は 2d または 2d−1 になる(最上位が 1 なので 2d−1 以上、2 乗で 22d−2 以上)という性質も、桁数問題の定番です。文字を使った符号にも同じ考え方が使えます。0〜7 の 8 種類の数字だけを使う 3 桁の番号を小さい順に並べると、番号「345」は 8 進数として 3×64+4×8+5=229 なので、「000」を 1 番目と数えれば 230 番目です。
計算の型: 必要ビット数
N 通りを区別する最小ビット数 = log2N の切り上げ(2n−1 < N ≦ 2n となる n)
例題: 社員番号を 1〜5,000 まで付けたい。何ビット必要か。
- 212 = 4,096 < 5,000 ≦ 8,192 = 213 を確認する
- 答え: 13 ビット。バイト単位なら 2 バイト(16 ビット)
負数の表現と固定小数点数
負数は 補数で表します。1 の補数は全ビットを反転したもの、2 の補数は 1 の補数に 1 を加えたもので、現在のコンピュータはほぼ 2 の補数を使います。理由は、減算を加算回路だけで実現でき(A − B = A +(B の 2 の補数)、桁あふれは捨てる)、0 の表現が 1 通りだからです。最上位ビットが符号(1 なら負)になります。
| 表現(n ビット) | 表現範囲 | 8 ビットの例 | 0 の表現 |
|---|---|---|---|
| 符号なし整数 | 0 〜 2n−1 | 0 〜 255 | 1 通り |
| 1 の補数 | −(2n−1−1) 〜 2n−1−1 | −127 〜 127 | 2 通り(00000000 と 11111111) |
| 2 の補数 | −2n−1 〜 2n−1−1 | −128 〜 127 | 1 通り |
| BCD(2 進化 10 進) | 10 進 1 桁を 4 ビットで表す | 0101 1001 = 59 | パック 10 進数は 1 バイトに 2 桁、末尾 4 ビットに符号 |
例として 8 ビットで −5 を表すと、5 = 00000101 → 反転 11111010(1 の補数)→ +1 で 11111011(2 の補数)です。固定小数点数は小数点の位置を決め打ちした整数表現で、業務計算の金額(誤差が許されない)や組込み機器で使われます。範囲が狭い代わりに演算が速く誤差が出にくいのが特徴です。
浮動小数点数 ― IEEE 754 の構造
浮動小数点数は数を「符号 × 仮数 × 基数指数」の形で表し、指数で小数点の位置を動かします。正規化は仮数の先頭を 0 以外にそろえる操作で、IEEE 754 では 1.xxx の形にして先頭の 1 を省略し(隠れビット)、有効桁を 1 ビット稼ぎます。指数は負の値も表せるようにバイアス(下駄)を足して格納します。
| 形式 | 全長 | 符号 | 指数(バイアス) | 仮数 | 10 進の有効桁 |
|---|---|---|---|---|---|
| 単精度(float) | 32 ビット | 1 | 8 ビット(127) | 23 ビット | 約 7 桁 |
| 倍精度(double) | 64 ビット | 1 | 11 ビット(1023) | 52 ビット | 約 15〜16 桁 |
仮数のビット数が有限なので、浮動小数点演算には必ず誤差が伴います。試験で問われるのは誤差の名前と発生条件の対応です。特に「桁落ち」と「情報落ち」は 10 年で 3 問出ており、定義の入替えが定番の誤答肢です(図 2-2)。
| 誤差・現象 | 発生条件 | 対策の方向 |
|---|---|---|
| 桁落ち | ほぼ等しい 2 数の減算で有効桁数が減る | 式を変形して減算を避ける(有理化など) |
| 情報落ち | 絶対値の差が大きい 2 数の加減算で小さい数が無視される | 小さい数から順に加算する、倍精度を使う |
| 丸め誤差 | 表現できる桁数を超えた部分を四捨五入・切捨て・切上げで処理する | 桁数を増やす、10 進演算(BCD)を使う |
| 打切り誤差 | 無限級数・反復計算を有限回で打ち切る | 反復回数を増やす、収束判定を厳しくする |
| オーバーフロー | 表現可能な最大値を超える(指数部があふれる) | 倍精度、例外処理 |
| アンダーフロー | 表現可能な最小の正数より 0 に近くなる | 倍精度、非正規化数 |
シフト演算とビット演算 ― 乗除・剰余を置き換える
論理シフトは空いたビットに 0 を詰める操作で、符号なし整数向きです。算術シフトは符号ビットを動かさず、右シフトでは空きに符号ビットと同じ値を詰めるので、2 の補数の負数でも符号が保たれます。左に n ビットシフトすると 2n 倍、右に n ビットシフトすると 2n で割った商になります(正数では切捨て。負数の算術右シフトは負の無限大方向に丸められます)。x × 10 は x を 3 ビット左シフト(8 倍)と 1 ビット左シフト(2 倍)の和で計算でき、乗算器のない小さな CPU ではこの手法が使われます。
計算の型: AND マスクによる剰余(巡回カウンタ)
2k で割った余り = 下位 k ビットを取り出す = (2k−1) との AND。255 = 11111111(2)なので、n AND 255 は n mod 256 と同じ。
例題: 0〜1023 を巡回するカウンタで、n の次の値を求める式を書け。
- 1024 = 210 なので、下位 10 ビットのマスクは 1023 = 1111111111(2)
- 次の値 = (n + 1) AND 1023。n = 1023 なら 1024 AND 1023 = 0 に戻る
- 誤答肢の型: OR 1023(下位 10 ビットが全部 1 になり、常に 1023 以上になる)、AND 1024(1 ビットしか見ない)、(n AND 1023) + 1(1024 に到達して戻らない)
集合と論理演算 ― ド・モルガン・真理値表・カルノー図
集合と論理は同じ構造を別の記号で書いたものです。集合の和・積・補は論理の OR・AND・NOT に、ベン図の塗り分けは真理値表の行に対応します。論理演算は 10 年で 10 問(AI と並ぶ本章最多)で、問われ方は「等価な式を選ぶ」「真理値表から演算を特定する」「カルノー図で簡単化する」の 3 つです。
集合の演算とド・モルガンの法則
| 演算 | 記法 | 意味(ベン図) | 論理との対応 |
|---|---|---|---|
| 和集合 | A ∪ B | A か B のどちらかに属する | 論理和 OR |
| 積集合 | A ∩ B | A と B の両方に属する | 論理積 AND |
| 補集合 | Ā | 全体集合のうち A に属さない | 否定 NOT |
| 差集合 | A − B = A ∩ B̄ | A に属し B に属さない | A AND NOT B |
| 部分集合 | A ⊆ B | A の要素はすべて B の要素 | 含意 A → B が常に真 |
ド・モルガンの法則は「和の補集合は補集合の積、積の補集合は補集合の和」です。A ∪ B の補集合 = Ā ∩ B̄、A ∩ B の補集合 = Ā ∪ B̄ となり、論理式では ¬(A ∨ B) = ¬A ∧ ¬B、¬(A ∧ B) = ¬A ∨ ¬B です。試験ではこれと差集合の定義を組み合わせます。Ā ∩ B̄ は「A にも B にも属さない」なので、差集合で書けば Ā − B(A の外にあって B にも入らない)と同じ集合です。誤答肢には Ā ∪ B̄(A ∩ B の補集合)、A − B̄(= A ∩ B)のように 1 か所だけ記号を変えた式が並ぶので、要素の帰属を「A に入るか・B に入るか」の 4 領域で確かめるのが確実です。
命題論理と含意
命題は真(1)か偽(0)かが定まる文です。「A ならば B」(含意 A → B)は、A が真なのに B が偽のときだけ偽になり、前件 A が偽なら B に関係なく全体が真です。A → B は ¬A ∨ B と等価です。含意を扱う出題としては直近 10 年で令和 7 年春期・問 1 相当が唯一です(この等価則はトートロジー識別に使えます)。対偶 ¬B → ¬A は元の命題と真偽が一致しますが、逆 B → A や裏 ¬A → ¬B は一致しません。
論理演算と真理値表
| A | B | AND(A·B) | OR(A+B) | XOR(A ⊕ B) | NAND | NOR | XNOR(等価) | A → B |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
ある演算の相補演算とは、出力をすべて否定した演算です。表を縦に見ると、AND の相補は NAND、OR の相補は NOR、そして XOR の相補は XNOR(等価演算)です。「XOR の相補演算はどれか」に NAND や NOR を選ばせる肢が 2 回出ています。名前で判断せず、4 行すべてが反転しているかを確認してください。NAND だけ(あるいは NOR だけ)を組み合わせれば NOT・AND・OR がすべて作れるため、NAND は万能ゲートと呼ばれます。
排他的論理和 XOR は「2 入力が異なるとき 1」で、次の性質が計算問題の根拠になります。A ⊕ A = 0、A ⊕ 0 = A、A ⊕ 1 = ¬A、交換則・結合則が成り立ち、(A ⊕ B) ⊕ B = A なので同じ値を 2 回 XOR すると元に戻ります。パリティビットの計算、ストリーム暗号、RAID 5 のパリティ復元がこの性質で動いています。
| 法則 | 論理積の形 | 論理和の形 |
|---|---|---|
| 交換則 | A·B = B·A | A+B = B+A |
| 結合則 | (A·B)·C = A·(B·C) | (A+B)+C = A+(B+C) |
| 分配則 | A·(B+C) = A·B+A·C | A+(B·C) = (A+B)·(A+C) |
| 吸収則 | A·(A+B) = A | A+A·B = A |
| ド・モルガン | ¬(A·B) = ¬A+¬B | ¬(A+B) = ¬A·¬B |
結合則は AND・OR・XOR には成り立ちますが、NAND や NOR、含意には成り立ちません。「結合法則が成り立つ演算はどれか」という出題(平成 29 年春期)がこの点を突いています。
カルノー図で論理式を最小化する
カルノー図は真理値表を 2 次元に並べ替えたもので、隣り合うマス目は 1 変数だけが異なるように(00, 01, 11, 10 の順、グレイコード順)配置します。1 のマス目を 2n 個の長方形で囲むと、囲みの中で値が変わる変数を消去できます。左端と右端、上端と下端は隣接扱い(折返し)です。4 変数のカルノー図から等価な簡略化式を選ぶ問題が 2 回(令和 4 年秋・令和 7 年秋相当、同一問題)出ています。
論理回路 ― 加算器・多数決回路・フリップフロップ
| 回路 | 論理式・動作 | 用途 |
|---|---|---|
| 半加算器 | 和 S = A ⊕ B、桁上げ C = A·B | 最下位桁の加算 |
| 全加算器 | S = A ⊕ B ⊕ Cin、Cout = A·B + Cin·(A ⊕ B) | 下位からの桁上げを含む加算。半加算器 2 個 + OR |
| 多数決回路(3 入力) | A·B + B·C + C·A(2 つ以上が 1 なら 1) | 多重系の故障判定、全加算器の桁上げと同形 |
| フリップフロップ | 入力が無くなっても出力を保持する(1 ビット記憶)。RS・JK・D 型 | SRAM・レジスタ・カウンタ |
論理回路の問題は真理値表を自分で書けば必ず解けます。3 入力なら 8 行、入力の組合せを 000 から 111 まで並べて 1 行ずつ確認するのが最速です。
確率と統計
確率・統計は 10 年で 7 問、計算と「考え方を選ぶ」問題が半々です。順列・組合せで場合の数を数え、加法・乗法定理で確率を組み立て、期待値で平均的な結果を見積もる、という流れを型にしておきます。直近 3 年はベイズの定理を「事後確率を求める場面はどれか」と問うなど、公式を使う場面の判断へ寄っています。
計算の型: 順列・組合せ
順列(順序を区別)nPr = n! ÷ (n−r)!(n! は階乗で n×(n−1)×…×2×1) 組合せ(順序を区別しない)nCr = n! ÷ (r!(n−r)!) 重複を許す並べ方 = nr
例題: 8 台のサーバから監視対象を 3 台選ぶ選び方は何通りか。
- 順序は問わないので組合せ。8C3 = 8×7×6 ÷ (3×2×1)
- = 336 ÷ 6 = 56 通り(順列なら 336 通り。「選ぶ」は組合せ、「並べる・割り当てる」は順列)
| 定理・用語 | 式 | 使う場面 |
|---|---|---|
| 加法定理 | P(A ∪ B) = P(A) + P(B) − P(A ∩ B) | 「A または B」。排反なら P(A)+P(B) |
| 乗法定理 | P(A ∩ B) = P(A) × P(B|A) | 「A かつ B」(同時確率) |
| 独立 | P(A ∩ B) = P(A) × P(B) | 互いに影響しない事象。複数装置が全部正常な確率など |
| 条件付き確率 | P(B|A) = P(A ∩ B) ÷ P(A) | 「A が起きたとき B の確率」 |
| 余事象 | P(Ā) = 1 − P(A) | 「少なくとも 1 つ」は余事象で計算する |
| 期待値 | E = Σ(値 × その確率) | くじの平均賞金、平均処理時間 |
計算の型: ベイズの定理(結果から原因の確率を求める)
P(原因|結果) = P(結果|原因) × P(原因) ÷ P(結果)。分母は全原因についての Σ P(結果|原因i) × P(原因i)。
例題: 部品の 60% を工場 A、40% を工場 B が生産し、不良率は A が 2%、B が 5% である。抜き取った部品が不良品だったとき、それが工場 A 製である確率は。
- 不良品が出る確率(分母): 0.6 × 0.02 + 0.4 × 0.05 = 0.012 + 0.020 = 0.032
- A 製かつ不良品(分子): 0.6 × 0.02 = 0.012
- P(A|不良) = 0.012 ÷ 0.032 = 0.375。生産比率(事前確率 0.6)が、不良という結果を見て 0.375(事後確率)に更新された
「袋から取り出した玉の色から、どの袋を選んだかを推定する」「検査が陽性だったとき本当に病気である確率」のように、観測された結果から原因側の確率を更新する場面がベイズの定理の出番です。逆に「袋 A を選んだとき赤玉が出る確率」は単なる条件付き確率で、ベイズは不要です。
確率分布 ― 名前と場面を対応させる
| 分布 | 型 | 表す現象 | 平均・分散 |
|---|---|---|---|
| ベルヌーイ分布 | 離散 | 成功・失敗の 1 回試行 | p、p(1−p) |
| 二項分布 | 離散 | n 回の独立試行での成功回数(抜取検査の不良数) | np、np(1−p) |
| ポアソン分布 | 離散 | 単位時間あたりの稀な事象の発生回数(到着数・故障数) | λ、λ(平均=分散) |
| 正規分布 | 連続 | 測定値・得点など多数の要因の和。左右対称の釣鐘型 | μ、σ2 |
| 指数分布 | 連続 | ポアソン到着の到着間隔、故障までの時間 | 1/λ、1/λ2 |
| カイ二乗分布 | 連続 | 分散の推定、適合度・独立性の検定 | 自由度で決まる |
| マルコフ過程 | — | 次の状態が現在の状態だけで決まる確率過程(状態遷移確率の行列で表す) | — |
連続型分布では特定の値をとる確率は 0 で、確率密度関数の面積が区間の確率になります。抜取検査で「不良率 10% のロットから 3 個抜き取り、全部良品なら合格」とすれば、合格確率は独立試行として 0.93 = 0.729 です。
計算の型: 標準得点(z 値)で科目を比べる
z = (得点 − 平均) ÷ 標準偏差。z は「平均から標準偏差いくつ分離れているか」。
例題: 受験者数が同じ 3 科目で、80 点以上の人が最も多い科目はどれか。国語 μ60・σ10、数学 μ50・σ20、英語 μ68・σ4。
- 国語 z = (80−60)÷10 = 2.0、数学 z = (80−50)÷20 = 1.5、英語 z = (80−68)÷4 = 3.0
- z が最小の数学が、80 点以上の割合(右側の面積)が最大。平均が最も高い英語ではない
統計の基本用語
| 分類 | 用語 | 意味・ポイント |
|---|---|---|
| 代表値 | 平均値 | 合計 ÷ 個数。外れ値に引かれやすい |
| 中央値(メジアン) | 大きさ順に並べた中央の値。外れ値に強い | |
| 最頻値(モード) | 最も多く現れる値 | |
| ばらつき | 分散 | 偏差(値 − 平均)の 2 乗の平均 |
| 標準偏差 σ | 分散の平方根。元の値と同じ単位 | |
| 歪度・尖度 | 分布の左右の偏り・裾の重さ(正規分布との違い) | |
| 可視化 | 度数分布表・ヒストグラム | 区間ごとの個数。分布の形を見る |
| 箱ひげ図 | 最小・第 1 四分位・中央値・第 3 四分位・最大の 5 数要約 | |
| 散布図 | 2 変量の関係。相関の有無を見る | |
| 関係 | 相関係数 | −1〜+1。絶対値が大きいほど直線的な関係が強い。2 変量の関係の強さを調べる手法が相関分析。相関があっても因果とは限らない(擬似相関: 第 3 の変数が両方に影響) |
| 回帰分析 | 説明変数から目的変数を予測する式(回帰直線 y = ax + b)。単回帰・重回帰、確率を予測するロジスティック回帰 | |
| 主成分分析 | 分散が最大になる軸を順に取り、多数の変数を少数の合成変数へ縮約する。次元削減に使う | |
| 因子分析 | 観測された変数の背後にある共通の潜在因子を推定する。縮約でも目的が主成分分析と異なる |
| 尺度 | できる演算 | 例 |
|---|---|---|
| 名義尺度 | 等しいか否か(度数) | 血液型、部署コード |
| 順序尺度 | 大小・順位(中央値) | 満足度 5 段階、ランク |
| 間隔尺度 | 差(平均・標準偏差)。0 は便宜的 | 摂氏温度、西暦 |
| 比例尺度 | 比(倍率)。絶対的な 0 がある | 金額、処理時間、重さ |
推定と仮説検定
標本から母集団の値を 1 点で見積もるのが点推定、範囲で見積もるのが区間推定(95% 信頼区間など)です。観測データが得られる確からしさ(尤度)を最大にするパラメータを選ぶ方法が最尤推定です。
仮説検定では、否定したい主張を帰無仮説(例: 新旧システムの平均応答時間に差はない)、示したい主張を対立仮説に置き、帰無仮説が正しいとしたときに観測結果以上に極端なことが起きる確率(p 値)が有意水準(5% や 1%)より小さければ帰無仮説を棄却します。
| 帰無仮説が真(実際は差がない) | 帰無仮説が偽(実際は差がある) | |
|---|---|---|
| 棄却する(差があると判断) | 第 1 種の誤り(α、偽陽性・あわて者) | 正しい判断(確率 = 検出力 1−β) |
| 棄却しない | 正しい判断 | 第 2 種の誤り(β、偽陰性・ぼんやり者) |
有意水準 α は第 1 種の誤りを許容する確率そのものです。α を小さくすると β は大きくなる(トレードオフ)ので、両方を下げるには標本数を増やします。検定の種類は、平均の差なら t 検定(母分散未知)・z 検定(母分散既知または大標本)、分類データの分布や独立性ならカイ二乗検定、3 群以上の平均差なら分散分析と対応させておけば十分です。
数値計算・数値解析・グラフ理論
この節の小分類(数値計算・数値解析・グラフ理論・最適化)は 10 年で計 7 問と薄めですが、二分法の反復回数(令和 7 年春期)やニュートン法(令和 3 年秋期)のように、考え方を知っていれば 1 分で解ける問題が混ざります。用語の対応表を押さえ、二分法だけは計算の型にしておきます。
線形代数と数列
スカラは 1 つの数、ベクトルは数の並び、行列は数の 2 次元配置、テンソルはそれを多次元に一般化したもの(ディープラーニングの入出力データ)です。行列の積は「左の行 × 右の列」の内積で、一般に AB ≠ BA です。連立一次方程式 Ax = b は、係数行列に行の基本変形を繰り返して単位行列にする掃出し法(ガウスの消去法)で解けます。
| 用語 | 定義 | 使われる場面 |
|---|---|---|
| 単位行列 I | 対角成分が 1、他が 0。AI = IA = A | 数の 1 に相当 |
| 逆行列 A−1 | AA−1 = I。行列式が 0 なら存在しない | 連立方程式の解 x = A−1b |
| 転置行列 AT | 行と列を入れ替える | 対称行列は AT = A(無向グラフの隣接行列) |
| 固有値・固有ベクトル | Av = λv を満たす λ と v(方向が変わらないベクトル) | 主成分分析、ページランク |
| 等差数列・等比数列 | an = a + (n−1)d、an = arn−1 | 減価償却、複利計算 |
| フィボナッチ数列 | Fn = Fn−1 + Fn−2(1, 1, 2, 3, 5, 8, …) | 再帰の例題、漸化式の読み取り |
| 対数 | loga(xy) = logax + logay、logaxn = n logax | 桁数の見積り、計算量 O(log n) |
| 三角関数 | sin・cos・tan。角度と辺の比を対応させ、波を sin・cos の合成で表す | 信号処理(波形の分解)、座標の回転・変換 |
| 二項展開の近似 | x が十分小さいとき (1+x)n ≒ 1 + nx | 誤差の伝播、利率の概算 |
数値解析 ― 近似解の求め方と誤差
方程式を式変形で解けないとき、コンピュータは反復計算で近似解に近づけます。近似解と真の値の差が絶対誤差、それを真の値で割ったものが相対誤差です。反復を有限回で止めることによる誤差が打切り誤差、各ステップの丸めが積み重なるのが丸め誤差で、両者は反復回数を増やすと逆方向に動きます。
計算の型: 二分法の反復回数
f(a) と f(b) の符号が異なる区間 [a, b] の中点で符号を調べ、解を含む側に区間を半分に狭める。1 回で幅が 1/2 になるので、幅 L を ε 以下にする回数 n は 2n ≧ L ÷ ε を満たす最小の n。
例題: 幅 500 の区間に解が 1 つある。二分法で幅を 1 以下に絞るには最低何回反復するか。
- L ÷ ε = 500 ÷ 1 = 500
- 28 = 256 < 500 ≦ 512 = 29
- 答え: 9 回。必ず収束するが速度は 1 回 1 ビット分と遅い
| 手法 | 考え方 | 特徴 |
|---|---|---|
| 二分法 | 符号が変わる区間を半分ずつ狭める | 確実に収束、遅い |
| ニュートン法 | xn+1 = xn − f(xn) ÷ f′(xn)。接線と x 軸の交点を次の近似値にする | 収束が速い(2 次収束)。初期値が悪いと発散、微分が必要。√2 は f(x)=x2−2 で x0=1.5 → 1.4167 → 1.41422 |
| 補間法 | 既知の点の間を多項式でつないで値を推定 | ラグランジュ補間・スプライン |
| オイラー法 | 微分方程式を刻み幅 h で 1 歩ずつ進める | 刻み幅が大きいと誤差が大きい |
| 数値積分 | 台形則・シンプソン法(区間を放物線で近似)で面積を足し合わせる | シンプソン法の方が精度が高い |
| モンテカルロ法 | 乱数を大量に発生させて確率的に近似(円周率、待ち行列のシミュレーション) | 試行回数を増やすと精度が上がる |
| 数式処理 | 数値でなく記号のまま因数分解・微分・積分を行う | 数式処理システム(丸め誤差が出ない) |
グラフ理論と最適化問題
グラフは頂点(ノード)と辺(エッジ)の集まりで、ネットワーク構成・工程・状態遷移など「つながり」を表す共通言語です。辺に向きがあれば有向グラフ、なければ無向グラフで、頂点 i と j が辺で結ばれていれば 1 を置く隣接行列で表現できます(無向なら対称行列)。木は閉路を持たない連結グラフで、n 頂点なら辺は必ず n−1 本です。「辺の数が頂点の数より 1 少なく、かつ連結」なら木、閉路が 1 つでもあれば木ではありません。
| 用語 | 定義 |
|---|---|
| 完全グラフ | すべての頂点の組が辺で結ばれている。n 頂点で辺は n(n−1)/2 本 |
| 重み付きグラフ | 辺に距離・コストが付く。最短経路問題(ダイクストラ法は第 3 章) |
| 閉路グラフ | すべての頂点が 1 つの輪になっている |
| 正則グラフ | すべての頂点の次数(つながる辺の数)が等しい |
| 経路・連結 | 頂点から頂点へ辺をたどれること。どの 2 頂点間にも経路があれば連結 |
最適化問題は制約条件の下で目的関数を最大・最小にする問題です。変数が連続なら連続最適化(線形計画法: 目的関数と制約がすべて 1 次式で、最適解は実行可能領域の頂点にある)、選択肢が離散なら組合せ最適化(ナップサック問題、巡回セールスマン問題)に分かれます。部分問題の解を表に記録して再利用する動的計画法は組合せ最適化の基本技法で、PERT(Program Evaluation and Review Technique)のクリティカルパス計算(前進計算・後退計算)や最短経路のアルゴリズムも動的計画法の一種です。巡回セールスマン問題は都市数が増えると解の候補が爆発的に増え、多項式時間の解法が知られていません(後述の NP 困難)。
待ち行列理論 ― M/M/1 モデル
待ち行列理論は、窓口に客がランダムに到着してサービスを受けるシステムの待ち時間を確率的に見積もる理論です。ATM・コールセンター・Web サーバの応答時間・通信回線の伝送待ちに共通して使え、M/M/1 モデルは 10 年で 8 問と本章の最頻出テーマです。公式は 1 本、出題の数値パターンは 3 つしかありません。
モデルの記法と用語
M/M/1 はケンドール記法で「到着分布/サービス時間分布/窓口数」を表し、M はマルコフ性(厳密には無記憶性)を意味します。到着がポアソン分布(到着間隔は指数分布)、サービス時間も指数分布、窓口が 1 つ、待ち行列の長さに制限がなく先着順(FIFO:First In First Out)でサービスする、が前提です。「先着順」という前提を変える運用(優先順位付け)はモデルの前提に反する、という読解問題(平成 28 年春期)も出ています。
| 記号 | 名称 | 意味・関係 |
|---|---|---|
| λ | 平均到着率 | 単位時間あたりの到着数。平均到着間隔 = 1/λ |
| μ | 平均サービス率 | 単位時間あたりに処理できる数。平均サービス時間 Ts = 1/μ |
| ρ | 利用率(トラフィック密度) | ρ = λ/μ = λ × Ts。窓口が忙しい時間の割合。ρ < 1 でないと行列が無限に伸びる |
| Tw | 平均待ち時間 | 行列に並んでからサービス開始まで。Tw = ρ/(1−ρ) × Ts |
| Tq | 平均応答時間(滞留時間) | Tq = Tw + Ts = Ts/(1−ρ) |
| Lq / L | 平均待ち行列長 / 平均系内人数 | Lq = ρ2/(1−ρ)、L = ρ/(1−ρ)(リトルの公式 L = λ × Tq) |
計算の型: M/M/1 の平均待ち時間(出題 3 型)
Tw = ρ/(1−ρ) × Ts (ρ = λ × Ts)
例題(基本): 1 時間に平均 6 件の問合せが来て、1 件の処理に平均 6 分かかる窓口の平均待ち時間と平均応答時間は。
- ρ = λ × Ts = 6 件/時 × 0.1 時間 = 0.6(単位を時間にそろえる)
- Tw = 0.6/(1−0.6) × 6 分 = 1.5 × 6 = 9 分
- Tq = Tw + Ts = 9 + 6 = 15 分(= 6/(1−0.6))
① 閾値型「待ち時間がサービス時間の k 倍以上になる利用率」→ ρ/(1−ρ) ≧ k を解く。k=1 なら ρ ≧ 0.5、k=3 なら ρ ≧ 0.75。
② 倍率型「利用率が 0.25 から 0.40 に上がると待ち時間は何倍か」→ (0.4/0.6) ÷ (0.25/0.75) = 0.667 ÷ 0.333 = 2.0 倍。ρ の比 1.6 倍ではない。
③ 統合型「同じ性能の窓口 2 か所(各 ρ)を 1 か所に統合し、到着率が 2 倍になった」→ ρ′ = 2ρ なので Tw′ = 2ρ/(1−2ρ) × Ts。ρ のまま計算する肢が誤答。
応答時間 Tq = Ts/(1−ρ) と待ち時間 Tw = ρ × Ts/(1−ρ) は ρ 倍の違いです。問題文が「待ち時間」なのか「応答時間(処理を含む)」なのかを最初に確認してください。待ち行列モデルで扱いにくい複雑なシステムは、乱数で到着とサービスを再現するシミュレーション(モンテカルロ法)で評価します。
情報理論と符号理論 ― 情報量・ハフマン符号・標本化
情報理論は「情報の量」を確率で測る理論です。めったに起きない事象ほど、それが起きたと知らされたときの驚きは大きい ― この直感を式にしたのが情報量で、生起確率 p の事象が起きたと知ったときの情報量は log2(1/p) ビットです。p = 1/2 なら 1 ビット、p = 1/8 なら 3 ビットになります。情報源全体の平均情報量がエントロピー H = Σ pi log2(1/pi) で、これがその情報源を符号化するのに必要な平均ビット数の下限(=一意復号可能な符号、代表的には接頭語符号を前提として、これ以上は圧縮できない限界)を与えます。
| 符号化の目的 | 呼び方 | 代表例 |
|---|---|---|
| 効率を上げる(短くする) | 情報源符号化(データ圧縮) | ハフマン符号、ランレングス符号 |
| 信頼性を上げる(誤りに強くする) | 通信路符号化(誤り検出・訂正) | パリティ、CRC、ハミング符号 |
| 安全性を上げる(第三者に読ませない) | 暗号化 | 共通鍵暗号、公開鍵暗号(第 12 章) |
情報源符号化はデータを短くし、通信路符号化は逆に冗長なビットを足します。目的が正反対なので、「圧縮したのに誤り訂正もできる」といった肢は疑ってかかります。
ハフマン符号 ― 出現確率で符号長を変える
ハフマン符号は、出現確率の高い文字に短い符号、低い文字に長い符号を割り当てる可変長符号です。作り方は「確率が最小の 2 つを選んで 1 つにまとめる」を繰り返すだけで、できあがった木の枝に 0 と 1 を振れば符号表になります(図 2-6)。
計算の型: 平均符号長
平均符号長 = Σ(その文字の出現確率 × その文字の符号長)。固定長符号との比を問われたら、固定長は log2(文字種数)を切り上げたビット数。
例題: 図 2-6 の符号表で、平均符号長は固定長符号の何倍になるか。
- ハフマン: 0.45×1 + 0.25×2 + 0.20×3 + 0.10×3 = 0.45 + 0.50 + 0.60 + 0.30 = 1.85 ビット
- 固定長: 4 文字なので log24 = 2 ビット
- 答え: 1.85 ÷ 2 = 0.925 倍(7.5% 短縮)。確率の偏りが大きいほど圧縮率は上がる
連続する同じ値をまとめるランレングス符号(AAAAABBB を A5B3 とする)は、白と黒が続く FAX 画像のように同じ値が連続するデータで効きます。逆にランダムなデータでは符号が伸びることもあります。可逆圧縮(ZIP、PNG、ハフマン、ランレングス)と非可逆圧縮(JPEG、MP3)の区別も押さえます。
アナログとデジタル ― 標本化・量子化・符号化
音声や温度のような連続量(アナログ)をコンピュータで扱うには、標本化(時間を一定間隔で区切って値を読む)→量子化(読んだ値を決められた段階に丸める)→符号化(段階の番号を 2 進数で表す)の 3 段階で数値化します。
この一連の処理が A/D 変換であり、パルスの符号として送る方式が PCM(Pulse Code Modulation:パルス符号変調)です(図 2-7)。
計算の型: A/D 変換後のデータ量
データ量(ビット) = 標本化周波数(Hz) × 量子化ビット数 × チャネル数 × 秒数。バイトにするには 8 で割る。
例題: 標本化周波数 40 kHz、量子化 16 ビット、モノラルで 1 秒間の音声を記録すると何 k バイトか。
- 40k × 16 × 1 × 1 = 640k ビット
- 640k ÷ 8 = 80k バイト
- ステレオ(2 チャネル)なら 160k バイト。ビットのまま答える 640k と、ステレオの倍率忘れが定番の誤答肢
文字コード
| 符号系 | 特徴 | 1 文字のバイト数 |
|---|---|---|
| ASCII | 英数字・記号の基本。7 ビット(128 種類) | 1 |
| JIS コード | エスケープシーケンスで漢字と英数字を切り替える。電子メールで使われた | 可変 |
| シフト JIS | ASCII と共存させるため漢字コードをずらした。Windows 系で普及 | 1〜2 |
| EUC(拡張 UNIX コード) | UNIX 系で使われた日本語符号系 | 1〜3 |
| Unicode / UCS | 世界中の文字に共通の番号(符号位置)を与える規格 | 符号化方式による |
| UTF-8 | Unicode の符号化方式。ASCII と互換で英数字は 1 バイト、日本語は 3 バイトが基本 | 1〜4(可変長) |
UTF-8 は先頭バイトのビットパターンで「この文字が何バイトか」が分かる自己同期的な設計になっており、ASCII 文字はそのまま 1 バイトで表せます。この互換性が Web での事実上の標準になった理由です。
形式言語・オートマトン・計算量
この節のテーマは、中分類「基礎理論」としては直近 10 年で BNF が 1 回(平成 29 年春期)出たのみの薄い領域です。ただし逆ポーランド記法・計算量はアルゴリズム分野(第 3 章)、構文解析はソフトウェア分野(第 6 章)で問われるので、用語と読み方だけは確実にしておきます。
述語論理と推論
命題論理が「真か偽かが決まった文」を扱うのに対し、述語論理は「x は社員である」のように変数を含む文(述語)と、「すべての」「ある」といった量化子を扱います。関係データベースの問合せは、述語を満たす行を集める操作として述語論理で説明できます。
推論には、一般的な規則から個別の結論を導く演繹推論(規則が正しければ結論も必ず正しい)と、個別の観察から一般規則を導く帰納推論(結論は確からしいだけで、反例で覆る)があります。機械学習はデータから規則を導くので帰納推論に当たります。
形式言語と BNF
形式言語は、記号の並び(文字列)のうちどれが「正しい文」かを文法で厳密に定義した言語です。プログラム言語の構文定義には BNF(Backus-Naur Form)がよく使われ、非終端記号を ::= の左辺に、選択肢を | で区切って書きます。再帰的な定義で「任意の長さ」を表せるのが要点です。
<数字> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<整数> ::= <数字> | <整数><数字>
<符号付> ::= <整数> | + <整数> | - <整数>
この定義では、<整数> が自分自身を左に含むので 1 桁でも 100 桁でも表せます。BNF の問題は「この文法で生成できない文字列はどれか」という形が定番で、定義を 1 文字ずつ当てはめて確かめれば解けます。同じ内容を図で表したものが構文図式です。文法の種類では、規則の左辺が非終端記号 1 個だけの文脈自由文法がプログラム言語の構文に使われます。文字列のパターンを簡潔に表す正規表現は、文脈自由文法より表現力が低い代わりに有限オートマトンで判定できます。
逆ポーランド記法と構文木
演算子を被演算子の後ろに置く記法が逆ポーランド記法(後置記法)で、括弧なしで演算順序を一意に表せます。式 (A + B) × (C − D) は AB+CD-* となり、左から読んでスタックに積む・演算子が来たら 2 つ取り出して計算する、という単純な手順で評価できます。構文木でいえば、通常の中置記法は木を左・根・右の順(中間順)に、逆ポーランドは左・右・根の順(後行順)にたどった結果です。
オートマトンと計算のモデル
有限オートマトンは、有限個の状態と、入力記号ごとの遷移だけを持つ最も単純な計算モデルです。入力を最後まで読んだときの状態が受理状態なら、その文字列を受理します。試験では状態遷移表を与えて「受理される文字列はどれか」を問う形で出るので、初期状態から 1 文字ずつ指でたどるのが確実です。同じ内容を、状態を丸・遷移を矢印で描いた図が状態遷移図です。
| 現在の状態 | 意味 | 入力が 0 | 入力が 1 |
|---|---|---|---|
| S0(初期状態) | 直前が 0 でない | S1 | S0 |
| S1 | 直前が 0 | S1 | S2 |
| S2(受理状態) | 末尾が 01 | S1 | S0 |
この表は「末尾が 01 である 2 進文字列」を受理します。1101 なら S0 →(1)S0 →(1)S0 →(0)S1 →(1)S2 で受理、010 なら S0 → S1 → S2 → S1 で終わるので受理されません。プッシュダウンオートマトンは有限オートマトンにスタックを足したもので、括弧の対応のような「数を覚える」処理ができ、文脈自由文法に対応します。さらに無限のテープを持つチューリング機械は、現在のコンピュータで計算できるものすべてを表現できる理論モデルです。
計算量と正当性
アルゴリズムの効率は、入力サイズ n に対する処理量の増え方(オーダー記号 O)で表します。実行時間の増え方が時間計算量、必要な記憶領域が領域計算量です。
| オーダー | 意味 | 例 |
|---|---|---|
| O(1) | 入力サイズに依存しない | ハッシュ表の探索、配列の添字アクセス |
| O(log n) | 1 回で候補が定数分の 1 になる | 2 分探索、二分法、平衡木の探索 |
| O(n) | 全件を 1 回走査 | 線形探索、最大値の探索 |
| O(n log n) | 分割統治 | クイックソート(平均)、マージソート |
| O(n2) | 二重ループ | バブルソート、選択ソート |
| O(2n) | 組合せの全探索 | 部分集合の列挙、ナップサック問題の全探索 |
| O(n!) | 全順列の列挙 | 素朴な巡回セールスマン問題(全都市の並べ方を試す) |
多項式時間(n の何乗かで抑えられる)で解ける問題の集まりが P 問題、答えが与えられればそれが正しいかを多項式時間で検証できる問題の集まりが NP 問題です。NP の中で最も難しい一群が NP 完全問題で、そのどれか 1 つでも多項式時間で解ければ NP のすべてが解けます。P = NP かどうかは未解決です。NP 完全問題と同等以上に難しい問題(NP に属するとは限らない)は NP 困難と呼ばれ、巡回セールスマン問題の最適化版がその例です。
プログラムが仕様どおりかを数学的に議論するのが正当性理論で、「停止すれば正しい結果を返す」ことが部分正当性、「必ず停止し、かつ正しい結果を返す」ことが全正当性です。任意のプログラムが停止するかどうかを判定する一般的なアルゴリズムは存在しない(停止問題は決定不能)ことが証明されており、テストが必要な理論的な根拠になっています。
コンパイラ理論とプログラム言語論
| 工程 | やること | 関係する理論 |
|---|---|---|
| 字句解析 | 文字の並びを単語(トークン)に切る | 正規表現・有限オートマトン |
| 構文解析 | トークンの並びから構文木を作る | BNF・文脈自由文法 |
| 意味解析 | 型の整合性や未定義変数を検査する | 意味論 |
| 最適化 | 不要な計算の削除、ループの改善 | 中間言語(中間コード) |
| コード生成 | 目的プログラム(機械語)を出力する | 命令セット |
プログラム言語は、処理の手順を書く手続型言語、値の変換を関数の合成で書く関数型言語、事実と規則を宣言して処理系に推論させる論理型言語、データと操作をまとめるオブジェクト指向言語に大別されます。詳しくは第 6 章で扱います。
AI と機械学習 ― 学習の種類・過学習・評価指標
AI は「人間が知識を書き下してルールで解く」段階から、「データから規則を学習する」段階へ移りました。前者の代表がエキスパートシステムで、専門家の知識を if-then 形式で蓄えた知識ベースと、それを組み合わせて結論を出す推論エンジンからなります(知識工学の成果)。
後者が機械学習で、どのようなデータからどれだけ学べるかを扱う理論的な枠組みが学習理論、未知のデータに対しても正しく働く能力が汎化性能です。問題の種類では、与えられた事実から答えを絞り込む解析型問題(診断・分類)と、部品を組み合わせて解を作る合成型問題(設計・計画)に分けられます。
機械学習の 3 分類
| 種類 | 与えるデータ | 目的 | 代表的な手法 |
|---|---|---|---|
| 教師あり学習 | 入力と正解ラベルの組 | 回帰(数値の予測)・分類(クラスの予測) | 線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、SVM(サポートベクトルマシン) |
| 教師なし学習 | 入力のみ(正解なし) | データの構造を見つける | クラスタリング(k-means 法)、次元削減(主成分分析) |
| 強化学習 | 行動に対する報酬 | 報酬の合計を最大にする方策を学ぶ | Q 学習、価値反復法、方策勾配法 |
| 半教師あり学習 | 少量のラベル付き + 大量のラベルなし | ラベル付けのコストを下げる | — |
「顧客をあらかじめ決めた区分に振り分ける」のは教師あり学習の分類、「顧客を似た者どうしにまとめ、区分そのものを見つける」のは教師なし学習のクラスタリングです。正解ラベルの有無で見分けます。主成分分析は、多数の変数を情報の損失が小さくなるように少数の合成変数へまとめる次元削減の手法で、令和 5 年秋期に出題されています。
データの分け方と過学習
手元のデータは訓練データ(パラメータを学習する)・検証データ(ハイパーパラメータの調整とモデル選択)・テストデータ(最終的な性能測定。一度だけ使う)に分けます。
人が指定する設定値(学習率、木の深さ、正則化の強さなど)がハイパーパラメータで、候補を総当たりするグリッドサーチや無作為に試すランダムサーチで調整します。
データを 1 回だけ分割して評価する方法がホールドアウト検証、データを k 個に分けて「1 個を検証・残りを訓練」を k 回繰り返し平均する方法が交差検証(k 分割交差検証)です。交差検証はデータが少ないときに評価のばらつきを抑えられます。
| 状態 | 訓練データでの精度 | 未知データでの精度 | 対策 |
|---|---|---|---|
| 過学習(オーバーフィッティング) | 高い | 低い | 訓練データを加工して量を増やす(データ拡張)、正則化、ドロップアウト、早期打切り、モデルを単純にする |
| 未学習(アンダーフィッティング) | 低い | 低い | モデルを複雑にする、特徴量を増やす、学習を長くする |
訓練データでの誤差が訓練誤差、未知のデータでの誤差が汎化誤差で、両者の差が大きいほど過学習が進んでいます。モデルが単純すぎて系統的にずれることをバイアス、複雑すぎて訓練データのゆらぎに振り回されることをバリアンスと呼び、片方を下げるともう片方が上がる関係(バイアスとバリアンスのトレードオフ)にあります。複数のモデルの予測を組み合わせて安定させるアンサンブル学習(ランダムフォレストはその一種)も汎化性能を上げる定番です。入力の小さな変化や想定外の入力で性能が落ちにくい性質は AI のロバスト性と呼ばれます。
混同行列と評価指標
分類モデルの性能は、予測と実際を突き合わせた 2 行 2 列の混同行列から導きます。どの指標も「分母が何か」を押さえれば区別でき、令和 7 年秋期の偽陽性率のように定義そのものが問われます(図 2-9)。
| 指標 | 定義(分母に注目) | 言い換え |
|---|---|---|
| 正解率(Accuracy) | (TP+TN) ÷ 全件 | 全体のうち当たった割合 |
| 適合率(Precision) | TP ÷ (TP+FP) | 陽性と予測したもののうち本当に陽性の割合 |
| 再現率(Recall)= 真陽性率 | TP ÷ (TP+FN) | 実際に陽性のもののうち拾えた割合 |
| 偽陽性率(FPR) | FP ÷ (FP+TN) | 実際は陰性のものを誤って陽性と予測した割合 |
| F 値 | 適合率と再現率の調和平均 | 2 つのバランスを 1 つの数にまとめた値 |
| ROC 曲線 / AUC | 横軸 FPR、縦軸 TPR の軌跡 / その下の面積 | AUC = 0.5 でランダム、1.0 で完全 |
| PR 曲線 | 横軸 再現率、縦軸 適合率 | 陽性が極端に少ないデータで ROC より実態を映す |
ディープラーニングと生成 AI
ニューラルネットワークは、入力を重み付きで足し合わせて活性化関数に通す素子(ニューロン)を層状につないだモデルです。層を深く重ねたものがディープラーニング(深層学習)で、出題では一貫して「多層の素子と信号線で構成し、パラメータを調整することで解を出力する」「脳の神経回路のように多層の処理を重ねて複雑な判断をする」という説明が正解になっています。誤答肢にはエキスパートシステム・遺伝的アルゴリズム・クラスタリングの説明が並びます。
| 用語 | 内容 |
|---|---|
| 多層パーセプトロン | 入力層・中間(隠れ)層・出力層からなる基本形 |
| バックプロパゲーション(誤差逆伝播法) | 出力の誤差を出力側から入力側へ伝えて重みを更新する学習法 |
| 勾配消失問題 | 層を深くすると入力側へ伝わる勾配が 0 に近づき学習が進まなくなる。ReLU 関数などで緩和 |
| 活性化関数 | ReLU、tanh、出力を確率にするソフトマックス関数 |
| ドロップアウト | 学習のたびに一部の素子を無効化し、過学習を防ぐ |
| 事前学習・ファインチューニング・転移学習 | 大規模データで学習済みのモデルを、少量のデータで目的の課題に適応させる |
| バッチ / ミニバッチ / オンライン学習 | 重みを更新する単位(全データ / 小分け / 1 件ずつ) |
| CNN(畳み込みニューラルネットワーク) | 画像の局所的な特徴を畳み込みで抽出する。画像認識の標準 |
| RNN(リカレントニューラルネットワーク)/ LSTM(Long Short Term Memory) | 時系列や文章のように順序のあるデータを扱う。LSTM は長い依存関係を保持 |
| オートエンコーダ / GAN(敵対的生成ネットワーク)/ 拡散モデル | 生成モデル。GAN は生成器と識別器を競わせる |
| 深層強化学習 | 強化学習の価値関数や方策をディープラーニングで表現する。囲碁・ロボット制御 |
| Transformer / 自己注意機構 | 系列内のどの要素に注目するかを重みで学習する。LLM の基盤 |
| 基盤モデル / 大規模言語モデル(LLM) | 大量データで自己教師あり学習した汎用モデル。プロンプトで多様な課題に適応する。指示文の与え方を工夫して性能を引き出す技術がプロンプトエンジニアリング |
| ゼロショット / フューショット学習 | 例を与えずに / 少数の例だけで課題を解かせる |
| インストラクションチューニング | 指示と応答の組で追加学習し、指示どおりに応答する性質を高める |
| アラインメント / RLHF | 人間の意図や価値観に沿った出力へ調整する。人間のフィードバックによる強化学習 |
| モデル圧縮(蒸留・量子化・プルーニング) | 精度を保ちながらモデルを小さく・速くする |
通信理論 ― 伝送・変調・誤り検出/訂正・計測制御
通信理論のうち中分類「基礎理論」で実際に出るのは誤り検出・訂正(直近 10 年で 6 問)にほぼ集中しています。伝送路・変復調・多重化・同期方式はネットワーク分野(第 10 章)で問われるため、ここでは用語表で対応関係を押さえます。
| 分類 | 方式 | 内容 |
|---|---|---|
| 伝送路 | 単方向 | 一方向にだけ送る |
| 半二重 | 双方向だが同時には送れない(交互) | |
| 全二重 | 双方向に同時に送れる | |
| 変復調 | AM(振幅変調) | 信号に応じて搬送波の振幅を変える |
| FM(周波数変調) | 搬送波の周波数を変える | |
| PM(位相変調) | 搬送波の位相を変える | |
| QAM(直交振幅変調) | 振幅と位相を組み合わせ、1 回の変調で複数ビットを送る | |
| PCM(パルス符号変調)/PWM(パルス幅変調) | 標本化・量子化した値をパルスの符号/パルスの幅で表す | |
| 多重化 | FDM(周波数分割多重) | 周波数帯を分けて同時に使う |
| TDM(時分割多重) | 時間を細かく区切って交代で使う | |
| CDM(符号分割多重) | 利用者ごとに異なる符号で拡散して重ねる | |
| WDM(波長分割多重) | 光の波長を分けて 1 本の光ファイバに多重する | |
| 信号同期 | ビット同期 | 受信側のクロックを送られてくるビットの並びに合わせる、同期の最小単位 |
| 調歩同期(スタート・ストップビット) | 1 文字ごとに開始・終了ビットを付ける。低速・単純 | |
| キャラクター同期(SYN 同期) | SYN 符号を並べて文字の切れ目をそろえる | |
| フラグ同期(フレーム同期) | フレームの前後に特定のビットパターン(フラグ)を置く |
アナログ伝送路にデジタルデータを乗せる装置がモデム(変調と復調を行う)です。暗号化(公開鍵・秘密鍵・PKI・SSL/TLS)も広い意味では符号理論に含まれますが、内容は第 12 章で扱います。
パリティチェックと 2 次元パリティ
最も単純な誤り検出がパリティチェックです。データ中の 1 の個数が偶数になるように 1 ビット付加するのが偶数パリティ、奇数にするのが奇数パリティで、1 ビットの誤りは検出できますが、2 ビット同時に反転すると見逃します(検出だけで訂正はできない)。合計値を送って照合するチェックサムも検出だけです。
データを 2 次元に並べ、行と列の両方にパリティを付けたものが 2 次元パリティ(水平垂直パリティ)です。1 ビット誤りがあると行と列の 1 つずつが不一致になり、その交点が誤りビットの位置なので、検出だけでなく訂正まで可能になります。
| 1 列 | 2 列 | 3 列 | 4 列 | 行パリティ | |
|---|---|---|---|---|---|
| 1 行 | 1 | 0 | 1 | 1 | 1 |
| 2 行 | 0 | 1 | 0 | 0 | 0 不一致 |
| 3 行 | 1 | 1 | 0 | 0 | 0 |
| 4 行 | 0 | 0 | 1 | 1 | 0 |
| 列パリティ | 0 | 0 | 1 不一致 | 0 | 1 |
偶数パリティでは、データと付加したパリティを合わせた 1 の個数が偶数にならない行・列が不一致です。2 行目はデータの 1 が 1 個(奇数)なのに行パリティが 0、3 列目はデータの 1 が 2 個(偶数)なのに列パリティが 1 で、どちらも合計が奇数になり不一致です。不一致の行と列が 1 つずつなので、その交点である2 行 3 列のビットを反転すれば訂正完了です。「2 次元パリティは何ビットまで訂正できるか」に「2 ビット」や「検出のみ」を選ばせる誤答肢が定番なので、1 ビットの誤りを訂正できる(2 ビットの誤りは検出できても位置を特定できない)と覚えます。
ハミング符号 ― 検査式から誤り位置を求める
ハミング符号は、複数の検査ビットが受け持つ位置を重ねてずらすことで、どのビットが誤ったかを検査結果の組合せから特定できるようにした符号です。7 ビット符号語 x1〜x7 に対して 3 本の検査式を与える形が定番で、3 本の結果を並べた 2 進数がそのまま誤り位置を示します(図 2-10)。
計算の型: ハミング符号の訂正
受信した符号語を問題文の検査式に代入 → 結果を並べて 2 進数として読む → その位置のビットを反転する。
- 受信 1100010 を代入: c1 = 1⊕0⊕0⊕0 = 1、c2 = 1⊕0⊕1⊕0 = 0、c4 = 0⊕0⊕1⊕0 = 1
- c4 c2 c1 = 101(2 進)= 5
- 5 番目のビット x5 を 0 から 1 に反転 → 1100110
- 検算: 訂正後は c1 = c2 = c4 = 0。誤答肢は反転位置を 1 つずらした符号語、未訂正のまま、2 か所反転
CRC(巡回冗長検査)は、送信データを 1 つの多項式とみなし、あらかじめ決めた生成多項式で割った余りを検査符号として付加する方式です。受信側は同じ生成多項式で割り、余りが 0 なら誤りなしと判断します。連続した複数ビットの誤り(バースト誤り)に強く、通信やストレージで広く使われます。訂正はできず検出専用である点が、ハミング符号や 2 次元パリティとの違いです。主記憶で使われる ECC(Error Correcting Code:誤り訂正符号) はハミング符号系の訂正機能付き符号で、1 ビット訂正・2 ビット検出(SECDED)が代表的な実装です(ECC には方式差があり、すべてがこの仕様とは限りません)。
| 方式 | できること | 付加する情報 |
|---|---|---|
| パリティチェック | 1 ビット誤りの検出 | 1 ビット |
| チェックサム | 誤りの検出 | 合計値 |
| CRC | バースト誤りを含む検出 | 生成多項式で割った余り |
| 2 次元パリティ | 1 ビット誤りの訂正 | 行と列のパリティ |
| ハミング符号・ECC | 1 ビット訂正・2 ビット検出 | 複数の検査ビット |
計測・制御の基礎
制御対象の状態をセンサーで読み取り(A/D 変換)、コンピュータが判断し、アクチュエーターを通じて機械的な動作に変える(D/A 変換)のが計測・制御の基本構造です。結果を測って入力に戻す制御がフィードバック制御(クローズドループ)、外乱をあらかじめ見込んで先回りする制御がフィードフォワード制御で、結果を測らずに指令だけ出すのがオープンループです。応答の速さ(応答特性)と振動しないこと(制御安定性)はトレードオフになります。
| 分類 | 用語 | 内容 |
|---|---|---|
| 信号処理 | DFT / FFT | 波形を周波数成分に分解する離散フーリエ変換と、その高速アルゴリズム。系にインパルスを入力したときの出力がインパルス応答で、系の特性を表す |
| フィルター | ローパス(低域通過)・ハイパス・バンドパス。標本値の演算で実現するものがデジタルフィルター。雑音の除去、画像処理フィルター | |
| サンプリング定理 | 最高周波数の 2 倍以上で標本化すれば元の波形に戻せる | |
| 制御 | PWM 制御 | パルスの幅(オンの時間の割合)で平均電力を変え、モーターの回転数や LED の明るさを制御する |
| リアルタイム OS | 決められた時間内に必ず処理を終えることを保証する OS(第 5 章) | |
| MPU アーキテクチャ | 制御用マイクロプロセッサの構成。組込み機器の処理性能と消費電力を決める(第 7 章) | |
| センサー | 光・画像系 | 光学センサー、イメージセンサー、赤外線センサー、X 線センサー、レーザーセンサー |
| 距離・測位系 | ToF(Time of Flight)センサー、LiDAR、ミリ波レーダー、超音波センサーなどの距離センサー、GPS・基地局測位・無線 LAN アクセスポイント測位・RTK 測位 | |
| 運動・環境系 | 加速度・ジャイロ・地磁気センサーと慣性計測装置(IMU)、位置センサー・速度センサー、温度(サーミスタ)・湿度・圧力・大気圧センサー、ひずみゲージ、ホール素子、ウェアラブル生体センサー | |
| アクチュエーター | モーター・シリンダ | ブラシレス DC モーター、DC サーボモーター、ステッピングモーター、ソレノイド、油圧・空気圧シリンダ |
ToF センサーは、光を照射してから反射光が戻るまでの時間から距離を測る方式で、平成 31 年春期に出題されています。名前から動作原理を答えられるようにしておけば十分です。
ひっかけポイント
理解度チェック(科目 A 形式)
Q1. M/M/1 の待ち行列モデルにおいて、窓口の利用率が 30% から 60% に上がったとき、平均待ち時間は何倍になるか。
- 1.75
- 2.0
- 3.5
- 7.0
正解: ウ 平均待ち時間は ρ/(1−ρ) × Ts に比例します。0.6/(1−0.6) = 1.5、0.3/(1−0.3) = 0.4286 なので 1.5 ÷ 0.4286 = 3.5 倍です。ア は平均応答時間 Ts/(1−ρ) の比(2.5 ÷ 1.4286)、イ は利用率そのものの比、エ は平均待ち行列長 ρ2/(1−ρ) の比で、いずれも問われている待ち時間ではありません。
Q2. 4 種類の文字 A、B、C、D の出現確率がそれぞれ 0.5、0.3、0.15、0.05 である。ハフマン符号として適切な(一意に復号でき、平均符号長が最小になる)割当てはどれか。
- A:0 B:1 C:10 D:11
- A:0 B:10 C:110 D:111
- A:111 B:110 C:10 D:0
- A:00 B:01 C:10 D:11
正解: イ 確率の小さい C と D を結合(0.20)、次に B と結合(0.50)、最後に A と結合してハフマン木を作ると、この符号表になります。平均符号長は 0.5×1 + 0.3×2 + 0.15×3 + 0.05×3 = 1.7 ビットです。ア は B の符号「1」が C の「10」と D の「11」の先頭に現れており、1 を読んだ時点で B・C・D のどれかを確定できず一意に復号できません(接頭語条件違反)。ウ は最も多く出現する A に最長の符号を与えており平均符号長が伸びます。エ は固定長 2 ビットで、そもそも圧縮になっていません。
Q3. ディープラーニングの説明として、最も適切なものはどれか。
- 専門家の知識を if-then 形式の規則として蓄え、推論エンジンが規則を連鎖させて結論を導く。
- 解の候補を遺伝子に見立て、交叉と突然変異と選択を世代交代で繰り返して最適解に近づける。
- 正解ラベルを与えずにデータ間の距離を測り、似たもの同士をまとめて集団に分ける。
- 多層に接続した素子と信号線からなるモデルのパラメータを、データを用いて調整することで解を出力する。
正解: エ ディープラーニングは、ニューラルネットワークの層を深く重ねたモデルの重み(パラメータ)を、誤差逆伝播法などでデータから調整する手法です。ア はエキスパートシステム、イ は遺伝的アルゴリズム、ウ は教師なし学習のクラスタリングの説明で、いずれも典型的な誤答肢です。
Q4. 7 ビットの符号語 x1 x2 x3 x4 x5 x6 x7 は、x1⊕x3⊕x5⊕x7、x2⊕x3⊕x6⊕x7、x4⊕x5⊕x6⊕x7 がいずれも 0 になるように作られている(⊕ は排他的論理和)。0110101 を受信したとき、1 ビットの誤りを訂正した符号語はどれか。
- 0100101
- 0110101
- 0111101
- 1110101
正解: ア 3 本の式に代入すると c1 = 0⊕1⊕1⊕1 = 1、c2 = 1⊕1⊕0⊕1 = 1、c4 = 0⊕1⊕0⊕1 = 0 です。c4 c2 c1 = 011(2 進)= 3 なので 3 ビット目 x3 が誤りで、これを反転した 0100101 が正解です。イ は受信したままで未訂正、ウ は 4 ビット目、エ は 1 ビット目という誤った位置を反転しています。
Q5. 二値分類モデルの評価指標のうち、偽陽性率(false positive rate)の説明として適切なものはどれか。
- 実際に陽性であるデータのうち、陽性と予測できたものの割合
- 陽性と予測したデータのうち、実際に陽性であったものの割合
- 実際は陰性であるデータのうち、誤って陽性と予測したものの割合
- すべてのデータのうち、予測と実際が一致したものの割合
正解: ウ 偽陽性率は FP ÷ (FP+TN) で、分母は「実際に陰性」の行です。ROC 曲線の横軸に使われます。ア は再現率(真陽性率)、イ は適合率、エ は正解率の説明で、混同行列のどの行・どの列を分母にするかが違います。
Q6. 4 変数 A、B、C、D の論理関数をカルノー図で簡単化するとき、隣接する 8 個の 1 を 1 つの長方形で囲んで得られる積項に含まれる変数の個数は幾つか。
- 1
- 2
- 3
- 4
正解: ア 囲みを 2 倍にするたびに、その囲みの中で値が変化する変数が 1 つずつ消えます。4 変数では 1 個の囲みが 4 変数、2 個で 3 変数、4 個で 2 変数、8 個で 1 変数、16 個ならすべて消えて恒真になります。イ は 4 個、ウ は 2 個、エ は 1 個の囲みに対応する値です。
Q7. 機械学習において過学習を抑える対策として、適切なものはどれか。
- モデルの層数とパラメータ数を増やして表現力を高める。
- 訓練データに回転や雑音付加などの加工を施し、実質的な件数を増やす。
- 検証データを訓練データに加えて、学習に使うデータをすべて使い切る。
- 訓練誤差が下がり続けている間は学習の反復回数を増やし続ける。
正解: イ 訓練データを加工して量を増やすデータ拡張は、モデルが個々の事例を丸暗記することを防ぎ、汎化性能を高めます。ア はモデルを複雑にする操作で過学習を悪化させます。ウ は検証データが訓練に混ざり、汎化性能を正しく測れなくなります。エ は検証誤差が上向きに転じた後も学習を続けることになり、まさに過学習を招きます。
Q8. 16 ビットのデータを 4 行 4 列に並べ、各行と各列に偶数パリティビットを付加して送信した。この方式で実現できることはどれか。
- 1 ビットの誤りを検出できるが、訂正はできない。
- 2 ビットの誤りを訂正できる。
- 誤りの検出も訂正もできない。
- 1 ビットの誤りを訂正できる。
正解: エ 1 ビットが反転すると、その行のパリティと列のパリティが 1 つずつ不一致になり、交点として誤りビットの位置が一意に決まるので反転して訂正できます。ア は 1 次元の単純なパリティチェックの説明です。イ は誤りで、2 ビット誤りは不一致の組合せが複数考えられ位置を特定できません。ウ は行・列いずれのパリティも付いている以上、成り立ちません。
Q9. 4 科目の得点がいずれも正規分布に従い、受験者数も同じであるとき、80 点以上の受験者の割合が最も大きい科目はどれか。国語は平均 60・標準偏差 10、英語は平均 70・標準偏差 5、数学は平均 50・標準偏差 20、理科は平均 65・標準偏差 8 である。
- 国語
- 英語
- 数学
- 理科
正解: ウ 標準得点 z = (80 − 平均) ÷ 標準偏差 は、国語 2.0、英語 2.0、数学 1.5、理科 1.875 です。z が小さいほど分布の右側の面積が広く、80 点以上の割合が大きくなるので数学が正解です。ア と イ は z が最大で最も少数、エ も数学より大きい z です。平均が最も高い英語を選ばせるのが定番の誤答パターンです。
Q10. 0 から 511 までの値を巡回するカウンタがある。現在値 n の次の値を求める式として適切なものはどれか。ここで AND と OR はビットごとの論理積・論理和とする。
- (n + 1) AND 511
- (n + 1) OR 511
- (n AND 511) + 1
- (n + 1) AND 512
正解: ア 511 は 2 進数で 111111111 なので、511 との AND は下位 9 ビットの取り出し、すなわち 512 で割った余りと同じです。n = 511 のとき 512 AND 511 = 0 に戻ります。イ は OR なので下位 9 ビットがすべて 1 になり、n + 1 が 512 未満なら必ず 511 になってカウンタになりません。ウ は n = 511 のとき 512 となり範囲を超えます。エ の 512 は 2 進数で 1000000000 であり、下位 9 ビットが捨てられてしまいます。
Q11. 全体集合を U、その部分集合を A、B とし、A の補集合を Ā、B の補集合を B̄ と表す。Ā ∩ B̄ と常に等しい集合はどれか。
- Ā ∪ B̄
- Ā − B
- A − B̄
- B − A
正解: イ 差集合の定義 X − Y = X ∩ Ȳ を使うと Ā − B = Ā ∩ B̄ となり一致します。ア はド・モルガンの法則より A ∩ B の補集合で、A ∪ B の補集合である Ā ∩ B̄ とは別物です。ウ は A ∩ B、エ は B ∩ Ā であり、いずれも A にも B にも属さない要素の集合にはなりません。
Q12. 排他的論理和の相補演算(すべての入力の組合せに対して出力を反転させた演算)はどれか。
- 論理和(OR)
- 否定論理積(NAND)
- 否定論理和(NOR)
- 等価演算(XNOR)
正解: エ XOR の出力は入力 00、01、10、11 に対して 0、1、1、0 です。すべて反転すると 1、0、0、1 となり、2 入力が等しいときに 1 になる等価演算 XNOR に一致します。ア は 0、1、1、1、イ は 1、1、1、0、ウ は 1、0、0、0 であり、いずれも 4 行すべてが反転した形にはなっていません。
Q13. 標本化周波数 16 kHz、量子化ビット数 8 ビット、ステレオ(2 チャネル)で 5 秒間の音声を記録したときのデータ量は、およそ何 k バイトか。
- 80
- 160
- 640
- 1,280
正解: イ 16k × 8 ビット × 2 チャネル × 5 秒 = 1,280k ビットで、8 で割って 160k バイトです。ア はチャネル数を掛け忘れた値、ウ はチャネル数を掛け忘れ、さらにビットのままバイトへ換算していない値、エ はビットのままバイトに換算していない値です。ビットとバイト、モノラルとステレオの 2 点が定番のひっかけです。
まとめ
本章の得点源は、公式が 1 本しかない計算問題と、定義の入替えで作られる用語問題です。次の表の左から順に、式を見た瞬間に数値を当てはめられる状態を目指してください。
| テーマ | 覚える式・数字 | 典型的な誤答肢 |
|---|---|---|
| 基数と桁数 | N 通りには log2N を切り上げたビット数。n ビットで 2n 通り | 0 始まりと 1 始まりの ±1、位の重みの誤り |
| 2 の補数 | 全ビット反転 + 1。n ビットの範囲は −2n−1 〜 2n−1−1 | 1 の補数の範囲(0 が 2 通り)と混同 |
| 演算精度 | 桁落ち=近い値の減算、情報落ち=大小差の大きい加減算 | 2 つの定義の入替え、丸め誤差・打切り誤差の混入 |
| ビット演算 | 2k の剰余 = (2k−1) との AND | OR、AND 2k、AND の後に +1 |
| 集合・論理 | ド・モルガン、X − Y = X ∩ Ȳ、XOR の相補 = XNOR | 補集合の適用先の取り違え、NAND・NOR |
| カルノー図 | 囲み 2n 個で n 変数が消える。端は折返しで隣接 | 囲みが小さく項が多い式、否定の付け間違い |
| 確率・正規分布 | z = (x − μ) ÷ σ。z が小さい群ほど基準点以上が多い | 平均だけ・標準偏差だけの比較 |
| ベイズの定理 | P(原因|結果) = P(結果|原因)×P(原因) ÷ P(結果) | 条件付き確率と事後確率の混同 |
| M/M/1 | Tw = ρ/(1−ρ) × Ts。ρ = 0.5 で Tw = Ts。統合で到着率 2 倍なら 2ρ/(1−2ρ) | 応答時間 Ts/(1−ρ) との取り違え、ρ の単純比 |
| ハフマン符号 | 平均符号長 = Σ(確率 × 符号長)。接頭語条件を満たす | 接頭語条件違反、確率と符号長の逆転、固定長 |
| 標本化・量子化 | データ量 = 標本化周波数 × 量子化ビット数 × チャネル数 × 秒数 ÷ 8(バイト) | バイト換算漏れ、ステレオの倍率忘れ |
| 誤り検出・訂正 | パリティ・CRC = 検出のみ。2 次元パリティ・ハミング = 1 ビット訂正 | 2 ビット訂正可、CRC で訂正できる |
| 機械学習の評価 | 再現率 = TP/(TP+FN)、適合率 = TP/(TP+FP)、偽陽性率 = FP/(FP+TN) | 分母の行と列の取り違え、過学習と未学習の入替え |
直近 10 年(19 回)の科目 A では中分類「基礎理論」から 73 問、1 回平均 3.8 問が問 1〜6 に出題されており、直近 3 年の 21 問のうち 7 問は要旨・正解が過去問と一致する再出題でした。M/M/1・ハフマン符号・ハミング符号・カルノー図は同じ問題が数年おきに戻ってくるので、本章の「計算の型」を手で一度ずつ解いておけば、試験本番では読むだけで答えが出ます。
次章では、本章の計算量やグラフの考え方を土台に、探索・整列・木構造といった具体的なアルゴリズムと擬似言語の読み方を扱います。科目 B の必須問題(アルゴリズムとプログラミング)に直結する章です。