1. 計算量の基本概念 MOC
- 定義と重要性
- 計算モデル
- 入力サイズ (Input Size)
- 基本操作 (Elementary Operation)
2. 時間計算量 (Time Complexity) MOC
- 定義と計測
- 具体例による時間計算量分析
- 償却分析 (Amortized Analysis)
3. 空間計算量 (Space Complexity) MOC
- 定義と計測
- 具体例による空間計算量分析
- 基本的なアルゴリズムの空間計算量 (例: 線形探索、配列のソート)
- 再帰アルゴリズムの空間計算量 (再帰呼び出しスタック)
[[マージソートの空間計算量]][[クイックソートの空間計算量]]
- 時間計算量と空間計算量のトレードオフ
4. オーダー記法 (Asymptotic Notation) MOC
- 漸近的評価の必要性
- O記法 (Big O Notation) MOC (漸近的上限)
- Ω記法 (Omega Notation) MOC (漸近的下限)
- Θ記法 (Theta Notation) MOC (漸近的タイトな限界)
- [[Θ記法の数学的定義 (c1g(n) 以上 c2g(n) 以下)]]
- Θ記法の直感的理解と使い方 (「ちょうどこれくらい」)
- Θ記法の例とO記法、Ω記法との関係 (f(n) = Θ(g(n)) ⇔ f(n) = O(g(n)) かつ f(n) = Ω(g(n)))
- (オプション) o記法 (Little o Notation) MOC (漸近的真の上限)
- (オプション) ω記法 (Little omega Notation) MOC (漸近的真の下限)
- オーダー記法のまとめと使い分け
- 一般的な関数の増加オーダー
[[log n vs n^c vs c^n vs n! の比較]]- 対数の底の変換とオーダー記法
5. 計算量のクラス (Complexity Classes - アルゴリズム分析の観点から) MOC
- (理論計算機科学におけるP, NPなどのクラスとは異なり、アルゴリズムの性能を示す一般的な分類)
- 定数時間計算量 (Constant Time Complexity) - O(1)
- 対数時間計算量 (Logarithmic Time Complexity) - O(log n)
- 線形時間計算量 (Linear Time Complexity) - O(n)
- 線形対数時間計算量 (Linearithmic Time Complexity) - O(n log n)
- 多項式時間計算量 (Polynomial Time Complexity) - O(n^k)
[[O(n^2)アルゴリズムの例 (単純なソート、2重ループ)]][[O(n^3)アルゴリズムの例 (行列の乗算の単純な実装)]]- 多項式時間で解ける問題 (扱いやすい問題)
- 指数時間計算量 (Exponential Time Complexity) - O(c^n), O(n!)
[[O(2^n)アルゴリズムの例 (全探索、巡回セールスマン問題の総当たり)]][[O(n!)アルゴリズムの例 (順列全探索)]]- 指数時間アルゴリズムの限界 (入力サイズが小さい場合のみ実用的)
- 計算量クラス間の比較とグラフ
6. 再帰アルゴリズムの計算量分析 MOC
- 再帰と漸化式
- 再帰アルゴリズムとは
- 再帰アルゴリズムの計算量を表す漸化式の立式
[[マージソートの漸化式: T(n) = 2T(n/2) + O(n)]][[二分探索の漸化式: T(n) = T(n/2) + O(1)]][[フィボナッチ数列の単純な再帰の漸化式: T(n) = T(n-1) + T(n-2) + O(1)]]
- 漸化式の解法
7. 計算量の下限と最適性 MOC
- 問題の下限 (Lower Bound of a Problem)
- アルゴリズムの最適性 (Optimality of an Algorithm)
- ギャップ (Gap) - アルゴリズムの上限と問題の下限の間の差
8. (参考) 理論計算機科学における計算複雑性クラス MOC
- (アルゴリズム分析の文脈からは少し発展的だが、関連として)
- Pクラス (Polynomial Time) とは (決定問題)
- NPクラス (Nondeterministic Polynomial Time) とは
- NP完全問題 (NP-complete Problems) とは
- P vs NP問題の概要
- これらのクラスとアルゴリズム設計の関係性 (NP困難問題へのアプローチ)
9. 計算量の実践的な側面 MOC
- 理論的計算量と実測時間
- データ構造の選択と計算量
- アルゴリズムの改善と計算量