離散数学(基礎)
1. 数値表現と基数変換
私たちが普段使っているのは「10進数」ですが、コンピュータの世界では「2進数」や「16進数」が使われます。
それぞれ「桁が上がるタイミング(基数)」が異なります。
0~9の数字を使う。
10になったら桁上がり。
0と1だけを使う。
2になったら桁上がり。
0~9とA~Fを使う。
16になったら桁上がり。
コンピュータの頭脳(IC)は、「電圧が高い(1)」「低い(0)」の2通りしか判別できないため、基本的に2進数ですべての処理を行っています。
16進数は、桁数が長くなりすぎる2進数を人間が見やすく短縮するために使われます(2進数4桁=16進数1桁)。
2. 基数変換
ある進数で表された数値を、別の進数に変換することを「基数変換」といいます。
2進数 10進数
各桁の数字に「重み(2のn乗)」を掛けて、すべて足し合わせます。
例:2進数「101」を10進数へ
10進数 2進数
10進数の数を「2」で割り続け、商が0になるまで計算し、余りを下から順に並べます。
例:10進数「4」を2進数へ
3. 集合とベン図
集合とは、条件でグループ分けされたものの集まりです。
その関係を視覚的に表した図をベン図といいます。
A ∩ B (積集合)
A かつ B (AND)
両方に含まれる部分
A ∪ B (和集合)
A または B (OR)
どちらか一方でも含まれる部分
4. 論理演算の基本
「0」と「1」の2進数を対象にした演算です。
基本となる4つの演算(AND, OR, XOR, NOT)の真理値表は必ず覚えましょう。
両方「1」なら「1」
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
どちらか「1」なら「1」
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
値が異なると「1」
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
反転する
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
NAND と NOR
- NAND (否定論理積): ANDの結果を反転したもの (NOT AND)。
- NOR (否定論理和): ORの結果を反転したもの (NOT OR)。
5. データの単位
ビットとバイト
- ビット (bit)
- データの最小単位。「0」か「1」の2通りの状態を表す。
- バイト (Byte)
-
8ビットの集まり。
1バイトで256通り(2の8乗)の状態を表せます。半角英数字1文字分が約1バイトです。
補助単位
大きな数や小さな数を表すための接頭辞(プレフィックス)です。
| 単位 | 記号 | 意味(10進数) | 乗数 |
|---|---|---|---|
| テラ | T | 1,000,000,000,000 | 1012 |
| ギガ | G | 1,000,000,000 | 109 |
| メガ | M | 1,000,000 | 106 |
| キロ | k | 1,000 | 103 |
| --- 基準 (1) --- | |||
| ミリ | m | 0.001 | 10-3 |
| マイクロ | μ | 0.000001 | 10-6 |
| ナノ | n | 0.000000001 | 10-9 |
| ピコ | p | 0.000000000001 | 10-12 |
過去問演習(離散数学)
10進数155を2進数で表したものはどれか。
- 10011011
- 10110011
- 11001101
- 11011001
A~Zの26種類の文字を表現する文字コードに最小限必要なビット数は幾つか。
- 4
- 5
- 6
- 7
次のベン図の網掛けした部分の検索条件はどれか。
- (not A) and (B and C)
- (not A) and (B or C)
- (not A) or (B and C)
- (not A) or (B or C)
応用数学
1. 確率と統計
代表値
データ全体の特徴を表す数値です。
外れ値(極端な値)の影響を受けやすい。
外れ値の影響を受けにくい。
ばらつきの指標
- 分散:平均値からのズレ(偏差)を2乗して平均したもの。
- 標準偏差:分散の平方根。データのばらつき具合を示す基本指標。
- 正規分布の場合、平均値±標準偏差の範囲に約68%のデータが含まれます。
相関と回帰
相関分析
2つのデータの関係を見る。
・相関係数が 1に近い:正の相関(一方が増えれば他方も増える)
・相関係数が -1に近い:負の相関
回帰分析
過去のデータから予測を行う。
原因(説明変数)と結果(目的変数)の関係を数式(回帰直線など)で表す。
2. 数値計算と誤差
コンピュータの計算で発生する主な誤差です。
- 丸め誤差
- 四捨五入や切り捨てなどで生じる誤差。
- 桁落ち
- ほぼ等しい数値の引き算で、有効桁数が減ってしまう現象。
- 情報落ち
- 非常に大きな数と非常に小さな数の足し算で、小さい数が無視される現象。
- 打ち切り誤差
- 計算を途中で打ち切ることで生じる誤差(円周率など)。
3. グラフ理論・待ち行列
グラフ理論
点(ノード)と線(エッジ)でつながりを表現する理論。
ネットワーク構成や経路探索に使われます。
待ち行列
レジの行列などを数理モデル化し、待ち時間や混雑具合を予測する理論。
過去問演習(応用数学)
次のデータの平均値と中央値の組合せはどれか。
〔データ〕 10,20,20,20,40,50,100,440,2000
- 平均値:20、中央値:40
- 平均値:40、中央値:20
- 平均値:300、中央値:20
- 平均値:300、中央値:40
1から6までの六つの目をもつサイコロを3回投げたとき,1回も1の目が出ない確率は幾らか。
- 1/216
- 5/72
- 91/216
- 125/216
ある受験者の4教科の得点が全て71点であったときこの受験者が最も高い偏差値を得た教科はどれか。
(平均点と標準偏差の表を参照)
- 国語
- 社会
- 数学
- 理科
AI(人工知能)
1. 機械学習 (Machine Learning)
大量のデータからルールやパターンを学習する技術です。
| 種類 | 特徴 | 活用例 |
|---|---|---|
| 教師あり学習 | 「正解(教師データ)」を与えて学習させる。 | スパムメール判定 売上予測 |
| 教師なし学習 | 正解を与えず、データの特徴や構造を見つけ出す。 | 顧客のグループ分け レコメンデーション |
| 強化学習 | 試行錯誤を通じて、報酬が最大になる行動を学習する。 | 将棋・囲碁AI ロボット制御 |
2. ディープラーニング (深層学習)
人間の脳神経回路を模した「ニューラルネットワーク」を多層にした機械学習の一種。
データの特徴(特徴量)をAI自身が自動で発見できるのが強みです。
画像認識に強い。
音声や自然言語など、時系列データに強い。
3. 生成AIと最新技術
生成AI (Generative AI)
学習データをもとに、新しい文章・画像・音声などを「生成」するAI。ChatGPTなどの大規模言語モデル(LLM)が有名。
- プロンプトエンジニアリング:AIへの指示(プロンプト)を工夫して適切な回答を引き出す技術。
- GAN (敵対的生成ネットワーク):「偽物を作るAI」と「見抜くAI」を競わせて精度を高める技術。
- ファインチューニング:既存の学習済みモデルに、特定のデータを追加学習させて微調整すること。
過去問演習(AI技術)
ディープラーニングに関する記述として,最も適切なものはどれか。
- インターネット上に提示された教材を使って,距離や時間の制約を受けることなく,習熟度に応じて学習をする方法である。
- コンピュータが大量のデータを分析し,ニューラルネットワークを用いて自ら規則性を見つけ出し,推論や判断を行う。
- 体系的に分類された特定分野の専門的な知識から,適切な回答を提供する。
- 一人一人の習熟度,理解に応じて,問題の難易度や必要とする知識,スキルを推定する。
ニューラルネットワークに関する記述として,最も適切なものはどれか。
- PC,携帯電話,情報家電などの様々な情報機器が,社会の至る所に存在し,いつでもどこでもネットワークに接続できる環境
- 国立情報学研究所が運用している,大学や研究機関などを結ぶ学術研究用途のネットワーク
- 全国の自治体が,氏名,生年月日,性別,住所などの情報を居住地以外の自治体から引き出せるようにネットワーク化したシステム
- ディープラーニングなどで用いられる,脳神経系の仕組みをコンピュータで模したモデル
動物が写っている大量の画像から犬や猫などの特徴を自動的に抽出して,動物の種類を識別できるようにするAIの技術はどれか。
- e-ラーニング
- アクティブラーニング
- アダプティブラーニング
- ディープラーニング
アルゴリズムとプログラミング
1. データ構造
データを効率よく扱うための格納形式のことです。
データの追加や取り出しのルールによって、いくつかの種類があります。
FIFO (First In First Out / 先入れ先出し)
最初に入れたデータが最初に出てくる構造。
例:レジの行列、プリンタの印刷待ち
入れる(Enqueue) → 出す(Dequeue)
LIFO (Last In First Out / 後入れ先出し)
最後に入れたデータが最初に出てくる構造。
例:積み上げた本、Webブラウザの「戻る」ボタン
[2]
[1]
積む(Push) / おろす(Pop)
木構造 (Tree)
データが階層的に配置された構造です。PCのフォルダ(ディレクトリ)構成などがこれにあたります。
特に、枝分かれが常に2つ以下のものを2分木(バイナリツリー)といいます。
2. アルゴリズム
問題を解決するための「手順」や「計算方法」のことです。
アルゴリズムは、流れ図(フローチャート)や擬似言語で表現されます。
アルゴリズムの基本構造
- 順次
順番に処理する - 選択
条件で分岐する (if) - 繰返し
同じ処理を繰り返す (loop)
代表的なアルゴリズム
- 線形探索法
- 先頭から順番に探す方法。データが整列していなくても使えるが、効率は悪い。
- 2分探索法
- 整列(ソート)されているデータに対して、真ん中の値と比較しながら探索範囲を半分に絞っていく方法。高速。
- 交換法 (バブルソート)
- 隣り合うデータを比較・交換しながら並べる。
- 選択法 (選択ソート)
- 最大値(または最小値)を選んで、所定の位置に移動させる。
- クイックソート
- 基準値を決めて、それより小さいグループと大きいグループに分割を繰り返す。最も高速な手法の一つ。
3. プログラム言語
アルゴリズムをコンピュータが実行できる形式(プログラム)にするための言葉です。
目的に応じて様々な言語があります。
| 言語名 | 特徴 |
|---|---|
| C言語 | 歴史が古く、OSや組み込みシステムの開発によく使われる。高速だが習得難易度は高め。 |
| Java | どんなOSでも動く汎用性が特徴。企業の基幹システムやAndroidアプリなどで広く使われる。 |
| Python | 文法がシンプルで読みやすい。AI(機械学習)やデータ分析の分野で圧倒的人気。 |
| JavaScript | Webブラウザ上で動作し、動的なWebページを作るのに必須の言語。 |
開発効率を上げる仕組み
- ライブラリ:よく使う機能を部品化してまとめたもの。
- API (Application Programming Interface):他のソフトウェアの機能を外部から利用するための窓口。
- コーディング標準:プログラムの書き方のルール(命名規則や字下げなど)。読みやすく保守しやすいコードにするために重要。
- ローコード / ノーコード:プログラミングの知識が少なくても(または全くなくても)、ドラッグ&ドロップなどでアプリ開発ができるツール。
4. その他の言語(マークアップ等)
プログラミング言語とは異なり、データの構造や見た目を記述するための言語です。
Webページを作成するための言語。タグ
< > を使って文章の構造を指定する。
自由にタグを定義できる言語。データの交換や保存によく使われる。
軽量なデータ記述言語。JavaScriptの表記法をベースにしており、WebAPIでのデータやり取りで主流。
過去問演習(アルゴリズムとプログラミング)
複数のデータが格納されているスタックからのデータの取出し方として,適切なものはどれか。
- 格納された順序に関係なく指定された任意の場所のデータを取り出す。
- 最後に格納されたデータを最初に取り出す。
- 最初に格納されたデータを最初に取り出す。
- データがキーをもっており,キーの優先度のデータを取り出す。
4個の要素 [27, 42, 33, 12] を以下の手順で昇順に整列するとき、手順(1)~(3)は何回実行されるか。
(1) 最大値を選び、最後の要素と入れ替える。
(2) 最後の要素を対象から外す。
(3) 要素が1個以上残っていれば(1)へ。
- 2
- 3
- 4
- 5
配列のデータを探索するアルゴリズムの記述として適切なものはどれか。
- 2分探索法は,探索対象となる配列の先頭の要素から順に探索する。
- 線形探索法で探索するのに必要な計算量は,探索対象となる配列の要素数に比例する。
- 線形探索法を用いるためには,探索対象となる配列の要素は要素の値で昇順又は降順にソートされている必要がある。
- 探索対象となる配列が同一であれば,探索に必要な計算量は探索する値によらず,2分探索法が線形探索法よりも少ない。
JavaScriptに関する記述として,適切なものはどれか。
- Webブラウザ上に,動的な振る舞いなどを組み込むことができる。
- Webブラウザではなく,Webサーバ上だけで動作する。
- 実行するためには,あらかじめコンパイルする必要がある。
- 名前のとおり,Javaのスクリプト版である。
IoTデータの形式記述について。[a]はコンマ区切り、[b]はタグを用いるマークアップ言語である。
- a: CSV, b: JSON
- a: CSV, b: XML
- a: RSS, b: JSON
- a: RSS, b: XML
配列を文字列に変換する関数 convert(arrayInput)。
1なら"A"、それ以外なら"B"を追加する。
戻り値が"AABAB"になる配列はどれか。
- {0,0,1,2,1}
- {0,1,2,1,1}
- {1,0,1,2,0}
- {1,1,2,1,0}
1からmaxまでの総和を求める関数。プログラム中のaに入れる字句はどれか。
- calcX ← calcX × n
- calcX ← calcX + 1
- calcX ← calcX + n
- calcX ← n