アルゴリズムとデータ構造はプログラミングの基盤。計算量分析、ソートアルゴリズム、木構造、グラフアルゴリズム、動的計画法、競技プログラミングのテクニックまで体系的に解説する。
アルゴリズムの効率を数学的に表現する O 記法・Omega 記法・Theta 記法、および空間計算量と償却計算量を体系的に学ぶ。帰納法による計算量の証明方法やよくある落とし穴まで網羅する。
アルゴリズムの効率を正確に評価するための体系的手法を学ぶ。最悪・平均・最良ケースの違い、償却解析の考え方、再帰アルゴリズムの漸化式の立て方と解法(マスター定理、再帰木法、置換法)までを網羅する。
メモリを追加で使用することで計算時間を削減する(または逆に空間を節約して時間を犠牲にする)手法を体系的に学ぶ。
プログラミングの最も基本的なデータ構造である配列と文字列を深く理解し、動的配列の仕組み、文字列操作の計算量、二次元配列の走査パターン、Two Pointers・Sliding Window 等の頻出技法までを体系的に学ぶ。
配列と対をなす線形データ構造「連結リスト」の各種バリエーションと、
LIFO / FIFO の原理に基づくスタックとキューを深く理解し、括弧マッチ、BFS、単調スタック、優先度キューなどの応用を体系的に学ぶ。
平均 O(1) のキー検索を実現するハッシュテーブルの内部構造、衝突解決戦略、性能チューニングを学ぶ。
階層的なデータを表現する木構造の各種バリエーションを学ぶ。二分探索木の基本から平衡木、B木、Trie まで体系的に解説する。
効率的な最大/最小値の取得を可能にするヒープの構造、ヒープソート、優先度キューの実装を学ぶ。
ネットワーク、依存関係、地図など多様な関係を表現するグラフの基本概念と、各表現方法の特徴を学ぶ。
データを特定の順序に並べ替える基本アルゴリズム群を、計算量・安定性・実装の観点から体系的に理解する
データ集合から目的の要素を効率的に見つけ出す手法を、線形探索・二分探索・補間探索・指数探索・三分探索の多角的な視点で理解する
グラフの頂点と辺を体系的に訪問するBFS・DFS・トポロジカルソートを理解し、実装と応用パターンを習得する
重み付きグラフにおける最短経路問題を、Dijkstra・Bellman-Ford・Floyd-Warshallの3大アルゴリズムで解く手法を体系的に理解する
重複する部分問題を効率的に解くための設計手法を、メモ化・ボトムアップ・代表的問題を通じて体系的に理解する
各ステップで局所的に最適な選択を繰り返すことで、全体の最適解を効率的に求める設計手法を理解する
問題を小さな部分問題に分割し、再帰的に解いて統合する設計手法を、マージソート・大数乗算・最近接点対・Strassen 行列乗算を通じて理解する
解の候補を体系的に探索し、制約を満たさない分岐を早期に枝刈りして効率化する手法を、N-Queens・数独・順列生成・グラフ彩色・ナイトツアーなど多角的な例題で深く理解する
要素のグループ化と所属判定を準定数時間で行うデータ構造を、経路圧縮・ランク付き合併・Kruskal応用を通じて理解する
区間クエリと点更新を O(log n) で処理する木構造を、基本実装・遅延伝播・BITを通じて体系的に理解する
文字列のパターン検索・照合を効率的に行うKMP・Rabin-Karp・Z-algorithm・Trie・Aho-Corasick・Suffix Arrayを体系的に理解する
グラフ上の最大流問題を Ford-Fulkerson法・Dinic法・二部マッチング・最小費用流を通じて理解し、実用的な応用パターンを習得する