図解まるわかり アルゴリズムのしくみ
書籍情報
発売日 : 2021年12月13日
著者/編集 : 増井 敏克
出版社 : 翔泳社
発行形態 : 単行本
書籍説明
内容紹介
効率のよいプログラムを作成するには、場面に合った適切なアルゴリズムを選ぶ必要があります。同じ結果を得るにしても、どのアルゴリズムを選択するかで処理速度が大きく変化するからです。しかし、「違いがよく分からない」「複雑で難しそう」といった苦手意識をアルゴリズムに抱いている人も多いでしょう。そこで、本書では見開きで1つのテーマを取り上げ、図解を交えて解説。イチからアルゴリズムの基礎が身につきます。
目次
第1章 アルゴリズムの基本~アルゴリズムの役割とは何か?
1-1 速く正確な計算の手順
1-2 データを扱いやすくする
1-3 よいプログラムとは何か?
1-4 アルゴリズムを比べる基準
1-5 実装する言語による違い
1-6 便利なアルゴリズムの集まり
1-7 アルゴリズムの権利
1-8 アルゴリズムを図示する
1-9 紙に書く計算のアルゴリズム
1-10 素数を見つけ出す
1-11 共通する最大の約数を探す
1-12 パズルでアルゴリズムを学ぶ
1-13 ランダムな値を使って調べる
やってみよう|さまざまな関数での値の増え⽅を比較してみよう
第2章 データの保管のしかた~それぞれの構造と特徴
2-1 整数の表現方法
2-2 データの単位
2-3 小数の表現方法
2-4 文字の表現方法
2-5 1つひとつに割り当てる
2-6 データを保管するサイズ
2-7 連続した領域に格納する
2-8 人がわかりやすいように表現する
2-9 データの位置を格納する
2-10 表形式のデータを格納する
2-11 単語や文章を格納する
2-12 複雑なデータ構造を表現する
2-13 一列に並べる形式
2-14 双方向につなげる形式
2-15 分岐した構造で保存する
2-16 条件を満たす木構造
2-17 探索に向いたデータ構造
2-18 バランスのよい木構造
2-19 順序のないデータを格納する
2-20 最後に格納したものから取り出す
2-21 保存した順番で取り出す形式
2-22 仮想メモリのページングアルゴリズム
やってみよう|データを保管するのに必要なデータ量を計算してみよう
第3章 データを並べ替える~規則に沿って数字を整列させる
3-1 昇順、降順の並べ替え
3-2 同じ値の順番が保証される
3-3 最大値や最小値を選んで並べ替える
3-4 整列済みの配列に追加する
3-5 直前の要素と比べる
3-6 配列を双方向に入れ替える
3-7 交換と挿入を組み合わせて高速化
3-8 ヒープを作成しながら並べ替える
3-9 複数のデータを比較しながら統合
3-10 一般的に高速でよく用いられる並べ替え
3-11 取り得る値に限りがある場合に有効
3-12 隙間を用意して並べ替え
3-13 ジョークとして使われるソート
3-14 どの手法を選ぶべきか?
やってみよう|ソートのフローチャートを描いてみよう
第4章 データを探す~目的の値を速く探し出すには?
4-1 複数のデータの中から条件に合うものを見つける
4-2 しらみつぶしに探索する
4-3 先頭から順に調べる
4-4 ソート済みのデータから探索する
4-5 近くにあるものを順に探索する
4-6 隣り合うものを順に探索する
4-7 階層を深く探索する
4-8 木構造の探索順による違い
4-9 逆方向からも探索する
4-10 始点と終点を変えて探索する
4-11 辺に注目して最短経路を探す
4-12 ノードに注目して最短経路を探す
4-13 経験則を生かして探索する
4-14 損害が最小になるものを求める
4-15 文章から文字列を検索する
4-16 工夫して文字列を検索する
4-17 特定のパターンに合致する文字列を検索する
やってみよう|⾝近に使われている探索の⼿法を想像してみよう
第5章 機械学習で使われるアルゴリズム~AIを支える計算手法
5-1 データから分類や予測を実行
5-2 正解データをもとに学習
5-3 データから特徴を抽出して分類
5-4 望ましい結果に報酬を与える
5-5 木構造で分類や回帰を実現
5-6 複数の決定木で多数決
5-7 分離するときの境界との間隔を最大化
5-8 0から1の範囲で確率的に予測
5-9 人間の脳を模倣し、信号のやりとりを数式化
5-10 階層を深くして学習させる
5-11 実在しないデータを生成できるAI
5-12 画像のノイズ除去や境界の強調を実現
5-13 処理中にランダムな選択をして実行
5-14 生物の進化をまねる
5-15 時間経過に応じてランダム性を変える
5-16 近くのものを強く学習する
5-17 近似的な解を高速に求める
5-18 大量のデータを分類する
5-19 データの次元を縮小して新たな指標で表現
やってみよう|⾝近に使われるAIの事例を調べてみよう
第6章 その他のアルゴリズム~高度に活用される応用事例
6-1 小さな問題に分割して結果を記録
6-2 データの容量を減らす
6-3 繰り返しを圧縮
6-4 入力の誤りを検出
6-5 雑音やノイズを除去
6-6 暗号アルゴリズムによるセキュリティ強化
6-7 簡単な暗号とその解読
6-8 負荷が小さい暗号方式
6-9 安全に鍵を共有する
6-10 大きな数の素因数分解が困難であることを利用
6-11 短い鍵で安全性を確保する
6-12 SNSで使われるアルゴリズム
6-13 Googleのアルゴリズム
6-14 事前の情報なしに意思決定する
6-15 すべての都市を訪問するコストを最小化
6-16 詰める商品の価値を最大化
6-17 解けないアルゴリズム
6-18 解けたら100万ドル?超難解問題
やってみよう|「恵方巻きの方角」を計算で求めてみよう
1-1 速く正確な計算の手順
1-2 データを扱いやすくする
1-3 よいプログラムとは何か?
1-4 アルゴリズムを比べる基準
1-5 実装する言語による違い
1-6 便利なアルゴリズムの集まり
1-7 アルゴリズムの権利
1-8 アルゴリズムを図示する
1-9 紙に書く計算のアルゴリズム
1-10 素数を見つけ出す
1-11 共通する最大の約数を探す
1-12 パズルでアルゴリズムを学ぶ
1-13 ランダムな値を使って調べる
やってみよう|さまざまな関数での値の増え⽅を比較してみよう
第2章 データの保管のしかた~それぞれの構造と特徴
2-1 整数の表現方法
2-2 データの単位
2-3 小数の表現方法
2-4 文字の表現方法
2-5 1つひとつに割り当てる
2-6 データを保管するサイズ
2-7 連続した領域に格納する
2-8 人がわかりやすいように表現する
2-9 データの位置を格納する
2-10 表形式のデータを格納する
2-11 単語や文章を格納する
2-12 複雑なデータ構造を表現する
2-13 一列に並べる形式
2-14 双方向につなげる形式
2-15 分岐した構造で保存する
2-16 条件を満たす木構造
2-17 探索に向いたデータ構造
2-18 バランスのよい木構造
2-19 順序のないデータを格納する
2-20 最後に格納したものから取り出す
2-21 保存した順番で取り出す形式
2-22 仮想メモリのページングアルゴリズム
やってみよう|データを保管するのに必要なデータ量を計算してみよう
第3章 データを並べ替える~規則に沿って数字を整列させる
3-1 昇順、降順の並べ替え
3-2 同じ値の順番が保証される
3-3 最大値や最小値を選んで並べ替える
3-4 整列済みの配列に追加する
3-5 直前の要素と比べる
3-6 配列を双方向に入れ替える
3-7 交換と挿入を組み合わせて高速化
3-8 ヒープを作成しながら並べ替える
3-9 複数のデータを比較しながら統合
3-10 一般的に高速でよく用いられる並べ替え
3-11 取り得る値に限りがある場合に有効
3-12 隙間を用意して並べ替え
3-13 ジョークとして使われるソート
3-14 どの手法を選ぶべきか?
やってみよう|ソートのフローチャートを描いてみよう
第4章 データを探す~目的の値を速く探し出すには?
4-1 複数のデータの中から条件に合うものを見つける
4-2 しらみつぶしに探索する
4-3 先頭から順に調べる
4-4 ソート済みのデータから探索する
4-5 近くにあるものを順に探索する
4-6 隣り合うものを順に探索する
4-7 階層を深く探索する
4-8 木構造の探索順による違い
4-9 逆方向からも探索する
4-10 始点と終点を変えて探索する
4-11 辺に注目して最短経路を探す
4-12 ノードに注目して最短経路を探す
4-13 経験則を生かして探索する
4-14 損害が最小になるものを求める
4-15 文章から文字列を検索する
4-16 工夫して文字列を検索する
4-17 特定のパターンに合致する文字列を検索する
やってみよう|⾝近に使われている探索の⼿法を想像してみよう
第5章 機械学習で使われるアルゴリズム~AIを支える計算手法
5-1 データから分類や予測を実行
5-2 正解データをもとに学習
5-3 データから特徴を抽出して分類
5-4 望ましい結果に報酬を与える
5-5 木構造で分類や回帰を実現
5-6 複数の決定木で多数決
5-7 分離するときの境界との間隔を最大化
5-8 0から1の範囲で確率的に予測
5-9 人間の脳を模倣し、信号のやりとりを数式化
5-10 階層を深くして学習させる
5-11 実在しないデータを生成できるAI
5-12 画像のノイズ除去や境界の強調を実現
5-13 処理中にランダムな選択をして実行
5-14 生物の進化をまねる
5-15 時間経過に応じてランダム性を変える
5-16 近くのものを強く学習する
5-17 近似的な解を高速に求める
5-18 大量のデータを分類する
5-19 データの次元を縮小して新たな指標で表現
やってみよう|⾝近に使われるAIの事例を調べてみよう
第6章 その他のアルゴリズム~高度に活用される応用事例
6-1 小さな問題に分割して結果を記録
6-2 データの容量を減らす
6-3 繰り返しを圧縮
6-4 入力の誤りを検出
6-5 雑音やノイズを除去
6-6 暗号アルゴリズムによるセキュリティ強化
6-7 簡単な暗号とその解読
6-8 負荷が小さい暗号方式
6-9 安全に鍵を共有する
6-10 大きな数の素因数分解が困難であることを利用
6-11 短い鍵で安全性を確保する
6-12 SNSで使われるアルゴリズム
6-13 Googleのアルゴリズム
6-14 事前の情報なしに意思決定する
6-15 すべての都市を訪問するコストを最小化
6-16 詰める商品の価値を最大化
6-17 解けないアルゴリズム
6-18 解けたら100万ドル?超難解問題
やってみよう|「恵方巻きの方角」を計算で求めてみよう
著者情報
増井 敏克
増井, 敏克, 1979-