離散数学(基礎)
1. 数値表現と基数変換
だから、コンピュータの世界はすべて2進数で動いているんだよ!
それぞれの「桁が上がるタイミング(基数)」の違いを確認しましょう。
0~9の数字を使う。
10になったら桁上がり。
0と1だけを使う。
2になったら桁上がり。
0~9とA~Fを使う。
16になったら桁上がり。
実は「2進数の4桁」をちょうど「16進数の1桁」にまとめられるんだ!人間が見やすく短縮するための短縮表記だと覚えよう!
2. 基数変換
ある進数で表された数値を、別の進数に変換することを「基数変換」といいます。
10進数から2進数に変えるときは、ひたすら「2で割り算」して、余った数を下から順に読み上げるだけ!この「下から読む」のを忘れやすいから注意してね!
10進数 2進数(2で割って余りを下から読む!)
例:10進数「4」を2進数へ
2進数 10進数(桁の重みを足す!)
2進数は、右から順に「1の位」「2の位」「4の位」「8の位」...と、2倍ずつ重みが増えていきます。「1」が立っている場所の重みを足すだけです!
例:2進数「101」を10進数へ
3. 集合とベン図
覚えてほしい記号は2つだけ!∩(かつ:両方重なる部分)と、∪(または:合体した全部)だ!
A ∩ B (積集合)
A かつ B (AND)
両方に重なっている真ん中だけ!
A ∪ B (和集合)
A または B (OR)
どちらか一方でも入っていれば全合体!
4. 論理演算の基本
「0(偽)」と「1(真)」だけを使ったパズルです。基本の4つの動きをチェックしよう!
「0と1」「1と0」みたいに、食い違っているときだけ正解(1)になるんだ!
両方が「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 |
0と1をひっくり返す
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
5. データの単位
そして、そのスイッチを8個まとめたものが「1バイト(Byte)」。ちょうどアルファベット半角1文字(AとかBとか)を保存するのに必要な大きさなんだよ!
- ビット (bit)
- データの最小単位。「0」か「1」の2通りの状態を表す。
- バイト (Byte)
-
8ビット = 1バイト。
1バイトで256通り(2の8乗)のパターンが作れます。
大きな単位(1,000倍ずつアップ!)
k(キロ)→ M(メガ)→ G(ギガ)→ T(テラ)の順で大きくなります。千円札が1000枚で100万円...と同じ感覚ですね!
| 単位 | 記号 | 意味(0の数) | 読み方 |
|---|---|---|---|
| テラ | T | 1,000,000,000,000 | 1兆(ハードディスクの容量など) |
| ギガ | G | 1,000,000,000 | 10億(スマホのデータ容量など) |
| メガ | M | 1,000,000 | 100万(写真1枚のサイズなど) |
| キロ | k | 1,000 | 1千(テキストファイルのサイズなど) |
過去問演習(離散数学)
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. 確率と統計(データの特徴を掴む!)
「平均年収は約3270万円です」と言われたら嘘みたいに感じるよね(笑)。極端に大きな値(外れ値)があるときは、真ん中の順位の人の金額である「中央値」を見たほうが現実的なんだ!
データの3大代表値
極端なデータ(外れ値)に引っ張られやすいのが弱点。
大富豪がいても影響を受けにくい!
データの「ばらつき」を表す言葉
- 分散・標準偏差:クラス全員の点が「平均点付近にギュッと集まっているか」、それとも「0点と100点にバラバラに散らばっているか」を表す数値。
2. パソコン特有の「計算の誤差」
「1億円 + 0.0001円」みたいに、超巨大な数と超小さな数を足すと、小さい方が無視されて消えちゃうことを「情報落ち」というよ!「桁落ち」と名前が似ているから間違えないでね!
- 丸め誤差
- 四捨五入や切り捨てで、端数が捨てられることによって生じるズレ。
- 情報落ち
- 超巨大な数と超小さな数の足し算で、小さな数が無視されてしまう現象。
- 桁落ち
- ほぼ同じ大きさの数同士を引き算したときに、有効桁数が激減してしまう現象。
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. 機械学習(AIがルールを学ぶ仕組み)
勉強のさせ方によって、3つのタイプに分かれるよ!
| 学習タイプ | 勉強のしかた(特徴) | 身近な活用例 |
|---|---|---|
| 教師あり学習 | 問題と「正解(解答)」をセットで与えて勉強させる。 | 迷惑メールの自動振り分け 明日の売上予測 |
| 教師なし学習 | 正解は教えず、データ全体の「似たもの同士のグループ分け」をさせる。 | おすすめ商品の表示(レコメンド) 顧客のグループ分け |
| 強化学習 | 試行錯誤を繰り返させ、「成功したらボーナス(報酬)」を与えて最善の行動を学ばせる。 | 将棋や囲碁の最強AI 自動運転・お掃除ロボット |
2. ディープラーニング(深層学習)
人間の脳の神経回路(ニューロン)をヒントにした「ニューラルネットワーク」を進化させた、現在のAIの核心技術です。
最大の特徴は、「どこに注目すべきかのポイント(特徴量)すら、AI自身が勝手に発見してくれる」という点です!
3. 生成AIとよく出る最新トレンド用語
- 生成AI (Generative AI):学習データをもとに、新しい文章・画像・音楽などをゼロから「生成」するAI。
- LLM (大規模言語モデル):大量のテキストを学習した、文章作成を得意とする超巨大なAIモデル(ChatGPTの頭脳など)。
- ファインチューニング:すでに完成しているAIに、自社の専門データなどを追加で学習させて「専用AI」にカスタマイズすること。
過去問演習(AI技術)
ディープラーニングに関する記述として,最も適切なものはどれか。
- インターネット上に提示された教材を使って,距離や時間の制約を受けることなく,習熟度に応じて学習をする方法である。
- コンピュータが大量のデータを分析し,ニューラルネットワークを用いて自ら規則性を見つけ出し,推論や判断を行う。
- 体系的に分類された特定分野の専門的な知識から,適切な回答を提供する。
- 一人一人の習熟度,理解に応じて,問題の難易度や必要とする知識,スキルを推定する。
ニューラルネットワークに関する記述として,最も適切なものはどれか。
- PC,携帯電話,情報家電などの様々な情報機器が,社会の至る所に存在し,いつでもどこでもネットワークに接続できる環境
- 国立情報学研究所が運用している,大学や研究機関などを結ぶ学術研究用途のネットワーク
- 全国の自治体が,氏名,生年月日,性別,住所などの情報を居住地以外の自治体から引き出せるようにネットワーク化したシステム
- ディープラーニングなどで用いられる,脳神経系の仕組みをコンピュータで模したモデル
動物が写っている大量の画像から犬や猫などの特徴を自動的に抽出して,動物の種類を識別できるようにするAIの技術はどれか。
- e-ラーニング
- アクティブラーニング
- アダプティブラーニング
- ディープラーニング
アルゴリズムとプログラミング
1. データ構造(データの並べ方のルール)
「キュー」はコンビニのレジの行列!(最初にならんだ人が最初にお会計を終えて出ていく)
「スタック」は机に積み上げた本!(一番上に追加した本を、一番最初に取り出す)と覚えよう!
FIFO (先入れ先出し)
最初に入れたデータが最初に出てくる構造。
例:プリンターの印刷待ちの順番
LIFO (後入れ先出し)
最後に入れたデータが最初に出てくる構造。
例:ブラウザの「戻る」ボタンの履歴
[一番上のデータ]
2. アルゴリズム(問題解決の手順書)
料理でいう「レシピ」のことです。「どういう順番で計算すれば目的の答えが出るか」を組み立てる手順のことを指します。
データを高速で見つけ出す「2分探索法」を使うには、絶対に「データがあらかじめキレイに昇順か降順に並べ替え(ソート)されていること」が条件だ!バラバラのデータには使えないから注意してね!
- 線形探索法
- 先頭から1つずつ泥臭くチェックする方法。バラバラのデータでも使えるが時間がかかる。
- 2分探索法
- キレイに並んだデータの真ん中を見て、「それより大きいか小さいか」で範囲を半分ずつに絞っていく高速な方法。
3. プログラミング言語と開発の仕組み
| 言語名 | 得意なこと・特徴 |
|---|---|
| Python | 文法がシンプルで超人気!AI開発やデータ分析をするなら絶対コレ。 |
| Java | どんなOSでも動く万能選手。大企業のシステムやAndroidアプリ開発で広く使われている。 |
| JavaScript | Webブラウザ上で動く唯一の言語!サイトにアニメーションをつけたり動きを出すのに必須。 |
| C言語 | 歴史が古く、実行スピードが超高速。家電の中身(組み込みシステム)などハードウェア制御に強い。 |
開発効率を上げるトレンド用語
- ノーコード / ローコード:プログラムを一切書かず(または少し書くだけで)、画面のドラッグ&ドロップだけでアプリを作る技術。
- API:他の会社が作ったシステムやデータ(Googleマップなど)を、自分のプログラムから簡単に呼び出して使える窓口。
4. その他の言語(マークアップ言語など)
プログラミング(計算や分岐)ではなく、「文章の構造やデータの見た目を指定する」ための言葉です。
HTMLは「ここは見出しだよ」「ここは画像だよ」とタグ `< >` で囲んでWebページを作る言葉。そして、そのタグを自分たちの自由な名前で自作して、データのやり取りに使えるようにしたのが「XML」だ!
過去問演習(アルゴリズムとプログラミング)
複数のデータが格納されているスタックからのデータの取出し方として,適切なものはどれか。
- 格納された順序に関係なく指定された任意の場所のデータを取り出す。
- 最後に格納されたデータを最初に取り出す。
- 最初に格納されたデータを最初に取り出す。
- データがキーをもっており,キーの優先度のデータを取り出す。
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