概要
- データ構造とは (コンピュータ科学における役割)
- 抽象データ型 (ADT)とデータ構造の関係
- データ構造の分類 (線形構造、非線形構造など)
- データ構造の選択基準 (時間計算量、空間計算量、操作の種類)
1. 配列 (Array)
- 基本概念
- 操作と計算量
- 種類と応用
- プログラミング言語における配列
- 利点と欠点
2. 連結リスト (Linked List)
- 基本概念
- 操作と計算量
- 種類
- 応用
- 利点と欠点
- 比較
3. スタック (Stack)
- 基本概念
- 操作
- 実装方法
- 応用例
4. キュー (Queue)
- 基本概念
- 操作
- 実装方法
- 種類と応用
5. ハッシュテーブル (Hash Table)
- 基本概念
- ハッシュ関数 (Hash Function)
- 衝突 (Collision) と解決法
- 操作と計算量
- リハッシュ (Rehashing)
- 応用例
- 利点と欠点
- 高度なトピック
6. 木構造 (Tree)
- 基本概念
- 木の種類
- 二分木 (Binary Tree) MOC
- 二分木とは (各ノードが高々2つの子を持つ木)
- 二分木の特性
- 参照表現)
- 二分木の走査 (Traversal)
- 二分木の応用例 (式木、ハフマン木など)
- 二分探索木 (Binary Search Tree - BST) MOC
- B木 (B-Tree) とその派生 MOC
7. ヒープ (Heap)
- 基本概念
- 実装
- 操作
- 応用
- 種類
- 二項ヒープ (Binomial Heap) (マージ操作が効率的)
- フィボナッチヒープ (Fibonacci Heap) (償却計算量が非常に小さい)
- d-ary ヒープ
8. グラフ (Graph)
- 基本概念
- グラフの種類と用語
- Digraph)
- 重み付きグラフ (Weighted Graph) と重みなしグラフ (Unweighted Graph)
- 単純グラフ (Simple Graph) と多重グラフ (Multigraph)
- 自己ループ (Self-loop)
- 頂点の次数 (Degree): 入次数 (In-degree) と出次数 (Out-degree)
- パス (Path)、単純パス (Simple Path)、閉路 (Cycle)、単純閉路 (Simple Cycle)
- 連結グラフ (Connected Graph) と非連結グラフ (Disconnected Graph)
- 強連結成分 (Strongly Connected Components - SCC) (有向グラフ)
- 弱連結成分 (Weakly Connected Components) (有向グラフ)
- 部分グラフ (Subgraph)、誘導部分グラフ (Induced Subgraph)
- 完全グラフ (Complete Graph)
- 二部グラフ (Bipartite Graph)
- 木 (Tree) はグラフの一種 (連結で閉路のない無向グラフ)
- 有向非巡回グラフ (Directed Acyclic Graph - DAG)
- グラフの表現方法
- グラフの走査 (Traversal) / 探索 (Search)
- グラフアルゴリズム MOC (主要なアルゴリズム群)
- 最短経路問題 (Shortest Path Problems)
- 単一始点最短経路問題 (Single-Source Shortest Path - SSSP)
- ダイクストラ法 (Dijkstra’s Algorithm) (非負の辺重み)
- ベルマンフォード法 (Bellman-Ford Algorithm) (負の辺重み対応、負閉路検出)
- 有向非巡回グラフ (DAG) における単一始点最短経路 (動的計画法)
- 全点対最短経路問題 (All-Pairs Shortest Path - APSP)
- フロイド・ワーシャル法 (Floyd-Warshall Algorithm) (動的計画法)
- ジョンソン法 (Johnson’s Algorithm) (疎なグラフ向け)
- 単一始点最短経路問題 (Single-Source Shortest Path - SSSP)
- 最小全域木 (Minimum Spanning Tree - MST) (連結な無向重み付きグラフ)
- 最小全域木とは (定義と特性)
- プリム法 (Prim’s Algorithm)
- クラスカル法 (Kruskal’s Algorithm) (Union-Findデータ構造の利用)
- フローネットワーク (Flow Networks) (高度なトピック)
- 連結性 (Connectivity)
- 閉路検出 (Cycle Detection)
- トポロジカルソート (Topological Sort) (DAGのみ)
- グラフ彩色 (Graph Coloring) (NP困難問題)
- マッチング (Matching) (例: 二部グラフの最大マッチング)
- 最短経路問題 (Shortest Path Problems)
- グラフの応用例