Pythonによる問題解決のためのアルゴリズム設計技法
2020年11月13日紙版発売
2020年11月13日電子版発売
Magnus Lie Hetland 著,辻真吾 監訳,塩井宏亮 訳
B5変形判/448ページ
定価3,828円(本体3,480円+税10%)
ISBN 978-4-297-11686-6
書籍の概要
この本の概要
本書(原題:Python Algorithms: Mastering Basic Algorithms in the Python Language)はアルゴリズムの分析と設計方法について,Pythonを使って説明します。古典的なアルゴリズムに焦点を絞って解説していますが,基本的なアルゴリズムによる問題解決の方法もしっかり理解できます。
本書はプログラミングとコンピュータサイエンスの最も重要で難しい分野を非常に読みやすい形で解説しています。アルゴリズムの理論とプログラミングの実践の両方をカバーし,理論が実際のPythonプログラムにどのように反映されているかを説明します。また,Pythonに組み込まれている有名なアルゴリズムとデータ構造について説明し,実装と評価について学ぶことができます。
本書で学べること
- 新しい問題を効率的なアルゴリズムで解ける問題に変換する方法。もしくは,効率的に解けない問題であると示す方法
- 数学と基本的な実験やベンチマークを使ってアルゴリズムとPythonのプログラムを分析する方法
- 古典的なアルゴリズムとデータ構造を深く理解し,Pythonでこれらを効率的に実装する方法
- 新しい問題を解くために新しいアルゴリズムを設計し,実績のある設計原理・設計技法を使って実装する方法
- Pythonのハイパフォーマンスコンピューティングを実現する豊富なツールを使って実装を高速化する方法
こんな方におすすめ
- Pythonの入門を終えた方
- アルゴリズムを学習したい方
- コンピュータサイエンスを専攻する学生
日本語版監訳者より
現代社会はアルゴリズムに支えられています。コンピュータとアルゴリズムの登場が世界を変えたと言っても過言ではありません。アルゴリズムに関する話題は,コンピュータ科学と数学の両方に広がりを持っています。ある問題Aがあるときに,それを解くためのアルゴリズムを思いついたとしましょう。アルゴリズムをプログラミングしていくつか問題Aの具体例に適用したところ,答えがきちんと返ってきたとします。得られた答えが役に立てば,それで良いこともあるでしょう。しかし,そのアルゴリズムですべての問題Aが解けるかどうかは分かりません。アルゴリズムが途中で止まったり,間違った答えを返したりしないということを証明する必要があります。これには数学的な考え方が必要です。多くのアルゴリズムの入門書は,こうした数学的な側面についてふれていません。一方,アルゴリズムに関する専門的な書籍では,数学記号をふんだんに使った説明を目にします。この本はこれらのちょうど間に位置します。原著ではかなり複雑で難しい議論が軽妙な語り口で解説されています。もしアルゴリズムに関してまったく知識がない場合は,まず入門書を手に取ることをおすすめします。また本書を読み進めるためには,Pythonプログラミングの知識も必要です。
アルゴリズムで問題が解けるということは,簡単な計算の積み重ねで最終的に正しい答えが得られるということです。各ステップの計算は本当に単純です。2つの値の比較や,グラフであればあるノードに隣接するすべてのノードを順番に取得するような計算です。こうした単純な計算の繰り返しでどうして問題が解けるのか,本書の2〜4章ではこの一般的な課題に真正面から取り組みます。これらの章で扱われる話題は,アルゴリズムを設計し数学的に正しいことを証明できるようになるための知識です。このため,抽象度が高い議論も含まれます。続く5〜8章では多種多様なアルゴリズムを例に,それらを支える設計思想を解説しています。個別のアルゴリズムとコードを理解するところからはじめ,一見違う問題に対して,同じ設計思想のアルゴリズムが適用できる仕組みがわかるようになればかなりの上級者です。9章と10章はグラフに関する話題がまとまっています。グラフは応用範囲が広いため,本書の前半でもたびたび話題に上ります。最後の11章は計算理論の話です。P≠NP問題の理解の助けになりますが,ほとんどが抽象的な話題なので少し毛色が違った章になります。各章で中心になるトピックには,必ずPythonのコードが提示されます。コードを読むことで,アルゴリズムの動作が分かります。ダウンロードしたコードを自分で変更して繰り返し実行すれば,さらに理解が深まるはずです。
原著者のMagnus Lie Hetlandさんは,経験豊かなPythonプログラマであり,大学でアルゴリズムを教えている専門家です。幅広く深い知識の持ち主であるため,この本にはさまざまな話題が含まれます。比較的難しいトピックをその概要の説明だけにとどめている部分もあります。こうした話題を完全に理解したいと思う場合は,本書で提示されている参考資料にあたる必要があるでしょう。最近はWebを探せば関連情報をすぐに見つけることもできます。本書が広大なアルゴリズムの世界へ旅立つきっかけを与えてくれます。
日本語,英語に関わらず,言葉は曖昧さを持ちます。書き手の意図が読み手に正しく伝わらないこともあるでしょう。しかしコードは違います。正しく動くコードは,作り手の意図が受け手に正確に伝わります。プログラミングができれば,コードを読むことでアルゴリズムを理解できるわけです。本書のコードは簡潔で,丁寧なコメントも付いています。短いコードから想像を超える計算結果が生み出される様子は,まさに世界を変えたアルゴリズムの威力そのものです。
複雑さを増す一方の現代社会にはさまざまな課題があります。すべてが計算で解決できるわけではありませんが,アルゴリズムが役立つ場面は多くあるでしょう。例えば,物流の配送ルートを最適化すれば燃料を削減できます。これは既存のアルゴリズムを少し変更するだけで解決できそうです。膨大な数の化合物から効率良く薬の候補を見つけられれば,患者さんが少ない希少疾患の治療方法を確立できるかもしれません。こうした複雑で難しそうな課題は,冷静に分析して部分的に解ける問題へ変換する必要があります。これはまさに本書で解説されているアルゴリズムの設計技法です。読者のみなさんの頭の中で再構築された知識が,現実のさまざまな課題に適用され1つでも多く解決につながれば,監訳者としてこの上ない喜びです。
2020年10月
辻 真吾
本書のサンプル
本書の一部ページを,PDFで確認することができます。
- サンプルPDFファイル(1,683KB)
この本に関連する書籍
-
Pythonによるはじめてのアルゴリズム入門
本書は,Pythonを使用してアルゴリズムを習得するための入門書です。ソート,サーチ,再帰,リスト,木,グラフといったアルゴリズムの基本から,連立方程式の解法,逆...
-
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
アルゴリズムは,プログラミングを用いて問題を解決していくには欠かせない大切な道具です。一方,アルゴリズムを理解し,そして応用できるようになるためには,ある程...
-
パーフェクトPython[改訂2版]
「パーフェクトPython」の改訂版。前版はPython 3.2/3.3系をベースに構成されていたこともあり,最新のバージョン(Python 3.8)に変更に加え,新たに型ヒントやasynio...
-
AIエンジニアを目指す人のための 機械学習入門 実装しながらアルゴリズムの流れを学ぶ
機械学習はAI(人工知能)の基礎技術です。今後AIの利活用が進むにつれて、機械学習をコンピュータシステムに組み込んでビジネスに活用できる人材(本書ではAIエンジニ...
-
Python実践入門 ──言語の力を引き出し、開発効率を高める
Pythonはここ数年で日本語の書籍も増え,開発現場での利用実績も着実に増えてきています。ご自身の第二,第三の言語の選択肢としてPythonが気になっているという方も多...