定番アルゴリズムからAI関連アルゴリズムまで、わかりやすく学べる!
本書は、Pythonを使って、定番のアルゴリズムから、人工知能(AI)や自然言語処理に関するアルゴリズムまで、広く学べる書籍です。
本書は基本的にプログラミングのスキルを向上させたい人に向けて書かれた本です。レベルに合わせて少しずつ読み進めると良いでしょう。紹介するアルゴリズムは、章が上がるごとに難しくなっていきますが、興味のあるアルゴリズムを選んで読んでも問題ないようになっています。
Chapter 1 なぜアルゴリズムが重要なのか
1-1 なぜアルゴリズムが大切なのか(モチベーションを高めよう!)
1-2 アルゴリズムの評価手法について
1-3 計算量とO記法について
1-4 Pythonのインストール
1-5 ターミナルのススメ
1-6 Pythonで手軽に書けるテストについて
1-7 プログラミングの基本― 制御構文まとめ
1-8 プログラミング基本データ型のまとめ
Chapter 2 条件分岐と繰り返しのアルゴリズム
2-1 FizzBuzz問題
2-2 素数判定(試し割り法)
2-3 素数判定の最適化と素数列挙(エラトステネスのふるい)
2-4 コインの組み合わせ問題
2-5 N進数表現と変換
2-6 シーザー暗号
2-7 上杉暗号
2-8 XOR暗号
2-9 カードのシャッフル
Chapter 3 データ構造と再帰について
3-1 定番データ構造 ― リスト・スタック・キュー・リングバッファ
3-2 スタック構造で解く逆ポーランド記法(後置記法)
3-3 再帰でフィボナッチの計算
3-4 木構造のディレクトリ内のファイルを全列挙
3-5 再帰で解くハノイの塔
3-6 データの間違いを簡単に検出できる「ハッシュ関数」
3-7 仮想通貨にも使われるハッシュ木(マークル木)
Chapter 4 定番アルゴリズム(データの検索とソート)
4-1 基本ソートアルゴリズムについて(バブルソート/コムソート/選択ソート)
4-2 発展ソートアルゴリズムについて(バブルソート/コムソート/選択ソート)
4-3 探索アルゴリズムについて(線形探索/二分探索/二分探索木)
4-4 バイナリデータをテキスト表現しよう
4-5 データの圧縮について
4-6 画像に関するアルゴリズム
Chapter 5 難解パズルで学ぶアルゴリズム
5-1 迷路の自動生成(棒倒し法、穴掘り法)
5-2 迷路の自動探索
5-3 「ナンプレ」(パズル)を解く
5-4 15パズルを解く
5-5 ナップサック問題
5-6 疑似乱数生成
Chapter 6 人工知能(AI)・自然言語処理のアルゴリズム
6-1 文章の類似度(レーベンシュタイン距離、n-gram)
6-2 文章のカテゴライズ(単純ベイズ分類器)
6-3 マルコフ連鎖を利用した文章生成
6-4 データのクラスタリング(k-means法)
6-5 画像分類 ― k近傍法で手書き数字の判定