第1章 アルゴリズムの基本概念
1.1 ユークリッドの互除法
1.2 アルゴリズムの表現
1.3 アルゴリズムの例
1.4 計算時間の解析
1.5 グラフ
1.6 基本データ構造
演習問題
第2章 ソーティング
2.1 バブルソート
2.2 挿入法とシェルソート
2.3 選択法とヒープソート
2.4 マージソート
2.5 クイックソート
2.6 ソーティング計算量の下界
2.7 バケットソート
2.8 選択アルゴリズム
演習問題
第3章 データ探索
3.1 逐次探索
3.2 2分探索
3.3 2分探索木
3.4 2色木
3.5 最適2分探索木
3.6 ハッシング
演習問題
第4章 文字列マッチング
4.1 ストリングマッチング
4.2 マッチングオートマトン
4.3 最長共通部分列
演習問題
第5章 高速フーリエ変換アルゴリズム
5.1 離散フーリエ変換
5.2 たたみ込み
5.3 高速フーリエ変換のアルゴリズム
演習問題
第6章 グラフアルゴリズム
6.1 グラフ表現のためのデータ構造
6.2 深さ優先探索と幅優先探索
6.3 木の探索
6.4 最短路アルゴリズム
6.5 最小スパニング木
6.6 2連結成分アルゴリズム
6.7 ネットワークフロー
演習問題
第7章 アルゴリズムの設計法
7.1 分割統治法
7.2 動的計画法
7.3 グリーディ法
演習問題
第8章 NP完全問題
8.1 計算が困難な問題
8.2 計算が困難な問題の特徴
8.3 NP完全問題の定義
8.4 SATのNP完全性
8.5 種々のNP完全問題
8.6 決定問題と最適化問題
8.7 NP完全問題への対応
演習問題
参考文献
索引
1.1 ユークリッドの互除法
1.2 アルゴリズムの表現
1.3 アルゴリズムの例
1.4 計算時間の解析
1.5 グラフ
1.6 基本データ構造
演習問題
第2章 ソーティング
2.1 バブルソート
2.2 挿入法とシェルソート
2.3 選択法とヒープソート
2.4 マージソート
2.5 クイックソート
2.6 ソーティング計算量の下界
2.7 バケットソート
2.8 選択アルゴリズム
演習問題
第3章 データ探索
3.1 逐次探索
3.2 2分探索
3.3 2分探索木
3.4 2色木
3.5 最適2分探索木
3.6 ハッシング
演習問題
第4章 文字列マッチング
4.1 ストリングマッチング
4.2 マッチングオートマトン
4.3 最長共通部分列
演習問題
第5章 高速フーリエ変換アルゴリズム
5.1 離散フーリエ変換
5.2 たたみ込み
5.3 高速フーリエ変換のアルゴリズム
演習問題
第6章 グラフアルゴリズム
6.1 グラフ表現のためのデータ構造
6.2 深さ優先探索と幅優先探索
6.3 木の探索
6.4 最短路アルゴリズム
6.5 最小スパニング木
6.6 2連結成分アルゴリズム
6.7 ネットワークフロー
演習問題
第7章 アルゴリズムの設計法
7.1 分割統治法
7.2 動的計画法
7.3 グリーディ法
演習問題
第8章 NP完全問題
8.1 計算が困難な問題
8.2 計算が困難な問題の特徴
8.3 NP完全問題の定義
8.4 SATのNP完全性
8.5 種々のNP完全問題
8.6 決定問題と最適化問題
8.7 NP完全問題への対応
演習問題
参考文献
索引