まあ、日々の記録なんとなく

計算機とか、数学とか、その他

「Pythonによる問題解決のためのアルゴリズム設計技法(Python Algorithms: Mastering Basic Algorithms in the Python Language)」

gihyo.jp
サポートページ
監訳者 辻真吾

  • 日々コードを書く上で、もっと効率のよいやり方があるのでは?とアルゴリズムに興味を持つ、このコード本当にあらゆるケースで正確なの?と疑問を持つ
  • Python2の正式なサポートは2020年1月に終了しているし、今更Python2はないでしょ、なので、Python3でコードを書いていこう
  • 書籍で使用されているコードはサポートページでJupyter Notebook(.pyynb)形式で公開されている
  • 実行環境は、第1章のコラム「必要なものを手に入れよう」に書かれているが、macOSならデフォルトでインストール済み、Anacondaを使いNumpy, Scipyなども一緒にインストールしてしまった方が楽かも
% which python
/usr/bin/python

% python --version
Python 2.7.16

% which python3
/usr/local/bin/python3

% python3 --version
Python 3.9.5
アルゴリズムに関する話題は、コンピュータ科学と数学の両方に広がりを持っています。
ある問題Aがあるときに、それを解くためのアルゴリズムを思いついたとしましょう。アルゴリズムをプログラミングしていくつか問題Aの具体例に適用したところ、答えがきちんと帰ってきたとします。・・・そのアルゴリズムですべての問題Aが解けるかどうかはわかりません。アルゴリズムが途中で止まったり、間違った答えを返したりしないということを証明する必要があります。これは数学的な考え方が必要です。
  • アルゴリズムを設計し数学的に正しいことを証明できるようになるための知識が必要

著者

https://www.oreilly.com/library/view/python-algorithms-mastering/9781484200551/images/9781484200568_unFM-01.jpg

第1章 どんな本なのか?
第2章 アルゴリズム解析の基礎
第3章 数え上げ入門
第4章 帰納再帰と還元
第5章 巡回:アルゴリズムのマスターキー
第6章 分割・統合・統治
第7章 貪欲が善って,ほんとうですか? それなら証明してください
第8章 もつれた依存関係とメモ化
第9章 A地点からB地点へEdsger Dijkstraとその仲間たちとともに
第10章 マッチング・カット・フロー
第11章 困難な問題と適度ないい加減さ
付録A 全力疾走 - Pythonを最大限加速させるには
付録B 問題とアルゴリズムの一覧
付録C グラフに関する用語と表記
付録D 演習のヒント