概要
本書は,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:
  |