ISBN 9784873118819

Python計算機科学新教本 : 新定番問題を解決する探索アルゴリズム、k平均法、ニューラルネットワーク

Python計算機科学新教本 : 新定番問題を解決する探索アルゴリズム、k平均法、ニューラルネットワーク
刊行
2019-06

概要

古典的CSアルゴリズムをPythonで実装し、現実問題への応用力を養う

想定読者

Pythonの基礎を習得済みで、探索・最適化・機械学習の実装原理を手を動かしながら理解したい中級者

こんな人には向いていない

  • Pythonそのものをこれから学ぶ入門者には、アルゴリズムと言語学習の負荷が重なり消化が難しい
  • 競技プログラミングの高度な計算量最適化や数学的証明を求める読者には、実装例の丁寧さの分だけ数理的深度が浅い
  • scikit-learnやPyTorchを使った機械学習の即戦力を求める人には、スクラッチ実装中心の構成が回り道に感じる

この本で身につくこと

  • 幅優先探索・深さ優先探索・A*アルゴリズムをPythonで実装し、迷路探索やゲーム問題に適用できる
  • 制約充足問題をバックトラッキングでモデル化し、配置・スケジューリング問題を汎用的に解ける
  • ダイクストラ法などグラフアルゴリズムでネットワーク最適化問題を定式化・実装できる
  • k平均法による教師なしクラスタリングの動作をゼロから実装して理解できる
  • ニューラルネットワークと遺伝的アルゴリズムの仕組みをライブラリなしで実装できる

ハイライト(外部からの言及)

昔からあるアルゴリズムと、そのコーディングの理解を深めることによって、Pythonプログラミングのスキルを向上させようというコンセプトです — 出典

本書の設計思想が最もコンパクトに表れている一文。アルゴリズム学習とPythonスキル向上を同時に達成する位置づけが明確

読者が抱える(アプリケーション、データ、性能といった)新しくて現実的な問題と、古典的な解決策をリンクさせることで、解いていきます — 出典

単なる理論書でも演習書でもなく、現実問題との橋渡しを中心設計に据えた点が購買判断の分岐になる

章立て

第1章 簡単な問題

フィボナッチ・二分探索・ハノイの塔など基礎実装が集まる。型ヒントとジェネリクスの使い方も示されており、後続章のコード読解に必要な本書の表記スタイルを習得できる章

第2章 探索問題

BFS・DFS・A*をミニ迷路で実装する本書の核心章。アルゴリズムの選択判断の直感を養うには、コードを動かしながら問題設定を変えて試すことが定着のカギになる

第3章 制約充足問題

制約を「変数・ドメイン・制約」に分解するバックトラッキングの汎用フレームワークを実装する。マップ彩色や数独への転用が容易で、スケジューリング問題など実務への応用イメージが湧きやすい章

第4章 グラフ問題

ダイクストラ法・最小全域木をPythonで実装し、経路探索とネットワーク最適化の基礎を習得する。第2章の探索実装を前提とするため、通読順に読むと実装パターンの積み重ねが見える

第5章 遺伝的アルゴリズム

選択・交叉・突然変異の実装で進化的最適化の動作原理を体験できる。収束の数学的保証より「動かす感覚」に比重が置かれており、確率的探索を直感的に把握したい読者に向く

第6章 k平均クラスタリング

スクラッチの距離計算実装で k 平均法の反復更新ループを理解する。scikit-learn 利用前に内部動作を先取りしたい人や、教師なし学習の概念を固めたい初学者にとって実効性の高い章

第7章 簡単なニューラルネットワーク

前向き伝播中心のシンプル構成で重み・活性化関数の役割を手実装する。数学的厳密性より動かす体験に特化しており、次ステップで「ゼロから作るDeep Learning」に進む際の橋渡しになる

第8章 敵対探索

ミニマックス法とアルファベータ剪定をゲームAIとして実装する章。第2章の探索知識を前提とするため、第2章を通読してから取り組むと実装の意図がつかみやすい

第9章 その他さまざまな問題

前章までのアルゴリズムを組み合わせた応用問題を扱う総合章。難度が最も高く本書全体の通読後に取り組む位置づけで、各章の知識がどう連携するかを確認する到達度チェックとして機能する

関連記事 / 参考情報

学習のヒント

  • 各章が独立したテーマで完結しているため、A*探索やニューラルネットワークなど興味ある章から読み始めて問題ない
  • 写経だけで終わらず、各章末の「演習問題」でパラメータや問題設定を変えて動かすと定着が格段に速い
  • クラスタリング章とニューラルネットワーク章は型ヒントとクラス設計の良い学習素材でもあり、Pythonのコード品質向上視点でも読む価値がある
  • 探索アルゴリズム群(1〜4章相当)を通読してから機械学習系(k平均法・ニューラルネット)に進むと、「最適化を反復で近似する」という共通原理が見えてくる

前提知識

  • PythonのOOP基礎(クラス・継承・特殊メソッド)の読み書きができること
  • 再帰関数とリスト内包表記に慣れていること
  • 高校数学レベルのベクトル演算と確率の基礎概念

次に読む本

アルゴリズムとデータ構造

本書はアルゴリズムの動く実装を重視するため計算量解析と数学的証明が簡略化されている。実装イメージを掴んだ後に続読することで、O記法による比較や各アルゴリズムの選択基準を理論面から体系的に補強できる

ゼロから作るDeep Learning

本書第7章でスクラッチ実装したニューラルネットをより深く理解するための自然な続読先。誤差逆伝播の数学的導出・バッチ学習・多層ネットワーク化など、本書では省略されているDLの本質的仕組みをPythonで体系的に学べる

Pythonではじめるアルゴリズム入門 — 伝統的なアルゴリズムで学ぶ定石と計算量

本書と同じ「実装で理解する」アプローチを取りながら、配列・連結リスト・ヒープなどのデータ構造を体系的に扱う点が本書との差分。本書でアルゴリズムの感覚を掴んだ後に読み、データ構造の選択眼を補完する

出版社による内容紹介

古典的な問題と実世界の問題をリンクさせ、知識を広げる意欲作! 昔からあるアルゴリズムと、そのコーディングの理解を深めることによって、Pythonプログラミングのスキルを向上させようというコンセプトです。探索、クラスタリング、グラフ、といった、昔からある話題(幅優先探索、深さ優先探索、A*探索アルゴリズム、制約充足問題、グラフアルゴリズムによる問題の解決、ニューラルネットワーク、遺伝的アルゴリズムなど)を例に取り上げて、読者が抱える(アプリケーション、データ、性能といった)新しくて現実的な問題と、古典的な解決策をリンクさせることで、解いていきます。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。