1. 離散数学
コンピュータの内部で数字がどのように表現され、計算されているかの基礎(数学的なルール)を学びます。
(1) 基数
基数(きすう)とは、数を数えるときに「いくつ集まったら桁が繰り上がるか」の基準となる数のことです。私たちが日常で使っているのは「10集まると桁が上がる」10進数です。
コンピュータの世界の基本。「0」と「1」だけで表現され、2になると桁が上がります。
(例: 0, 1, 10, 11, 100...)
長すぎる2進数を人間が見やすくするための表現。「0〜9」と「A〜F(10〜15)」を使い、16で桁が上がります。
10進数を2進数に直すには、10進数を「2でひたすら割って余りを下から読む」方法(すだれ算)を使います。
(2) 数値の表現
負の数の表現(補数表現)
コンピュータは「マイナス(-)」の記号を持っていません。そこで、補数(ほすう)というテクニックを使ってマイナスの数を表現します。
「2の補数」の作り方:
① ビットをすべて反転させる(0を1に、1を0にする) = 1の補数
② それに「1」を足す = 2の補数(これがマイナスの数として扱われます)
小数の表現方法
小数点の位置を固定して表す方法。お金の計算など、誤差を出したくない時に使います。
「1.23 × 104」のように、小数点の位置を動かして(浮動させて)表す方法。非常に大きな数や小さな数を扱えます。単精度(32ビット)より倍精度(64ビット)の方が高精度です。この時の「1.23」を仮数、「4」を指数と呼びます。
BCDとパック10進数
10進数の1桁(0〜9)を、わざわざ2進数の4ビットを使って表す方法です(例:9なら1001)。計算の誤差を無くすために事務計算などで使われます。
(3) 算術演算と精度
シフト演算(ビットをずらす計算)
2進数のビットを左右にズラすことで、掛け算や割り算を超高速に行うテクニックです。
- 左に1つズラす = 2倍になる
- 右に1つズラす = 1/2になる
単純にズラし、空いた場所には常に「0」を入れる方法。符号(プラスマイナス)を気にしないデータに使います。
先頭の「符号ビット(プラスマイナスを表すビット)」は固定したまま、残りの部分だけをズラす方法。
誤差とオーバーフロー
コンピュータは限られた桁数で計算するため、計算結果が正確にならないこと(誤差)があります。
| 用語 | 意味・原因 |
|---|---|
| 桁落ち | 値がほぼ等しい2つの数字を引き算したとき、有効な桁数がガクッと減ってしまう誤差。 |
| 情報落ち | 非常に大きな数と非常に小さな数を足し算したとき、小さな数が無視(切り捨て)されてしまう誤差。 |
| オーバーフロー (あふれ) | 計算結果が大きすぎて、コンピュータが用意した箱(桁数)に収まりきらなくなるエラー。 |
| アンダーフロー | 計算結果が「0」に近すぎて、表現できる最小の数よりも小さくなってしまうエラー。 |
(4) 集合と命題
命題(めいだい)とは、「正しい(真: True)」か「正しくない(偽: False)」かがハッキリと判定できる文章のことです。 集合は、条件を満たすものの集まりをベン図(丸い図)で表したものです。
(5) 論理演算
「1(真)」と「0(偽)」を使って行う計算です。真理値表という表を使って結果を整理します。
どれか1つでも1なら1
両方とも1の時だけ1
1と0をひっくり返す
2つの値が「違う」時だけ1
ORの結果をひっくり返す
ANDの結果をひっくり返す
「A AND B の否定」は、「Aの否定 OR Bの否定」と同じになる、という論理式の変形ルールです。式をシンプルにするために使われます。
2. 応用数学
データ分析やAIの基礎となる「確率・統計」や、行列、グラフなどの数学的原理を学びます。
(1) 確率と統計
① 確率の基本
- 階乗(!):その数から1までの全ての整数を掛け合わせる(例: 3! = 3×2×1 = 6)。
- 順列(P) と 組合せ(C):並び順を気にするのが「順列」、順番を気にせず選ぶだけなのが「組合せ」。
- 期待値:「だいたいこれくらいになるだろう」という平均的な見込みの値(確率 × もらえる金額の合計)。
- ベイズの定理:「結果」から、その「原因」が何であったかの確率(条件付き確率)を逆算する定理。迷惑メールフィルターなどに使われます。
代表的な確率分布
② 統計とデータ分析の手法
| 用語 | わかりやすい意味 |
|---|---|
| 代表値 | 平均値(全部足して割る)、中央値(メジアン)(真ん中の人の値)、最頻値(モード)(一番多く出た値)。 |
| 分散・標準偏差 | データの「ばらつき具合」を表す数値。大きいほどデータが散らばっている。 |
| 相関関係 | 「気温が上がるとアイスが売れる」のような、2つのデータの連動性のこと(相関係数で表す)。※「擬似相関」は見せかけの相関のこと。 |
| 回帰分析 | 過去のデータから数式(回帰直線)を作り、未来の数値を予測する分析手法(例: 売上予測)。 |
| ヒストグラム 箱ひげ図 | データの分布(散らばり)を視覚的にわかりやすくしたグラフ。 |
仮説検定(本当に効果があったの?)
「新しい薬は本当に効果があるのか?」などを統計的に証明する手法です。
- 帰無仮説(きむかせつ):「薬に効果はない」という、棄却(否定)したい仮説。これを否定することで、逆の「対立仮説(効果がある)」を証明します。
- 有意水準(p値):偶然起きただけと判断する確率の基準(5%など)。これより珍しいことが起きれば「効果があった」と認めます。
- 第1種の誤り:本当は効果がないのに「効果がある」と勘違いしてしまう誤り。
(2)〜(7) 応用数学の重要テーマ
数値計算 (行列・ベクトル)
スカラ(大きさだけの数)に対して、ベクトルは「大きさと向き」を持つ数。これらを縦横に並べたものが行列です。CGの回転計算などに使われます。
数値解析の誤差
- 丸め誤差:四捨五入や切り捨てをしたことで生じるズレ。
- 打切り誤差:無限に続く計算(円周率など)を、途中で打ち切ったことで生じるズレ。
グラフ理論
路線図のように、丸(ノード)と線(エッジ)でつながりを表す数学。一方通行の矢印があるものを有向グラフ、矢印がないものを無向グラフと呼びます。
待ち行列理論 (M/M/1モデル)
「レジの待ち時間」や「サーバーの処理待ち」を計算する理論。お客さんが来る間隔(到着間隔)と、レジの処理速度(サービス時間)から、どれくらい行列ができるかを求めます。
制約がある中で「利益を最大化する」または「コストを最小化する」組み合わせを見つける数学。代表的な手法に「線形計画法」や「動的計画法」があります。
3. 情報に関する理論
(1) 情報理論 / (2) 符号理論
情報理論では、珍しい事象(起こる確率が低いこと)ほど「情報量が大きい」と考えます(例:「明日は晴れ」より「明日は雪」の方が驚きが大きく情報量が多い)。
符号化とA/D変換
アナログの音声などをデジタルの「0と1」に変換することをA/D変換(符号化)と呼びます。以下の3ステップで行われます。
波を一定間隔で切る
波の高さを数値化
数値を0と1にする
ハフマン符号: よく使われる文字には短いビットを、あまり使われない文字には長いビットを割り当てることで、全体のデータ量を小さくする(データ圧縮)テクニックです。
(3) 文字の表現 / (4) 述語論理
代表的な文字コード
- ASCIIコード:英数字だけの最も基本的なコード(漢字は使えない)。
- シフトJISコード / EUC:日本語(漢字)を表現できるように拡張したコード。
- Unicode / UCS:世界中のすべての文字を一つのコード体系で表現しようとする世界標準コード(絵文字なども含まれる)。
述語論理(推論のやり方)
- 演繹推論(えんえき):一般的な法則から、個別の結論を導く(「人は死ぬ」→「ソクラテスは人だ」→「ソクラテスは死ぬ」)。
- 帰納推論(きのう):個別の事実から、一般的な法則を導き出す(「AさんもBさんもCさんも死んだ」→「人は死ぬのだろう」)。
(5) 形式言語 / (6) オートマトン
形式言語とBNF記法
プログラミング言語の文法を厳密に定義するためのルール。BNF記法は、「AはBまたはCである」といった文法規則を記号で定義する書き方です。
逆ポーランド表記法:計算式を「1 + 2」ではなく「1 2 +」と後ろに記号を置く書き方。コンピュータが計算しやすいのが特徴です。
オートマトン
外部からの入力(お金を入れる、ボタンを押すなど)によって、現在の「状態」が次々に変わっていく(遷移する)数学的なモデルのこと。状態遷移図を使って、自動販売機の動きなどを設計する際に使われます。
(7) 計算量
プログラム(アルゴリズム)の実行スピードが、扱うデータ量によってどれくらい遅くなるかを評価する指標です。
オーダー記法( $O(n)$ など )を使って表現します。
(8) AI(人工知能)に関する技術
試験で非常に多く出題される最新トレンド分野です。用語の意味をしっかりと整理しておきましょう。
① 機械学習の3つの手法
| 手法 | 説明 | 代表的なアルゴリズム |
|---|---|---|
| 教師あり学習 | 「入力データ」と「正解(答え)」のセットを与えて学習させる。予測(回帰)や分類が得意。 | 線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、サポートベクトルマシン(SVM) |
| 教師なし学習 | 「正解」を与えずにデータだけを与え、データに隠れた規則性やグループ分け(クラスタリング)を自ら見つけさせる。 | クラスタリング、主成分分析(次元削減) |
| 強化学習 | 正解は教えず、行動に対して「報酬(スコア)」を与え、試行錯誤を通じてスコアが最大になるような行動を学習させる。(ゲームのAIや自動運転など) | - |
② 機械学習の注意点(過学習)
過学習 (オーバーフィッティング)
用意した「訓練データ(練習問題)」にばかり適応しすぎてしまい、未知の新しいデータ(本番のテスト)に対する正解率(汎化性能)が落ちてしまう現象のこと。
過去問の丸暗記をしてしまい、少し応用問題が出ると解けなくなる状態に似ています。
対策:交差検証 / ホールドアウト検証
データを「学習用」と「テスト用」に分割し、本当に未知のデータでも正解できるかを検証しながら学習を進める手法。
③ ディープラーニング(深層学習)
人間の脳の神経回路を模した「ニューラルネットワーク」を多層化し、AI自らがデータの特徴を抽出できるようにした高度な機械学習です。
画像認識に特化したモデル。画像の一部をスキャン(畳み込み)して特徴を捉えます。
音声や文章などの「連続した時系列データ」の処理に特化したモデル。
「偽物を作るAI」と「それを見破るAI」を競わせることで、本物そっくりの画像などを生成するAI。
ChatGPTの裏側で動いている、膨大な文章データを学習した巨大な言語モデル。
AIから望み通りの精度の高い回答を引き出すために、入力する指示文(プロンプト)の書き方を工夫・設計するスキルのこと。
(9) コンパイラ理論 / (10) プログラム言語論
コンパイラ(翻訳)の過程
人間が書いたプログラムを、コンピュータがわかる機械語に翻訳する過程です。
(単語に分ける)
(文法チェック)
(意味チェック)
(無駄を省く)
(機械語へ)
プログラム言語の種類
- 手続型言語:コンピュータに「手順」を順番に指示する言語(C言語など)。
- オブジェクト指向言語:データと処理をセットにした「モノ(オブジェクト)」を組み合わせて作る言語(Java, Pythonなど)。
4. 通信に関する理論
(1) 伝送理論
データをケーブルや電波に乗せて送るための技術です。
① 多重化方式(1つの線をみんなで使う)
電波の「周波数(音の高さ)」を少しずつズラして、複数の通信を同時に送る方式。(テレビのチャンネルの仕組み)
ごくわずかな「時間」ごとに区切って順番に送信権を回すことで、複数の通信を同時に送る方式。
② 変調方式(デジタルデータを波に変える)
- AM (振幅変調):波の「高さ(強さ)」を変えて0と1を表す。
- FM (周波数変調):波の「間隔(周波数)」を変えて0と1を表す。ノイズに強い。
- PM (位相変調):波の「開始のタイミング(角度)」をズラして0と1を表す。
5. 計測・制御に関する理論
(1) 信号処理
センサーから入ってきた波形データを分析し、ノイズを除去する(フィルタリング)などの処理を行います。デジタルとアナログを変換するA/D変換やD/A変換が使われます。
(2) 制御に関する理論
フィードバック制御とオープンループ制御
例:エアコンの温度調節。部屋が冷えたら自動でパワーを弱める。
例:扇風機の「強」ボタン。部屋が冷えようが構わず「強」で回り続ける。
センサーとアクチュエーター
コンピュータが現実の世界と関わるための「感覚器官」と「手足」です。
- ジャイロセンサー:物体の「回転(傾き)」を検知する。スマホの画面回転などに利用。
- 加速度センサー:物体の「速度の変化(動き)」を検知する。歩数計やゲームのコントローラに利用。
- アクチュエーター:コンピュータの命令を受けて、電気を物理的な運動(モーターを回す、油圧シリンダを動かすなど)に変換する装置。ロボットの関節など。