情報工学 - 基礎

アルゴリズム 関連検索

渋谷 哲朗著

東京大学工学教程編纂委員会編

演習問題


目次

はじめに
1 アルゴリズムと計算量
1.1 アルゴリズムの記述法
1.2 アルゴリズムの計算量
1.3 その他のアルゴリズム評価指標
2 基本的なデータ構造
2.1 配列とリスト
2.2 スタックとキュー
2.3 ハッシュ
2.3.1 ハッシュとハッシュ関数
2.3.2 連鎖ハッシュ
2.3.3 開番地法
3 ソートアルゴリズム
3.1 ソートと二分探索
3.2 単純なソート法
3.3 クイックソート
3.4 マージソート
3.5 ソートの計算量の下限
3.6 バケットソートと基数ソート
4 木のデータ構造
4.1 木とは
4.2 木の走査
4.3 ヒープ
4.3.1 二分ヒープ
4.3.2 二項ヒープ
4.3.3 Fibonacci ヒープ
4.4 探索木
4.4.1 二分探索木
4.4.2 AVL 木
4.4.3 2-3-4 木
4.5 ユニオン・ファインド木
4.6 区間木
4.7 k-D 木
5 グラフアルゴリズム
5.1 グラフとは
5.2 深さ優先探索と幅優先探索
5.3 最短路
5.3.1 Dijkstra 法
5.3.2 Bellman–Ford 法
5.3.3 Floyd–Warshall 法
5.3.4 Johnson アルゴリズム
5.3.5 A*アルゴリズム
5.3.6 トポロジカルソート
5.4 最小全域木
5.4.1 Kruskal 法
5.4.2 Prim 法
5.5 最大流
5.5.1 最大流・最小カット定理
5.5.2 Ford–Fulkerson 法
6 文字列アルゴリズム
6.1 文字列探索
6.1.1 単純な文字列探索アルゴリズム
6.1.2 Knuth–Morris–Pratt アルゴリズム
6.1.3 Boyer–Moore アルゴリズム
6.1.4 Karp–Rabin アルゴリズム
6.1.5 shift-or アルゴリズム
6.2 近似文字列マッチング
6.2.1 文字列間の距離
6.2.2 アラインメントアルゴリズム
6.3 文字列索引
6.3.1 接尾辞木
6.3.2 接尾辞配列
6.3.3 接尾辞配列および接尾辞木の構築法
6.4 文字列圧縮
6.4.1 情報量とエントロピー
6.4.2 Huffman 符 号
6.4.3 算術符号
6.4.4 辞書式圧縮アルゴリズム
6.4.5 ブロックソーティング
7 アルゴリズムの設計戦略
7.1 貪欲法
7.2 動的計画法
7.3 分割統治法
7.4 乱択アルゴリズム
7.5 数理計画法
8 組合せ最適化
8.1 分枝限定法
8.2 メタヒューリスティック
8.2.1 局所探索
8.2.2 焼きなまし法
8.2.3 遺伝的アルゴリズム
8.2.4 タブー探索
9 ゲーム探索
9.1 ミニマックス法
9.2 α-β 法
9.3 モンテカルロ探索法
参考文献
索 引
2-3-4 木2-3-4 tree35, 58– 2-3-4 木35, 58– A アルゴリズム A*アルゴリズム74– A*アルゴリズムA* algorithm74– Aho–Corasick(エイホ–コラシック)アルゴリズム AVL 木35, 55– AVL 木AVL tree35, 55– B 木 Bellman–Ford(ベルマン–フォード)法(Bellman–Ford method) 71– BFPRT アルゴリズム Boyer–Moore(ボイヤー–ムーア)アルゴリズム95– Boyer–Moore(ボイヤー–ムーア)アルゴリズムBoyer–Moore algorithm95– BW 変換 Dijkstra(ダイクストラ)法68–70, 72– Dijkstra(ダイクストラ)法DijkstraMethod68–70, 72– Edomonds–Karp(エドモンズ–カープ)アルゴリズム Euclid(ユークリッド)の互除法 Fermat(フェルマー)の小定理 Fibonacci(フィボナッチ)ヒープ(Fibonacci heap) 44– Fibonacci(フィボナッチ)数 Floyd–Warshall(フロイド–ワーシャル)法 Ford–Fulkerson(フォード–ファルカーソン)法 Hamming(ハミング)距離 Hamming(ハミング)重み Huffman(ハフマン)木 Huffman(ハフマン)符号117– Huffman(ハフマン)符号Huffman coding117– IO 計算量 Johnson(ジョンソン)アルゴリズム k 分木 K¨arkk¨ainen–Sanders アルゴリズム k-D 木 Karp–Rabin(カープ–ラビン)アルゴリズム Knuth–Morris–Pratt(クヌース–モリス–プラット)アルゴリズム92– Knuth–Morris–Pratt(クヌース–モリス–プラット)アルゴリズムKnuth–Morris–Pratt algorithm92– Kruskal(クラスカル)法81– Kruskal(クラスカル)法Kruskalmethod81– Miller–Rabin(ミラー–ラビン)アルゴリズム 129– MTF 変換 NP 困難 NP 完全 Prim(プリム)法 shift-or アルゴリズム UCT アルゴリズム Z アルゴリズム93– Z アルゴリズムZ algorithm93– α-β 法146– α-β 法α-β pruning146– アラインメント100– アラインメントalignment100– アラインメントスコア インデックス インデューストソーティング エントロピー オフセット カット キー キーワード木 キュー クイックソート25– クイックソートquick sort25– グラフ ゲーム値 ゲーム木 シータ記法 スタック ソート23–32, 40, 51–53, 58,63, 82, 107– ソートsorting23–32, 40, 51–53, 58,63, 82, 107– タイト タブー探索 テキスト トポロジカルソート79– トポロジカルソートtopological sort79– トライ ナップサック問題 ならし計算量 ネットワーク バケットソート パス パタン バックトラック ハッシュ バブルソート ヒープ ヒープソート ビッグオー記法 ビッグオメガ記法 ビット ピボット フィルタリング フィンガープリント プレイアウト フロー フローチャート ブロックソーティング マージ マージソート28– マージソートmerge sort28– ミニマックス法 メタヒューリスティック モンテカルロ探索法 モンテカルロ法 ユニオン・ファインド木 ラスベガス法 ランク109– ランクrank109– リスト リトルオー記法 リトルオメガ記法 リンク レベル レベル順 不可逆圧縮 両方向リスト 中央値23, 28, 63, 127– 中央値median23, 28, 63, 127– 中間順 乱択アルゴリズム 二分ヒープ39–41, 43– 二分ヒープbinary heap39–41, 43– 二分探索23– 二分探索binary search23– 二分探索木52– 二分探索木binary search tree52– 二分木 二次探査法 二重ハッシュ法 二項ヒープ41– 二項ヒープbinomial heap41– 二項木 優先順位キュー 先行順 入次数 全域木 全域部分グラフ 内点法 内部節点 出次数 分割統治法 分枝操作 分枝木 分枝限定法 分離 劣線形時間アルゴリズム 動的計画法72, 73, 80, 81, 99, 101– 動的計画法dynamic programming72, 73, 80, 81, 99, 101– 区間木 単純一様ハッシュ 可逆圧縮 圧縮 均一コスト探索 基数ソート 多項式時間アルゴリズム 始点 子孫 完全ハッシュ 完全二分木 局所探索 局所解 帰りがけ順 幅優先探索35–37, 67– 幅優先探索breadth first search35–37, 67– 平均計算量 平衡探索木 平衡木 平面的グラフ 強連結 後行順 情報源モデル 情報量 拡大情報源 指数時間アルゴリズム 探索木 接尾辞 接尾辞トライ 接尾辞木93, 95, 105–108,110– 接尾辞木suffix tree93, 95, 105–108,110– 接尾辞配列105– 接尾辞配列suffix array105– 接頭符号 接頭辞 擬似コード 数理計画法 整数計画法 文字列 文字列探索 文脈 時間計算量 最大共通接頭辞長 最大流84– 最大流maximum flow84– 最小全域木80– 最小全域木minimum spanning tree80– 最悪計算量 最短路68– 最短路shortest path68– 最短路木 最適化 有向グラフ 根つき木 根なし木 楕円体法 次数 残余グラフ 深さ 深さ優先探索 漸近的上界 漸近的下界 漸近的挙動 無向グラフ 無閉路有向グラフ 焼きなまし法 照合 祖先 空間計算量 笠井のアルゴリズム 符号化 符号木 符号語 算術符号118– 算術符号arithmetic coding118– 節点 素数20, 98, 129– 素数prime20, 98, 129– 終点 終端文字92, 105– 終端文字termination character92, 105– 組合せ最適化 線形探査法 線形時間アルゴリズム 編集距離100– 編集距離edit distance100– 脱乱択化 行きがけ順 衝突 誘導部分グラフ 貪欲法82, 123– 貪欲法greedy algorithm82, 123– 赤黒木 走査 辞書的順序 近似比 近傍 逆接尾辞配列 通りがけ順 連結 連続最適化 連鎖ハッシュ 選択ソート 遺伝的アルゴリズム 部分グラフ 部分文字列 配列 閉路 開番地法 隣接リスト 隣接行列 離散最適化 非連結 非順序木 頂点 順序木 高さ 高さ配列