詳細目次
1章 アルゴリズムの重要性
1.1 アルゴリズムとは
1.2 アルゴリズムの記述
1.3 アルゴリズムの効率
1.4 アルゴリズムの最適性
演習問題
2章 探索問題
2.1 探索問題とは
2.2 逐次探索の効率
2.3 順序関係を利用した探索
2.4 m-ブロック法
2.5 2分探索法
2.7 ハッシュ法
演習問題
3章 基本的なデータ構造
3.1 配列と連結リスト構造
3.2 連結リスト構造の利点
3.3 2分探索法に対応するデータ
3.4 スタックとキューの概念
3.5 スタックの実現
3.6 キューの実現
3.7 ヒープ
演習問題
4章 動的探索問題とデータ構造
4.1 線形リスト上での探索
4.2 2分探索木
4.3 平衡2分探索木
4.4 動的ハッシュ法
演習問題
5章 データの整列
5.1 バブルソート
5.2 セレクションソート
5.3 インサーションソート
5.4 シェルソート
5.5 ヒープソート
5.6 クイックソート法
5.7 マージソート(Marge Sort)
5.8 ソート問題の計算複雑度
演習問題
6章 グラフアルゴリズム
6.1 グラフの利用
6.2 グラフの表現
6.3 用語の定義
6.4 グラフの探索
6.5 最短経路問題
6.6 ネットワークフロー
演習問題
7章 文字列のアルゴリズム
7.1 文字列照合問題とは
7.2 力まかせ法
7.3 ラビン-カープ法
7.3 クヌース・モリス・プラッツ法
7.4 ボイヤー・ムーア法
演習問題
8章 アルゴリズム設計手法
8.1 再帰
8.2 分割統治法
8.3 動的計画法
8.4 グリーディ法
8.5 分枝限定法
8.6 線形計画法
演習問題
9章 近似アルゴリズム
9.1 近似アルゴリズムとは
9.2 ナップサック問題
9.3 巡回セールスパーソン問題
演習問題
10章 計算複雑さ
10.1 計算可能性
10.2 クラスPとNP
演習問題
参考文献
演習問題へのヒント