Pythonで体験してわかるアルゴリズムとデータ構造
近代科学社
著者:西澤弘毅、森田光
はしがき
第1章 なぜアルゴリズムが重要か
1.1 アルゴリズムとは
1.2 アルゴリズムを学ぶことがなぜ重要か
1.3 データ構造とは、データ構造がなぜ重要か
1.4 次章以降の構成
1.5 練習問題
1.6 1章のまとめ
1.7 Python演習
1.7.1 オブジェクトと型
1.7.2 関数と変数
1.7.3 オブジェクトの性質
1.8 練習問題正解例
第2章 アルゴリズムを表現する様々な方法
2.1 言葉による表現
2.2 図による表現
2.3 フローチャートによる表現
2.4 擬似コードによる表現
2.5 アルゴリズムの正しさの保証
2.6 練習問題
2.7 2章のまとめ
2.8 Python演習
2.8.1 逐次実行
2.8.2 条件分岐
2.8.3 反復
2.9 練習問題正解例
第3章 アルゴリズムを比べる方法
3.1 整列(ソート)とは
3.2 選択ソートとは
3.3 選択ソートの随時交換版とは
3.4 練習問題
3.5 3章のまとめ
3.6 Python演習
3.6.1 選択ソートのPythonプログラム
3.6.2 選択ソートの随時交換版のPythonプログラム
3.7 練習問題正解例
第4章 アルゴリズムを思いつく方法
4.1 挿入ソート
4.2 バケットソート
4.3 練習問題
4.4 4章のまとめ
4.5 Python演習
4.6 練習問題正解例
第5章 アルゴリズムを改良するコツ
5.1 バブルソート
5.2 バブルソートの改良版
5.3 練習問題
5.4 5章のまとめ
5.5 Python演習
5.5.1 バブルソートのPythonプログラム
5.5.2 バブルソートの改良版のPythonプログラム
5.6 練習問題正解例
第6章 アルゴリズムを設計する方法
6.1 フィボナッチ整列
6.2 分割統治法
6.3 動的計画法
6.4 練習問題
6.5 6章のまとめ
6.6 Python演習
6.6.1 分割統治法のPythonプログラム
6.6.2 動的計画法のPythonプログラム
6.6.3 再帰的定義による効率の良いフィボナッチ整列(リスト版)
6.6.4 再帰的定義による効率の良いフィボナッチ整列(タプル版)
6.6.5 再帰的定義による効率の良いフィボナッチ整列(多引数版)
6.7 練習問題正解例
第7章 問題に適した設計法とは
7.1 ハノイの塔問題
7.2 最短経路の数え上げ問題
7.3 練習問題
7.4 7章のまとめ
7.5 Python演習
7.5.1 ハノイの塔問題のPythonプログラム
7.5.2 最短経路の数え上げ問題のPythonプログラム
7.5.3 ハノイの塔問題の移動回数の計算
7.6 練習問題正解例
第8章 設計法を応用した並べ替え
8.1 マージソート
8.2 マージソートにおける比較回数
8.3 これまでのソートとマージソートの計算量の違い
8.4 練習問題
8.5 8章のまとめ
8.6 Python演習
8.7 練習問題正解例
第9章 分割統治法によるソートの分類
9.1 クイックソート
9.2 クイックソートにおける比較回数
9.3 選択ソート、挿入ソート、バブルソートと分割統治法
9.4 練習問題
9.5 9章のまとめ
9.6 Python演習
9.6.1 クイックソートのPythonプログラム
9.6.2 分割統治法による選択ソート
9.6.3 分割統治法によるバブルソート
9.6.4 分割統治法による挿入ソート
9.7 練習問題正解例
第10章 データ構造はなぜ重要か
10.1 2分探索木
10.2 2分探索木に対する節点の挿入と削除
10.3 練習問題
10.4 10章のまとめ
10.5 Python演習
10.5.1 2分探索木への挿入のPythonプログラム
10.5.2 2分探索からの削除のPythonプログラム
10.6 練習問題正解例
第11章 データ構造に依存したアルゴリズム
11.1 スタック
11.2 キュー
11.3 深さ優先探索と幅優先探索
11.4 練習問題
11.5 11章のまとめ
11.6 Python演習
11.6.1 両端キュー
11.6.2 深さ優先探索と幅優先探索のPythonプログラム
11.7 練習問題正解例
第12章 データ構造を応用した並べ替え
12.1 ヒープ
12.2 ヒープソート
12.3 練習問題
12.4 12章のまとめ
12.5 Python演習
12.6 練習問題正解例
第13章 データ構造の変更に応じた改良
13.1 ダイクストラ法
13.2 貪欲法
13.3 練習問題
13.4 13章のまとめ
13.5 Python演習
13.5.1 辞書による重み付け無向グラフの表現
13.5.2 ダイクストラ法のPythonプログラム
13.6 練習問題正解例
第14章 条件に応じた探索の改良
14.1 力まかせ探索とミニマックス法
14.2 枝刈り
14.3 練習問題
14.4 14章のまとめ
14.5 Python演習
14.5.1 ミニマックス法のPythonプログラム
14.5.2 枝刈りのPythonプログラム
14.6 練習問題正解例
第15章 目的別のアルゴリズムとデータ構造
15.1 分割ナップザック問題
15.2 0-1ナップザック問題
15.3 練習問題
15.4 15章のまとめ
15.5 Python演習
15.5.1 分割ナップザック問題のPythonプログラム
15.5.2 0-1ナップザック問題のPythonプログラム
15.6 練習問題正解例
付録 Pythonを使うために!
A.1 導入編
A.1.1 インタプリタ上でPythonを実行
A.1.2 関数電卓利用
A.1.3 プログラマブル関数電卓の利用
A.2 準備編(ツール入手など)
A.2.1 ANACONDAの入手
A.2.2 Pythonの翻訳情報とPythonツールの入手
A.2.3 iOS環境のツール類の入手
A.2.4 ユーザ・インタフェース
A.3 Pythonスクリプトファイル・インタフェース
参考文献