概要
本書は,Pythonを使用してアルゴリズムを習得するための入門書です。ソート,サーチ,再帰,リスト,木,グラフといったアルゴリズムの基本から,連立方程式の解法,逆ポーランド記法,最短路問題,タートルグラフィックス,グラフ描画,パズルやゲームといった実用的な応用まで,豊富な例題を通してアルゴリズムを効率的に学ぶことができます。例題や練習問題は「Google Colaboratory」で動作するので,Webブラウザーがあればすぐに動作が確認可能です。
著者がこれまで30年以上にわたって出してきた定番シリーズ「○○によるはじめてのアルゴリズム入門」の最新版となります。
こんな方におすすめ
- すでにPythonについては知識があり,Pythonでアルゴリズムを勉強したい人
目次
第1章 ウォーミング・アップ
- 1-0 アルゴリズムとは
- 1-1 漸化式
- 1-2 写像
- 1-3 順位付け
- 1-4 ランダムな順列
- 1-5 モンテカルロ法
- 1-6 ユークリッドの互除法
- 1-7 エラトステネスのふるい
第2章 数値計算
- 2-0 数値計算とは
- 2-1 乱数
- 2-2 数値積分
- 2-3 テイラー展開
- 2-4 非線形方程式の解法
- 2-5 補間
- 2-6 多桁計算
- 2-7 長いπ
- 2-8 連立方程式の解法
- 2-9 線形計画法
- 2-10 最小2乗法
第3章 ソートとサーチ
- 3-0 ソートとサーチとは
- 3-1 基本ソート
- 3-2 シェル・ソート
- 3-3 線形検索(リニアサーチ)と番兵
- 3-4 2分探索(バイナリサーチ)
- 3-5 マージ(併合)
- 3-6 文字列の照合(パターンマッチング)
- 3-7 文字列の置き換え(リプレイス)
- 3-8 ハッシュ
第4章 再帰
- 4-0 再帰とは
- 4-1 再帰の簡単な例
- 4-2 再帰解と非再帰解
- 4-3 順列の生成
- 4-4 ハノイの塔
- 4-5 迷路
- 4-6 クイック・ソート
第5章 データ構造
- 5-0 データ構造とは
- 5-1 スタック
- 5-2 キュー
- 5-3 データ構造としてのリスト
- 5-4 Pythonの言語仕様のリスト
- 5-5 双方向リスト
- 5-6 逆ポーランド記法
- 5-7 パージング
- 5-8 自己再編成探索
- 5-9 リストを用いたハッシュ
第6章 木(tree)
- 6-0 木とは
- 6-1 2分探索木のリスト表現
- 6-2 2分探索木の作成
- 6-3 2分探索木の再帰的表現
- 6-4 2分探索木のトラバーサル
- 6-5 レベルごとのトラバーサル
- 6-6 ヒープ
- 6-7 ヒープ・ソート
- 6-8 式の木
- 6-9 知的データベース
第7章 グラフ(graph)
- 7-0 グラフとは
- 7-1 グラフの探索(深さ優先探索)
- 7-2 グラフの探索(幅優先探索)
- 7-3 トポロジカル・ソート
- 7-4 Eulerの一筆書き
- 7-5 最短路問題
第8章 グラフィックス
- 8-0 ColabTurtle(タートルグラフィックス・ライブラリ)
- 8-1 forwardとleft
- 8-2 2次元座標変換
- 8-3 ジオメトリック・グラフィックス
- 8-4 3次元座標変換
- 8-5 立体モデル
- 8-6 3次元関数と隠線処理
- 8-7 リカーシブ・グラフィックスⅠ
- 8-8 リカーシブ・グラフィックスⅡ
- 8-9 いろいろなリカーシブ・グラフィックス
- 8-10 グラフィックス・ライブラリ(glib.py)
- 8-11 Matplotlibを使ったグラフの作成
- 8-12 Matplotlibを使った3D表示
第9章 パズル・ゲーム
- 9-1 魔方陣
- 9-2 戦略を持つじゃんけん
- 9-3 バックトラッキング
- 9-4 ダイナミック・プログラミング
- 9-5 万年暦で作るカレンダー
- 9-6 21を言ったら負けゲーム
- 9-7 迷路の作成と探索
サポート
ダウンロード
本書に掲載しているプログラムコードおよびファイルをダウンロードすることができます。圧縮ファイルをダウンロードし,展開してご利用ください。
(2024年7月29日更新)
- 下の枠内に,本書P.464に記載されている「アクセスID」と「パスワード」を入力します。
- 「ダウンロード」をクリックします。
なお,ipynbファイルを使用する場合,同時に使用できるセッション数には限りがあります。そのため,1つのノートブックを開いて,その都度txtファイルからコピー&ペーストした方が実行しやすい場合があります。
正誤表
「4-6 クイック・ソート」で掲載しているRei31,Dr31におきまして,配列が降順になっているとエラーになることがあるため,プログラムを以下のように修正します。
P.193 Rei31の12行目
誤 |
|
正 |
while i <= right and a[i] < s:
|
P.193 Rei31の15行目
誤 |
|
正 |
while j >= left and a[j] > s:
|
P.195 Dr31の12行目
誤 |
|
正 |
while i <= right and a[i] < s:
|
P.193 Rei31の15行目
誤 |
|
正 |
while j >= left and a[j] > s:
|