前提知識

このページでは、本書を読むための前提を 必要 / 推奨 / あると楽 に分けて示します。 結論だけ先に言うと、集合・論理・関数・証明技法・基本的なプログラミング があれば読み始められます。

必要

数学

  • 集合の基本概念と演算(和集合、共通部分、補集合、包含)
  • 命題と量化、基本的な論理記号の意味
  • 関数の定義域・値域・像、単射・全射・全単射
  • 直接証明、対偶証明、背理法、数学的帰納法
  • 漸近記法(少なくとも O 記法の意味)

プログラミング

  • 変数、条件分岐、ループ、関数といった基本構文
  • 配列やリストを使った簡単なアルゴリズム記述
  • 擬似コードや短いプログラムを読んで挙動を追えること

推奨

  • 離散数学(関係、グラフ、組合せ、帰納的定義)
  • データ構造とアルゴリズムの基礎
  • 確率の基本概念(第10章、第12章で有用)
  • 線形代数の初歩(第11章周辺で有用)

あると楽

  • 数論(素数、合同算術、最大公約数)
  • 抽象代数(群、環、体)
  • 形式言語やオートマトンの既習
  • 英語の教科書や論文を補助資料として読むことへの抵抗が少ないこと

この本が向かない状態

  • 集合・論理・関数・証明の基礎がほぼ未習得で、補強を並行する余力もない
  • プログラムを一度も読んだことがなく、擬似コードも追えない
  • 「数式や証明は飛ばしてよいので結論だけ欲しい」という読み方を想定している

章ごとの前提の目安

  • 第1〜3章: 必要項目がそろっていれば開始できる
  • 第4〜6章: 数学的帰納法と抽象的思考にある程度慣れていると読みやすい
  • 第7〜9章: データ構造・離散数学・論理的推論の経験があると吸収しやすい
  • 第10〜12章: 確率、数論、代数があると理解が加速する

自己診断

先に進んでよい目安

以下の多くに「はい」で答えられるなら、読み始めて問題ありません。

  • A ⊆ BB ⊆ C から A ⊆ C が言える理由を説明できる
  • f: A \to B が単射である、の意味を説明できる
  • □ 数学的帰納法の基本形を説明できる
  • □ O 記法が「大まかな増え方」を表すことを理解している
  • □ ループや再帰のある簡単な擬似コードを読める

補強してから進む目安

以下が多いなら、2〜4週間の準備を先に入れる方が効率的です。

  • □ 論理記号(∀, ∃, →, ↔)の意味が曖昧
  • □ 証明を自分で一行も書いたことがない
  • □ 配列・リスト・再帰の基本が曖昧
  • □ 数式が出ると本文を読む前に止まってしまう

不足しているときの進め方

数学が弱い場合

  • まずは集合・論理・関数・証明技法に絞って補強する
  • 付録Aを辞書として併用する
  • 第1章をゆっくり読み、式の意味を日本語で言い直す

プログラミングが弱い場合

  • Python / C++ / Java のどれか1つで、制御構造と関数だけを先に確認する
  • 付録Bを「写経する」のではなく、処理の流れを日本語で説明できるか確認する
  • 第6章・第7章に進む前に、配列・再帰・スタック・キューの基本だけ復習する

本書内の戻り先

読み方別の前提アドバイス

  • 通読コース: 必要項目を満たしていれば開始してよい
  • 講義補助コース: 講義対象章に必要な前提だけを先に補えばよい
  • 実務者の拾い読み: 第6章・第7章・第8章に関係する前提から先に確認する
  • 再学習コース: 自己診断で落ちた項目に関係する章だけ重点的に戻る