アルゴリズム設計マニュアル 上
原書名 | The Algorithm Design Maneal |
---|---|
著者名 | 平田 富夫 訳 |
発行元 | 丸善出版 |
発行年月日 | 2012年01月 |
判型 | B5変 |
ページ数 | 424ページ |
ISBN | 978-4-621-08510-3 |
Cコード | 3055 |
NDCコード | 007 |
ジャンル | 電気・電子・情報工学 > 情報・コンピュータ > アルゴリズム/データ構造 |
内容紹介
本書は2部構成で、前半部分(上巻)ではアルゴリズムの基本概念とテクニックを解説し、後半部分(下巻)は様々な種類のアルゴリズムを集めたアルゴリズム集。アルゴリズムを身近な実際の問題を解決するための技術であるという立場から書いているので、本書の知識は実際の場面で実践的に使用することができる。本文中には「設計奮戦記」というコーナーがあり、アルゴリズムを設計した際に起こった問題を実話で紹介。設計現場の生の体験に基づき、具体的に設計のコツなどを知ることができる。C言語で書かれたプログラムの入手先アドレスを紹介しているので、読者は既存のソースをWebから入手することができる。
目次
第I部 実用的なアルゴリズムの設計
第1章 アルゴリズム設計への導入
1.1 ロボットのツアーの最適化
1.2 適切な仕事の選択
1.3 正しさの論証
1.4 問題のモデル化
1.5 設計奮戦記について
1.6 ボクの設計奮戦記:超能力のモデル化
1.7 演習問題
第2章 アルゴリズム解析
2.1 計算のRAMモデル
2.2 ビッグオー記法
2.3 増加率と支配関係
2.4 ビッグオーを使いこなす
2.5 効率に関する議論
2.6 対数とその応用
2.7 対数の性質
2.8 ボクの設計奮戦記:ピラミッドの謎
2.9 高度な解析
2.10 演習問題
第3章 データ構造
3.1 連続データ構造と連結データ構造
3.2 スタックとキュー
3.3 辞書
3.4 2分探索木
3.5 優先順位付きキュー
3.6 ボクの設計奮戦記:三角形を連ねる
3.7 ハッシングと文字列
3.8 特定目的のデータ構造
3.9 ボクの設計奮戦記:数珠つなぎ
3.10 演習問題
第4章 ソートと探索
4.1 ソートの応用
4.2 ソートの実際
4.3 ヒープソート:データ構造による高速ソート
4.4 ボクの設計奮戦記:飛行機のチケットをくれないか
4.5 マージソート:分割統治法によるソート
4.6 クイックソート:ランダム化によるソート
4.7 分配ソート:バケットを用いたソート
4.8 ボクの設計奮戦記:スキーナの抗弁
4.9 2分探索と関連アルゴリズム
4.10 分割統治法
4.11 演習問題
第5章 グラフ横断
5.1 グラフの特徴
5.2 グラフのデータ構造
5.3 ボクの設計奮戦記:ボクはムーアの法則の犠牲者だった
5.4 ボクの設計奮戦記:グラフを手に入れる
5.5 グラフの横断
5.6 幅優先探索
5.7 幅優先探索の応用
5.8 深さ優先探索
5.9 深さ優先探索の応用
5.10 有向グラフでの深さ優先探索
5.11 演習問題
第6章 重み付きグラフのアルゴリズム
6.1 最小スパニング木
6.2 ボクの設計奮戦記:ネットさえあればよい
6.3 最短経路
6.4 ボクの設計奮戦記:電話で文書を作る
6.5 ネットワークフローと2部マッチング
6.6 アルゴリズムではなくグラフの設計
6.7 演習問題
第7章 組合せ探索とヒューリスティックな方法
7.1 バックトラック法
7.2 探索の枝刈り
7.3 数独
7.4 ボクの設計奮戦記:チェスボードを被覆する
7.5 ヒューリスティックな探索法
7.6 ボクの設計奮戦記:ラジでないだけ
7.7 ボクの設計奮戦記:配列のアニーリング
7.8 他のヒューリスティックな探索法
7.9 並列アルゴリズム
7.10 ボクの設計奮戦記:速くなくたってどうしようもない
7.11 演習問題
第8章 動的計画法
8.1 キャッシング 対 計算
8.2 近似文字列マッチング
8.3 最長増加列
8.4 ボクの設計奮戦記:ロブスターの進化
8.5 分割問題
8.6 文脈自由文法の構文解析
8.7 動的計画法の限界:TSP
8.8 ボクの設計奮戦記:過去はただのProlog
8.9 ボクの設計奮戦記:バーコードのためのテキスト圧縮
8.10 演習問題
第9章 手に負えない問題と近似アルゴリズム
9.1 問題と帰着
9.2 アルゴリズムのための帰着
9.3 初等的な困難性の帰着
9.4 充足可能性問題
9.5 創造的な帰着
9.6 困難性証明のコツ
9.7 ボクの設計奮戦記:時計との困難な戦い
9.8 ボクの設計奮戦記:その後の失敗
9.9 P対NP
9.10 NP完全問題への対処
9.11 演習問題
第10章 どのようにしてアルゴリズムを設計するか